{"id":13443171,"url":"https://github.com/abewley/sort","last_synced_at":"2025-05-14T18:02:49.580Z","repository":{"id":37742984,"uuid":"50970509","full_name":"abewley/sort","owner":"abewley","description":"Simple, online, and realtime tracking of multiple objects in a video sequence.","archived":false,"fork":false,"pushed_at":"2023-11-28T07:01:46.000Z","size":1232,"stargazers_count":4133,"open_issues_count":108,"forks_count":1115,"subscribers_count":75,"default_branch":"master","last_synced_at":"2025-04-13T10:54:18.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abewley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-02-03T03:16:23.000Z","updated_at":"2025-04-12T07:08:57.000Z","dependencies_parsed_at":"2024-03-13T00:32:07.286Z","dependency_job_id":"49fb4e7c-3f16-4c20-a21b-3e580bcab4ef","html_url":"https://github.com/abewley/sort","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abewley%2Fsort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abewley%2Fsort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abewley%2Fsort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abewley%2Fsort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abewley","download_url":"https://codeload.github.com/abewley/sort/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198452,"owners_count":22030964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:01:57.048Z","updated_at":"2025-05-14T18:02:44.568Z","avatar_url":"https://github.com/abewley.png","language":"Python","funding_links":[],"categories":["Python","Object Tracking","Face Perception"],"sub_categories":["Face Tracking"],"readme":"SORT\n=====\n\nA simple online and realtime tracking algorithm for 2D multiple object tracking in video sequences.\nSee an example [video here](https://alex.bewley.ai/misc/SORT-MOT17-06-FRCNN.webm).\n\nBy Alex Bewley  \n\n### Introduction\n\nSORT 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.\n\nSORT was initially described in [this paper](http://arxiv.org/abs/1602.00763). At the time of the initial publication, SORT was ranked the best *open source* multiple object tracker on the [MOT benchmark](https://motchallenge.net/results/2D_MOT_2015/).\n\n**Note:** A significant proportion of SORT's accuracy is attributed to the detections.\nFor your convenience, this repo also contains *Faster* RCNN detections for the MOT benchmark sequences in the [benchmark format](https://motchallenge.net/instructions/). To run the detector yourself please see the original [*Faster* RCNN project](https://github.com/ShaoqingRen/faster_rcnn) or the python reimplementation of [py-faster-rcnn](https://github.com/rbgirshick/py-faster-rcnn) by Ross Girshick.\n\n**Also see:**\nA new and improved version of SORT with a Deep Association Metric implemented in tensorflow is available at [https://github.com/nwojke/deep_sort](https://github.com/nwojke/deep_sort) .\n\n### License\n\nSORT 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@bewley.ai).\n\n### Citing SORT\n\nIf you find this repo useful in your research, please consider citing:\n\n    @inproceedings{Bewley2016_sort,\n      author={Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben},\n      booktitle={2016 IEEE International Conference on Image Processing (ICIP)},\n      title={Simple online and realtime tracking},\n      year={2016},\n      pages={3464-3468},\n      keywords={Benchmark testing;Complexity theory;Detectors;Kalman filters;Target tracking;Visualization;Computer Vision;Data Association;Detection;Multiple Object Tracking},\n      doi={10.1109/ICIP.2016.7533003}\n    }\n\n\n### Dependencies:\n\nTo install required dependencies run:\n```\n$ pip install -r requirements.txt\n```\n\n\n### Demo:\n\nTo run the tracker with the provided detections:\n\n```\n$ cd path/to/sort\n$ python sort.py\n```\n\nTo display the results you need to:\n\n1. Download the [2D MOT 2015 benchmark dataset](https://motchallenge.net/data/MOT15/)\n0. Create a symbolic link to the dataset\n  ```\n  $ ln -s /path/to/MOT2015_challenge/data/2DMOT2015 mot_benchmark\n  ```\n0. Run the demo with the ```--display``` flag\n  ```\n  $ python sort.py --display\n  ```\n\n\n### Main Results\n\nUsing the [MOT challenge devkit](https://motchallenge.net/devkit/) the method produces the following results (as described in the paper).\n\n Sequence       | Rcll | Prcn |  FAR | GT  MT  PT  ML|   FP    FN  IDs   FM|  MOTA  MOTP MOTAL\n--------------- |:----:|:----:|:----:|:-------------:|:-------------------:|:------------------:\n TUD-Campus     | 68.5 | 94.3 | 0.21 |  8   6   2   0|   15   113    6    9|  62.7  73.7  64.1\n ETH-Sunnyday   | 77.5 | 81.9 | 0.90 | 30  11  16   3|  319   418   22   54|  59.1  74.4  60.3\n ETH-Pedcross2  | 51.9 | 90.8 | 0.39 | 133  17  60  56|  330  3014   77  103|  45.4  74.8  46.6\n ADL-Rundle-8   | 44.3 | 75.8 | 1.47 | 28   6  16   6|  959  3781  103  211|  28.6  71.1  30.1\n Venice-2       | 42.5 | 64.8 | 2.75 | 26   7   9  10| 1650  4109   57  106|  18.6  73.4  19.3\n KITTI-17       | 67.1 | 92.3 | 0.26 |  9   1   8   0|   38   225    9   16|  60.2  72.3  61.3\n *Overall*      | 49.5 | 77.5 | 1.24 | 234  48 111  75| 3311 11660  274  499|  34.0  73.3  35.1\n\n\n### Using SORT in your own project\n\nBelow is the gist of how to instantiate and update SORT. See the ['__main__'](https://github.com/abewley/sort/blob/master/sort.py#L239) section of [sort.py](https://github.com/abewley/sort/blob/master/sort.py#L239) for a complete example.\n    \n    from sort import *\n    \n    #create instance of SORT\n    mot_tracker = Sort() \n    \n    # get detections\n    ...\n    \n    # update SORT\n    track_bbs_ids = mot_tracker.update(detections)\n\n    # track_bbs_ids is a np array where each row contains a valid bounding box and track_id (last column)\n    ...\n\n\n\n\u003ca id=\"see-also\"\u003e\u003c/a\u003e\n## 🔗 See also\n\n- [DeepSORT](https://github.com/nwojke/deep_sort) - The successor of SORT with a Deep Association Metric used injecting appearance information to improve the association in difficult scenarios such as occlusions and fast moving objects.\n- [Local Metrics for Multi-Object Tracking](https://github.com/google-research/localmot) - A framework to help better measure and understand how well your tracker performs at association across time as opposed to the standard metrics (MOTA, HOTA) which as heavilty biased towards raw detection performance.\n- [Human Scene Transformer](https://github.com/google-research/human-scene-transformer) - A recent repository for trajectory forecasting, a future direction beyond tracking (pun intended).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabewley%2Fsort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabewley%2Fsort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabewley%2Fsort/lists"}