davidkirwan / simpletracker

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Overview

  • Stage 1: Process videos looking for moving objects and generate annotation files with boundingboxes (tracks)
  • Stage 2: Human associates tracks with labels
  • Stage 3: Train NN

Processing Stage 1 (SimpleTracker)

The purpose of this program is to capture or process 'interesting' videos and process them for input into Stage 2.

It can capture live images from an RSTP camera or a direct attached one and then generate videos, images and annotation files sutioable for input to Stage 2 and ultimately Stage 3 for training a Neural Net.

Install

We recommend installing a conda environment and then running:

./install.sh <location of conda> simpletracker

Running

You can run a test which will create an outputvideo.mp4 with bounding boxes rendered into the video of the given input video.

PYTHONPATH="${PYTHONPATH}:." \
python uap_tracker/main.py -f [input.mkv|input.mp4]

The full stage 1 capturing froma camera can be run using the following command:

PYTHONPATH="${PYTHONPATH}:." \
SKY360_CONTROLLER=Camera \
SKY360_VISUALIZER=two_by_two \
SKY360_DETECTION_MODE=background_subtraction \
SKY360_FORMAT=mot_stf \
python uap_tracker/main.py

Where:

  • SKY360_CONTROLLER Determines the input source type: [camera, video]
  • SKY360_VISUALIZER Determines the display output to screen: [two_by_two, simple, none]
  • SKY360_DETECTION_MODE Determines the method used as basis for object detection: [background_subtraction]
  • SKY360_OUTPUT_FORMAT Determines the MultipleObjectTracking or SingleObjectTracking file output mode: [mot_stf, sot_stf, none]

Other settings can be found in the settings.toml file. Environemnt variables override settings.toml ones.

Output

The output for the STF formatter is in this directory structure

 ./processed/                          # Processed videos
 ./stf/<video_name>_<section_id>/
   annotations.json                    # Annotations file
   video.mp4                           # Original video transcoded to mp4 and split for this section
   images/       
     <frame_id:06>.{image_name>.jpg    # Images generated during detection such as 'original', 'grey', 'background_subtraction', 'optical_flow'
{
  "track_labels": {
    "1": "unknown"                     # track_id 1 has the label 'unknown'
  },
  "frames": [
    {
      "frame": 6,
      "annotations": {
        "bbox": [
          873,
          1222,
          49,
          49
        ],
        "track_id": 1
      }
    }...

About


Languages

Language:Python 93.8%Language:Shell 4.4%Language:Dockerfile 1.8%