DCF tracker significantly faster than KLT

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version 5.1
• JetPack Version (valid for Jetson only)
• TensorRT Version 7.2
• NVIDIA GPU Driver Version (valid for GPU only) 460.80
• Issue Type( questions, new requirements, bugs) Question
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)

When using the peoplenet model with the default deepstream_app_source1_peoplenet.txt and DCF enabled, we see that the DCF tracker setting has an FPS at least 2x that of the KLT tracker on a single stream. Based on the information provided on the relative performance at the below link, we would expect it to be the other way around and KLT to be much higher performance. What could be the reason for this difference?

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_FAQ.html#what-trackers-are-included-in-deepstream-and-which-one-should-i-choose-for-my-application

KLT configuration (default):

[tracker]
enable=1
tracker-width=640
tracker-height=384
# C-AIQ: uncomment .so below depending on which tracker to use
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_iou.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_klt.so
#ll-config-file required for DCF/IOU only
ll-config-file=/opt/nvidia/deepstream/deepstream-5.1/samples/configs/deepstream-app/tracker_config.yml
#ll-config-file=iou_config.txt
gpu-id=0
#enable-batch-process applicable to DCF only
enable-batch-process=1

DCF configuration:

[tracker]
enable=1
tracker-width=640
tracker-height=384
# C-AIQ: uncomment .so and config below depending on which tracker to use
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_iou.so
#ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_nvdcf.so
#ll-config-file required for DCF/IOU only
ll-config-file=/opt/nvidia/deepstream/deepstream-5.1/samples/configs/deepstream-app/tracker_config.yml
#ll-config-file=iou_config.txt
gpu-id=0
#enable-batch-process applicable to DCF only
enable-batch-process=1

KLT use CPU to implement the algorithm however NVDCF using GPU Gst-nvtracker — DeepStream 5.1 Release documentation

Thanks for the reply! That potentially makes sense, but that same link explicitly says that DCF is “Slower than KLT and IOU due to increased computational complexity.” If DCF is faster and more accurate than KLT, what is the use case for KLT?

Hey customer, I think that should depend on your use case, assume your detector occupies more GPU, then I don’t think NvDCF will still faster than KLT. So you should evaluate the whole pipeline and the HW resource to decide which Tracker you should use.

1 Like

Good to know, thank you!

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.