• Hardware Platform: GPU
• DeepStream Version: 6.3
• TensorRT Version: 8.5.3-1
• NVIDIA GPU Driver Version: 530.30.02
• Issue Type: bug
• sample app used: deepstream-test2
• Requirement details: NvTracker plugin
There is some strange behavior in outputReidTensor. As stated here:
the Re-ID features will be extracted at intervals only when PGIE generates bounding boxes and reidExtractionInterval
is met.
So, if I put reidExtractionInterval=0, Re-ID will be inferred on all PGIE (YOLO detector in my case) generated bboxes. BUT, this works only for NvDeerSORT, and not for NvDCF:
legend: each line represents index for detected objects
trackIds BEFORE tracking del line - track id for all detected objects (if object is not tracked yetm there will be *)
trackIds from obj_meta_list line - track ids for TRACKED objects (so uuntracked objects are deleted by NvTracker plugin)
objectIndex in reidTensor line - for each object in obj_meta_list print index in ReidTensor.
NvDeerSORT, all detected bboxes are inferred by ReID engine, as expected. And indexes for all objects are from 0 to N_obj, as they were in frame_meta->obj_meta_list.
Num detected objects: 25, pReidTensor len: 25
trackIds BEFORE tracking del: * 5 0 13 25 * 1 31 27 12 * 17 30 8 29 19 10 6 28 18 14 20 16 21 24
trackIds from obj_meta_list: 5 0 13 25 1 31 27 12 17 30 8 29 19 10 6 28 18 14 20 16 21 24
objectIndex in reidTensor: 1 2 3 4 6 7 8 9 11 12 13 14 15 16 17 18 19 20 21 22 23 24Num detected objects: 26, pReidTensor len: 26
trackIds BEFORE tracking del: * * 5 31 29 * 16 25 12 1 0 8 27 30 19 6 28 20 17 13 3 14 18 21 10 24
trackIds from obj_meta_list: 5 31 29 16 25 12 1 0 8 27 30 19 6 28 20 17 13 3 14 18 21 10 24
objectIndex in reidTensor: 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
NvDCF, reid is used for re-assoc. Here we can see that indexes in reidTensor are shuffled and not all objects from detector were inferred by ReID engine.
Num detected objects: 25, pReidTensor len: 24
trackIds BEFORE tracking del: * 0 22 17 13 1 * 19 * 16 8 9 4 18 23 20 11 6 21 14 5 10 7 12 3
trackIds from obj_meta_list: 0 22 17 13 1 19 16 8 9 4 18 23 20 11 6 21 14 5 10 7 12 3
objectIndex in reidTensor: 2 0 18 15 3 20 17 10 11 5 19 22 21 13 7 8 16 6 12 9 14 4
So, why Visual tracking shuffles indexes and infers not on all detected objects? Is this by design feture?
Also, can we see source code for libnvds_nvmultiobjecttracker.so? It will be much painless to debug deepstream applications…
Thank you!