I originally use OpenCV CSRT Tracker in my project, it tracks object fine even when the object is move fast. But it only utilizing CPU.
So a switched to use VPI DCF Tracker, which results a way better frame rate but the tracked box seems drifted when object or camera moves, which doesn’t happen on OpenCV CSRT.
I wonder are there significant difference between the implementation of those two trackers? Is channel and spatial reliability implemented in VPI DCF Tracker or there are other differences?
VPI implements a subset of the CSR-DCF paper. It doesn’t implement the discriminative scale-space tracking, hence not tracking object’s scale changes over time. Only the object’s position is tracked.
By the way, when I run VPI example 19 with only bbox at frame 0 (all non-frame-0 bbox are removed from the txt file), the tracked boxes jitters and slides from target as the video (pedestrian.mp4) goes, which doesn’t happen in OpenCV CSRT.
As you mentioned above, although DSST is not implemented, the size of targets in pedestrian.mp4 doesn’t change, I think it’s probably not the cause.
The sample implements a simplistic tracking pipeline using poor tracking quality. For production-grade tracking quality, you must implement proper object lifetime management and bounding box refinement stages in the code section named “Custom target update”.