viplix3 / BoTSORT-cpp

C++ implementation of BoT-SORT MOT algorithm with Re-ID and Camera Motion Compensation
129 stars 19 forks source link

FPS compared to official python implementation #11

Closed arnaud-nt2i closed 9 months ago

arnaud-nt2i commented 9 months ago

Hi ! @viplix3 , Thank you for your superb work here. Wile doing your performance analysis compared to python code, have you noticed some performance improvement (in fps) ? C++ should be faster here, right ?

viplix3 commented 9 months ago

Hi @arnaud-nt2i

Yip, the C++ code was significantly faster than the Python version I was using as a reference, especially on the Jetson NX. I don't remember the exact performance gains though.

The performance I was able to achieve using the current implementation is detailed here

This is the reference Python implementation I was using to compare both the performance and accuracy.

It should be noted that the reference Python implementation has evolved quite a lot by now thanks to the open-source nature of the project.

If C++ is not a restriction for you I'd recommend checking out the above repo as that has ReID and multiple tracker support.

I have plans of adding ReID support to this project but unfortunately, I haven't been able to find time for this project in the past few months.

Additionally, if you could compare the performance results of the reference implementation I shared, please feel free to raise a PR with relevant experiments!

arnaud-nt2i commented 9 months ago

ok thank for quick answer. Another fast question: Do you plan to run Camera Motion compensation in parallel of Detection for further improvements ? https://github.com/NirAharon/BoT-SORT/issues/37#issuecomment-1278909530

viplix3 commented 9 months ago

Ideally in a perception pipeline, yes, object detection would be running in one thread, and camera motion compensation would be executed parallelly in another thread as they are independent of each other.

The tracker would get the results of both object detection and camera motion compensation for processing. This would significantly reduce the computation time, as evident by the BoT-SORT tracker performance numbers when CMC is disabled.

This perfectly aligns with the BoT-SORT author's comments on the issue link you've provided.

As this is a standalone application, executing CMC in a parallel thread doesn't provide any benefit as the tracker needs those results to process further. So even if I spawn a new thread for CMC, the tracker would have to wait for CMC to complete its execution to utilize the output.

I hope that clears things up.

arnaud-nt2i commented 9 months ago

ok thank you very much!

viplix3 commented 9 months ago

I have plans to improve this project further so please feel free to report any issues you observe. Closing this for now!