Metadata-Version: 2.1
Name: dronesearch
Version: 1.0.0
Summary: A computer vision pipeline for live video search on drone video feeds leveraging edge servers.
Home-page: https://github.com/cmusatyalab/dronesearch
Author: Junjue Wang
Author-email: junjuew@cs.cmu.edu
License: Apache License 2.0
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Requires-Python: >3.5, <4
Description-Content-Type: text/markdown
Requires-Dist: setuptools (>=41.0.0)
Requires-Dist: logzero
Requires-Dist: fire
Requires-Dist: tensorflow
Requires-Dist: pyzmq

# Overview

This repo contains a python package [dronesearch](dronesearch) for running live
video analytics on drone video feeds leveraging edge servers. It also contains
our experiment code for SEC'18 paper *[Bandwidth-efficient Live Video Analytics
for Drones via Edge Computing](https://ieeexplore.ieee.org/document/8567664)*.

## dronesearch Package

The decreasing costs of drones have made them suitable for search and rescue
tasks. Analyzing drone video feeds in real-time can greatly improve the
efficiency of search tasks. However, typical drone platforms do not have enough
computation power to do real-time video analysis onboard, especially
semantic-level vision processing, such as human survivor detection, car
detection, and animal detection. Video feeds need to be streamed to an edge
server for computer vision processing. When streaming video feeds from a swarm
of drones at the same time, judicious use of bandwidth becomes important.

This [dronesearch](dronesearch) package provides a computer vision pipeline that
selectively finds interesting frames and transmit them to edge servers for
analysis in order to save bandwidth.

### Installation

First, install [zeromq](https://zeromq.org/download/). Then,

```bash
pip install dronesearch
```

### Demo

We provide a demo that considers *computer monitors* as objects of interests.
Only video frames that are classified as *computer monitors* will be sent to an
edge server for further analysis.

To run the demo, first clone this directory. Then, issue the following commands
at the root dir of this repo.

```bash
# on drone or your drone emulation platform, by default connecting to tcp://localhost:9000
# --input-source: the uri for OpenCV's VideoCapture(). 
#                 It should be a number for cameras or a file path for videos.
# --filter-config-file: a file path whose content specifies filters to run on the drone.
#                       This demo uses Tensorflow's MobileNet.
# --server-host, and --server-port specifies the edge server.
python -m dronesearch.onboard --input-source 0 --filter-config-file data/cfg/filter_config.ini

# on edge server
# --server-port specifies the listening port.
python -m dronesearch.onserver
```

## Experiments for SEC'18 paper

See [experiment-README](experiment-README.md).


