{"id":13441649,"url":"https://github.com/lixiaoyu2000/Poly-MOT","last_synced_at":"2025-03-20T12:32:11.418Z","repository":{"id":185209556,"uuid":"662374863","full_name":"lixiaoyu2000/Poly-MOT","owner":"lixiaoyu2000","description":"Official Repo For IROS 2023 Accepted Paper \"Poly-MOT\"","archived":false,"fork":false,"pushed_at":"2024-03-20T08:50:12.000Z","size":21704,"stargazers_count":159,"open_issues_count":0,"forks_count":28,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-07-31T03:30:08.802Z","etag":null,"topics":["autonomous-vehicles","multi-object-tracking","tracking"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lixiaoyu2000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-07-05T02:15:09.000Z","updated_at":"2024-07-30T13:22:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"ed480486-d8f2-4d5d-8e1f-d0dfa562a36d","html_url":"https://github.com/lixiaoyu2000/Poly-MOT","commit_stats":{"total_commits":43,"total_committers":6,"mean_commits":7.166666666666667,"dds":0.6511627906976745,"last_synced_commit":"d809ed8979d58022d0e4f680d83b901323f36de6"},"previous_names":["lixiaoyu2000/poly-mot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lixiaoyu2000%2FPoly-MOT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lixiaoyu2000%2FPoly-MOT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lixiaoyu2000%2FPoly-MOT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lixiaoyu2000%2FPoly-MOT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lixiaoyu2000","download_url":"https://codeload.github.com/lixiaoyu2000/Poly-MOT/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221760092,"owners_count":16876350,"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":["autonomous-vehicles","multi-object-tracking","tracking"],"created_at":"2024-07-31T03:01:36.522Z","updated_at":"2025-03-20T12:32:11.412Z","avatar_url":"https://github.com/lixiaoyu2000.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Poly-MOT\nThis is Official Repo For IROS 2023 Accepted Paper \"Poly-MOT: A Polyhedral Framework For 3D Multi-Object Tracking\"\n![1688699111](https://github.com/lixiaoyu2000/Poly-MOT/blob/main/docs/Poly-MOT.jpg)\n\n\u003e [**Poly-MOT: A Polyhedral Framework For 3D Multi-Object Tracking**](https://arxiv.org/abs/2307.16675),  \n\u003e Xiaoyu Li\u003csup\u003e\\*\u003c/sup\u003e, Tao Xie\u003csup\u003e\\*\u003c/sup\u003e, Dedong Liu\u003csup\u003e\\*\u003c/sup\u003e, Jinghan Gao, Kun Dai, Zhiqiang Jiang, Lijun Zhao, Ke Wang,                   \n\u003e *arXiv technical report ([arXiv 2307.16675](https://arxiv.org/abs/2307.16675))*,  \n\u003e IROS 2023\n\n\n## Citation\nIf you find this project useful in your research, please consider citing by :smile_cat::\n```\n@misc{li2023polymot,\n      title={Poly-MOT: A Polyhedral Framework For 3D Multi-Object Tracking}, \n      author={Xiaoyu Li and Tao Xie and Dedong Liu and Jinghan Gao and Kun Dai and Zhiqiang Jiang and Lijun Zhao and Ke Wang},\n      year={2023},\n      eprint={2307.16675},\n      archivePrefix={arXiv},\n      primaryClass={cs.RO}\n}\n```\n\n## News\n\n- 2024-03-20. Warm-up :fire:! We released [Fast-Poly](https://github.com/lixiaoyu2000/FastPoly), a fast version of Poly-MOT. Welcome to follow.\n- 2023-12-09. Warm-up :fire:! The official repo of [RockTrack](https://github.com/lixiaoyu2000/Rock-Track) has been released. We will release code soon. Welcome to follow.\n- 2023-09-08. **Version 1.0 has been released.**\n- 2023-07-01. Poly-MOT is accepted at IROS 2023 :zap:.\n- 2023-03-01. Our method ranks first among all methods on the NuScenes tracking [benchmark](https://www.nuscenes.org/tracking?externalData=all\u0026mapData=all\u0026modalities=Any) :fire:.\n\n## Release notes\n\n### Implemented functions\n- 2023-12-12. In this version, we implemented two extra motion models (CV, CTRV).\n- 2023-12-08. In this version, we made d_eucl parallel.\n- 2023-09-08. In this version, we implemented API for the `nuScenes` dataset, five Similarity metrics(giou3d, gioubev, iou3d, ioubev, eucl), three Motion models(CTRA, Bicycle, CA), one NMS method(Classic NMS), three matching methods(Greedy, Hungarian, MNN).\n\n### TODO list\n- 2023-09-08. More NMS method;\n\n## Abstract\nWe propose Poly-MOT, an efficient 3D MOT method based on the Tracking-By-Detection framework that enables the tracker to choose the most appropriate tracking criteria for each object category.\nPoly-MOT leverages different motion models for various object categories to characterize distinct types of motion accurately. \nWe also introduce the constraint of the rigid structure of objects into a specific motion model to accurately describe the highly nonlinear motion of the object.\nAdditionally, we introduce a two-stage data association strategy to ensure that objects can find the optimal similarity metric from three custom metrics for their categories and reduce missing matches.\n\n\u003cdiv align=center\u003e\n\u003cimg src=\"https://github.com/lixiaoyu2000/Poly-MOT/blob/main/docs/Visualization.gif\"/\u003e\n\u003c/div\u003e\n\n## Highlights\n\n- **Best-performance(75.4 AMOTA).** :chart_with_upwards_trend:\n  - Poly-MOT enables the tracker to choose the most appropriate tracking criteria for each object category.\n  - With the powerful detector [Largerkernel3D](https://github.com/dvlab-research/LargeKernel3D), Poly-MOT achieves 75.4 AMOTA on the NuScenes test set.\n  - Poly-MOT achieves 73.1 AMOTA on the val set with [CenterPoint](https://github.com/tianweiy/CenterPoint) for a fair comparison.\n  \n- **Real-time(0.3s per frame).** :zap:\n  - Poly-MOT follows the Tracking-By-Detection(TBD) framework, and is learning-free.\n  - During online tracking, No any additional input(including dataset, images, map, ...) needed besides the detector.\n  - We first proposed the *half-parallel GIOU operator* under the `Python` implementation.\n  - On the NuScenes, Poly-MOT can run at 3 FPS (Frame Per Second) on Intel 9940X.\n  \n- **Strong-scalability(one-config-fit-all).** :ledger:\n  - Poly-MOT has integrated a variety of tracking technologies in the code, and uses `yaml` to manage these hyperparameters in a unified way, you can customize your own tracker arbitrarily.\n  \n- **Well-readability(many comments).** :clipboard:\n  - We have recorded each tracking module's design reasons, effects, and ideas in the code. \n  - You can grasp our insight and even start discussing any comments with us.\n\n  \n## Main Results\n\n### 3D Multi-object tracking on NuScenes test set\n\n Method       | Detector      | AMOTA    | AMOTP    | IDS      |   \n--------------|---------------|----------|----------|----------|\n Poly-MOT     | LargeKernel3D | 75.4     | 42.2     | 292      |         \n \n \nYou can find detailed results on the NuScenes test set on this [website](https://eval.ai/web/challenges/challenge-page/476/leaderboard/1321).\n\n### 3D Multi-object tracking on NuScenes val set\n\n Method        | Detector        | AMOTA    | AMOTP    | IDS      |   \n---------------|-----------------|----------|----------|----------|\n Poly-MOT      | Centerpoint     | 73.1     | 52.1     | 281      |  \n Poly-MOT      | LargeKernel3D-L | 75.2     | 54.1     | 252      |\n\n## Use Poly-MOT\n\n### 1. Create and activate environment\n```\n   conda env create -f environment.yaml  \n   conda activate polymot\n```\n\n### 2. Required Data\n\n#### Download 3D detector\n\nWe strongly recommend that you download the detector file `.json` from official websites of Pioneer detector works ([CenterPoint](https://github.com/tianweiy/CenterPoint), etc.).\nIn online tracking, we need to use detector files in `.json` format.\n\n#### Prepare the token table for online inference\n\n`sample token table` is used to identify the first frame of each scene.\n\n```shell\ncd Poly-MOT/data/script\npython first_frame.py\n```\n\nThe file path(detector path, database path, etc.) within the function `extract_first_token` needs to be modified.\nThe result will be output in `data/utils/first_token_table/{version}/nusc_first_token.json`.\n\n#### Prepare the detector for online inference\n\nThe tracker requires that the detectors must be arranged in chronological order.\n`reorder_detection.py` is used to reorganize detectors in chronological order.\n\n```shell\ncd Poly-MOT/data/script\npython reorder_detection.py\n```\n\nThe file path(detector path, database path, token path, etc.) within the function `reorder_detection` needs to be modified.\nThe result will be output in `data/detector/first_token_table/{version}/{version}_{detector_name}.json`.\n\n#### Prepare the database for evaluation\n\nAlthough Poly-MOT does not need the database during online inference, in order to evaluate the tracking effect, the database is still necessary.\nDownload data and organize it as follows:\n```\n# For nuScenes Dataset         \n└── NUSCENES_DATASET_ROOT\n       ├── samples       \u003c-- keyframes\n       ├── sweeps        \u003c-- frames without annotation\n       ├── maps          \u003c-- map infos\n       ├── v1.0-trainval \u003c-- train/val set metadata \n       ├── v1.0-test     \u003c-- test set metadata\n```\n\n\n### 3. Running and Evaluation\n\n#### Config\nAll hyperparameters are encapsulated in `config/nusc_config.yaml`, you can change the `yaml` file to customize your own tracker.\n**The accuracy with `CenterPoint` in the paper can be reproduced through the parameters above the current `nusc_config.yaml`.**\n\n#### Running\nAfter downloading and organizing the detection files, you can simply run:\n```\npython test.py\n```\nThe file path(detector path, token path, database path, etc.) within the file needs to be modified. \nBesides, you can also specify the file path using the terminal command, as following:\n```\npython test.py --eval_path \u003ceval path\u003e\n```\n\n\n#### Evaluation\nTracking evaluation will be performed automatically after tracking all scenarios.\n\n\n## Visualization\nGive the box to render in the specified format and the token of the background to get the trajectory rendering map. For example, `black` boxes represent detection results, and `other colored` boxes represent existing trajectories, see the following:\n\u003cdiv align=center\u003e\u003cimg width=\"500\" height=\"500\" src=\"https://github.com/lixiaoyu2000/Poly-MOT/blob/main/docs/2.png\"/\u003e\u003c/div\u003e\n\nYou can run the Jupyer notebook [Visualization.ipynb](https://github.com/lixiaoyu2000/Poly-MOT/blob/main/utils/Visualization.ipynb).\n\n\n## Contact\n\nAny questions or suggestions about the paper/code are welcome :open_hands:! \nPlease feel free to submit PRs to us if you find any problems or develop better features :raised_hands:!\n\nXiaoyu Li(李效宇) lixiaoyu12349@icloud.com.\n\n## License\n\nPoly-MOT is released under the MIT license.\n\n\n## Acknowledgement\n\nThis project is not possible without the following excellent open-source codebases :fist:.\n\nIn the detection part, many thanks to the following open-sourced codebases:\n- [CenterPoint](https://github.com/tianweiy/CenterPoint)\n- [Largerkernel3D](https://github.com/dvlab-research/LargeKernel3D)\n\nIn the tracking part, many thanks to the following open-sourced codebases:\n- [AB3DMOT](https://github.com/gideontong/AB3DMOT)\n- [EagerMOT](https://github.com/aleksandrkim61/EagerMOT)\n- [SimpleTrack](https://github.com/tusen-ai/SimpleTrack)\n- [CBMOT](https://github.com/cogsys-tuebingen/CBMOT)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flixiaoyu2000%2FPoly-MOT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flixiaoyu2000%2FPoly-MOT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flixiaoyu2000%2FPoly-MOT/lists"}