SORT

A simple online and realtime tracking algorithm for 2D multiple object tracking in video sequences. See an example video here.

By Alex Bewley
DynamicDetection.com

Introduction

SORT is a barebones implementation of a visual multiple object tracking framework based on rudimentary data association and state estimation techniques. It is designed for online tracking applications where only past and current frames are available and the method produces object identities on the fly. While this minimalistic tracker doesn't handle occlusion or re-entering objects its purpose is to serve as a baseline and testbed for the development of future trackers.

SORT was initially described in an arXiv tech report. At the time of the initial publication, SORT was ranked the best open source multiple object tracker on the MOT benchmark.

This code has been tested on Mac OSX 10.10, and Ubuntu 14.04, with Python 2.7 (anaconda).

Note: A significant proportion of SORT's accuracy is attributed to the detections. For your convenience, this repo also contains Faster RCNN detections for the MOT benchmark sequences in the benchmark format. To run the detector yourself please see the original Faster RCNN project or the python reimplementation of py-faster-rcnn by Ross Girshick.

Also see: A new and improved version of SORT with a Deep Association Metric implemented in tensorflow is available at https://github.com/nwojke/deep_sort .

License

SORT is released under the GPL License (refer to the LICENSE file for details) to promote the open use of the tracker and future improvements. If you require a permissive license contact Alex (alex@dynamicdetection.com).

Citing SORT

If you find this repo useful in your research, please consider citing:

@inproceedings{Bewley2016_sort,
  author={Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben},
  booktitle={2016 IEEE International Conference on Image Processing (ICIP)},
  title={Simple online and realtime tracking},
  year={2016},
  pages={3464-3468},
  keywords={Benchmark testing;Complexity theory;Detectors;Kalman filters;Target tracking;Visualization;Computer Vision;Data Association;Detection;Multiple Object Tracking},
  doi={10.1109/ICIP.2016.7533003}
}

Dependencies:

  1. scikit-learn
  2. scikit-image
  3. FilterPy
$ pip search filterpy

Demo:

To run the tracker with the provided detections:

$ cd path/to/sort
$ python sort.py

To display the results you need to:

  1. Download the 2D MOT 2015 benchmark dataset
  2. Create a symbolic link to the dataset
$ ln -s /path/to/MOT2015_challenge/data/2DMOT2015 mot_benchmark
  1. Run the demo with the --display flag
$ python sort.py --display

Main Results

Using the MOT challenge devkit the method produces the following results (as described in the paper).

Sequence Rcll Prcn FAR GT MT PT ML FP FN IDs FM MOTA MOTP MOTAL
TUD-Campus 68.5 94.3 0.21 8 6 2 0 15 113 6 9 62.7 73.7 64.1
ETH-Sunnyday 77.5 81.9 0.90 30 11 16 3 319 418 22 54 59.1 74.4 60.3
ETH-Pedcross2 51.9 90.8 0.39 133 17 60 56 330 3014 77 103 45.4 74.8 46.6
ADL-Rundle-8 44.3 75.8 1.47 28 6 16 6 959 3781 103 211 28.6 71.1 30.1
Venice-2 42.5 64.8 2.75 26 7 9 10 1650 4109 57 106 18.6 73.4 19.3
KITTI-17 67.1 92.3 0.26 9 1 8 0 38 225 9 16 60.2 72.3 61.3
Overall 49.5 77.5 1.24 234 48 111 75 3311 11660 274 499 34.0 73.3 35.1

Using SORT in your own project

Below is the gist of how to instantiate and update SORT. See the 'main' section of sort.py for a complete example.

from sort import *

#create instance of SORT
mot_tracker = Sort() 

# get detections
...

# update SORT
track_bbs_ids = mot_tracker.update(detections)

# track_bbs_ids is a np array where each row contains a valid bounding box and track_id (last column)
...


SORT

视频序列中2D多目标跟踪的简单在线和实时跟踪算法。 请参阅此处的视频

亚历克斯·布莱(Alex Bewley) DynamicDetection.com

简介

SORT是基于初步数据关联和状态估计技术的视觉多目标跟踪框架的准系统实现。它专为在线跟踪应用程序而设计,只有过去和现在的帧可用,并且该方法可以快速生成对象标识。虽然这种简约的跟踪器不能处理遮挡或重新输入物体,​​但其目的是作为未来跟踪器开发的基准和测试平台。

SORT最初在 arXiv技术报告中描述。在初次发布时,SORT被列为 MOT基准测试多个对象跟踪器, a>。

此代码已在Mac OSX 10.10和Ubuntu 14.04上使用Python 2.7(anaconda)进行测试。

注意: SORT的准确性的很大一部分归因于检测。 为了方便起见,此回购还包含基准格式的MOT基准序列的更快速的RCNN检测。要自己运行检测器,请参阅原始的更快的 RCNN项目,或者重新实现py-faster-rcnn

另请参阅 https://github.com/nwojke/deep_sort

许可证

SORT根据GPL许可证发布(有关详细信息,请参阅LICENSE文件),以促进跟踪器的开放使用和未来的改进。如果您需要许可证联系人Alex( alex@dynamicdetection.com )。

引用SORT

如果您发现此回购在您的研究中有用,请考虑引用:

@inproceedings{Bewley2016_sort,
  author={Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben},
  booktitle={2016 IEEE International Conference on Image Processing (ICIP)},
  title={Simple online and realtime tracking},
  year={2016},
  pages={3464-3468},
  keywords={Benchmark testing;Complexity theory;Detectors;Kalman filters;Target tracking;Visualization;Computer Vision;Data Association;Detection;Multiple Object Tracking},
  doi={10.1109/ICIP.2016.7533003}
}

依赖关系:

  1. scikit-learn
  2. scikit-image
  3. FilterPy
$ pip search filterpy

演示:

使用提供的检测来运行跟踪器:

$ cd path/to/sort
$ python sort.py

要显示您需要的结果:

  1. Download the 2D MOT 2015 benchmark dataset
  2. Create a symbolic link to the dataset
$ ln -s /path/to/MOT2015_challenge/data/2DMOT2015 mot_benchmark
  1. Run the demo with the –display flag
$ python sort.py –display

主要结果

使用 MOT challenge devkit ,该方法会产生以下结果(如本文所述)。

Sequence Rcll Prcn FAR GT MT PT ML FP FN IDs FM MOTA MOTP MOTAL
TUD-Campus 68.5 94.3 0.21 8 6 2 0 15 113 6 9 62.7 73.7 64.1
ETH-Sunnyday 77.5 81.9 0.90 30 11 16 3 319 418 22 54 59.1 74.4 60.3
ETH-Pedcross2 51.9 90.8 0.39 133 17 60 56 330 3014 77 103 45.4 74.8 46.6
ADL-Rundle-8 44.3 75.8 1.47 28 6 16 6 959 3781 103 211 28.6 71.1 30.1
Venice-2 42.5 64.8 2.75 26 7 9 10 1650 4109 57 106 18.6 73.4 19.3
KITTI-17 67.1 92.3 0.26 9 1 8 0 38 225 9 16 60.2 72.3 61.3
Overall 49.5 77.5 1.24 234 48 111 75 3311 11660 274 499 34.0 73.3 35.1

在您自己的项目中使用SORT

以下是如何实例化和更新SORT的要点。请参阅sort.py的 main 部分,以获取完整的示例。

from sort import *

#create instance of SORT mot_tracker = Sort()

get detections

update SORT

track_bbs_ids = mot_tracker.update(detections)

track_bbs_ids is a np array where each row contains a valid bounding box and track_id (last column)




相关问题推荐