Custom tracker always gets 0 objects in NvMOTProcessParams

Custom tracker always gets 0 objects in NvMOTProcessParams. I have tested a code that worked in previous DS versions, but fails now in DS 7.0, because inputs are always empty. While params->frameList is not empty (it correctly contains pointer to 1 frame), its contents (frame->objectsIn.numFilled) are always of length 0, even in a scene where your closed source trackers (NvDCF/…) correctly track objects.

• Hardware Platform (Jetson / GPU)
GPU
• DeepStream Version
7.0
• TensorRT Version
8.6.1.6
• Issue Type( questions, new requirements, bugs)
bug
• 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)
Create a custom tracker and observe its inputs

I am attaching a code of trivial tracker that always receives 0 objects in NvMOTProcessParams to NvMOT_Process() function.

empty_tracker.zip (3.2 KB)

frame->objectsIn.numFilled will be set in void NvTrackerProc::fillMOTFrame() in /opt/nvidia/deepstream/deepstream-7.0/sources/gst-plugins/gst-nvtracker/nvtracker_proc.cpp. Can you add some log to have a check?

When I use my trivial tracker, the “NvTrackerProc::fillMOTFrame” function is run, but no objects are added, pObjList->numFilled is always 0.
Furthermore, pObjList->numAllocated == 0 and frameMeta.obj_meta_list == NULL.
This is the console output when loading the tracker library:

gstnvtracker: Loading low-level lib at lib/libByteTracker.so
gstnvtracker: Optional NvMOT_RetrieveMiscData not implemented
gstnvtracker: Optional NvMOT_RemoveStreams not implemented

When I use one of your trackers, objects are added as expected. Both variables are not 0 or NULL.

The only difference between the two situations is a choice of tracker library.

I have found the issue. It appears that these parameters are mandatory since DS7.0. Once I have added these lines into NvMOT_Query, the tracker started working again.

pQuery->maxTargetsPerStream = 150;
pQuery->maxShadowTrackingAge = 30; // Maximum length of shadow tracking, required if supportPastFrame is true
pQuery->outputReidTensor = true; // Set true only if the low-level tracker supports outputting reid feature
pQuery->reidFeatureSize = 256; // Size of Re-ID feature, required if outputReidTensor is true

Glad to know it works with your customized tracker.

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