-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Improved Association Pipeline Tracker by Stadler and Beyerer (https://ieeexplore.ieee.org/document/10223159) #1527
Add Improved Association Pipeline Tracker by Stadler and Beyerer (https://ieeexplore.ieee.org/document/10223159) #1527
Conversation
Sorry for my late response. I am on vacations 😄 . I ran a sanity check on the tracker, obtaining these results: HOTA: -pedestrian HOTA DetA AssA DetRe DetPr AssRe AssPr LocA OWTA HOTA(0) LocA(0) HOTALocA(0)
MOT17-02-FRCNN 57.264 47.679 70.949 51.734 78.494 71.864 95.946 85.552 59.965 66.918 81.416 54.482
MOT17-04-FRCNN 71.629 63.261 83.381 71.35 78.345 84.363 96.415 85.717 76.545 85.978 79.866 68.667
COMBINED 68.979 60.104 81.427 67.279 78.369 82.401 96.346 85.685 73.42 82.39 80.11 66.003
CLEAR: -pedestrian MOTA MOTP MODA CLR_Re CLR_Pr MTR PTR MLR sMOTA CLR_TP CLR_FN CLR_FP IDSW MT PT ML Frag
MOT17-02-FRCNN 52.273 84.178 52.273 59.091 89.655 0 81.818 18.182 42.923 52 36 6 0 0 18 4 0
MOT17-04-FRCNN 67.262 84.75 67.262 79.167 86.928 90.476 0 9.5238 55.189 266 70 40 0 38 0 4 0
COMBINED 64.151 84.656 64.151 75 87.363 59.375 28.125 12.5 52.643 318 106 46 0 38 18 8 0
Identity: -pedestrian IDF1 IDR IDP IDTP IDFN IDFP
MOT17-02-FRCNN 71.233 59.091 89.655 52 36 6
MOT17-04-FRCNN 82.866 79.167 86.928 266 70 40
COMBINED 80.711 75 87.363 318 106 46
Count: -pedestrian Dets GT_Dets IDs GT_IDs
MOT17-02-FRCNN 58 88 20 22
MOT17-04-FRCNN 306 336 46 42
COMBINED 364 424 66 64
{'HOTA': 68.979, 'MOTA': 64.151, 'IDF1': 80.711} Which are way lower than all the implemented trackers. Not sure if something in the implementation is wrong and don't have time for deep dive at the moment. Compare python tracking/generate_dets_n_embs.py --source ./assets/MOT17-mini/train --yolo-model yolox_x.pt --reid-model weights/osnet_x0_25_msmt17.pt
python tracking/generate_mot_results.py --dets yolox_x --embs osnet_x0_25_msmt17 --tracking-method imprassoc
python tracking/val.py --benchmark MOT17-mini --dets yolox_x --embs osnet_x0_25_msmt17 --tracking-method imprassoc This will help you in the process of fixing possible bugs 🚀 |
Thanks for the feedback! |
The other trackers have the default parameters from their respective repo. |
I ran the other trackers on MOT17-mini and they got the following results:
It seems to be in line with the other trackers on MOT17-mini. Maybe we need to do the full MOT17 eval to reproduce those numbers. |
Sorry, my bad. I only evaluated the first two sequences. In the README they are evaluated on all. |
Some notes regarding parameters:
Maybe I am missing something but please check the default parameters as well and set those for the tracker in |
I will set up a benchmarking job for sanity checking all the trackers in the CI pipeline 🚀 |
Awesome! For context I am using the "The detections are separated into
I will clean up the code a bit and remove the |
Some test seems to be failing... Aaand please pull the latest from master such that it can be benchmarked against the rest of the trackers on a very small subset of MOT17 🚀. After pulling the latest you can add the tracker's name here: boxmot/.github/workflows/ci.yml Line 119 in 7785235
|
Ok It looks like the tests are still failing. I took a look at the tests and they input the following detections into the tracker: This fails because the confidence threshold for initializing a new track in ImprAssoc is 0.7 by default, but one of the detections has a confidence of 0.54 Should I lower the confidence threshold or should we change the tests? |
You can just increase the confidences of those |
Good enough for now 😄. Merging 🚀 Format Status❔ HOTA MOTA IDF1
Ocsort ✅ 21.684 6.6038 13.158
Bytetrack ✅ 21.717 6.6038 13.158
Botsort ✅ 21.61 6.6038 13.158
Hybridsort ✅ 21.684 6.6038 13.158
Deepocsort ✅ 21.684 6.6038 13.158
Imprassoc ✅ 21.516 6.6038 13.158 I had to lower a few parameters to achieve similar results as the rest of the trackers:
|
Tack you for contributing to this repo @rolson24! It may take me a few days for me to take a look to your other PR though 🔥 |
Sounds good! In the meantime, what is the best way to do a full eval? Should I just use this but with MOT17 instead of MOT17-mini?
|
For best people detection model and best lightweight ReID model run: python tracking/generate_dets_n_embs.py --source ./assets/MOT17/train --yolo-model yolox_x.pt --reid-model osnet_x1_0_dukemtmcreid.pt With this generated you can then just feed these pre-generated detections and embeddings to the trackers of your choice python tracking/generate_mot_results.py --dets yolox_x --embs osnet_x1_0_dukemtmcreid --tracking-method botsort Finally, generate the MOT metrics using python tracking/val.py --benchmark MOT17 --dets yolox_x --embs osnet_x1_0_dukemtmcreid --tracking-method botsort |
FYI, the evaluation process has now been simplified into a single file
It is as fast as always 😄 |
This is an implementation of the Improved Association Pipeline Tracker which is the top open algorithm tracker (not including NVIDIA or BrinqTraq) on MOT20, and 3rd on MOT17. It is somewhat similar to BoTSORT, but it has a single association step where both the high and low score detections are matched with the tracks in one stage, but their cost values are scaled so that the high score detections don't dominate too much. The code is also quite similar to your implementation of BoTSORT, so it is more maintainable. I have not completed a full benchmark evaluation yet, but its in the works. I have been using this implementation for a different project for quite a while and it has consistently outperformed ByteTrack and is on par with BoTSORT.
I think it could be a good tracker to add as it is a drop-in replacement with many of the existing modules, and its performance is quite good on handling occlusions.
I know this is a lot of code to review, but I hope this PR is helpful.