Please provide complete information as applicable to your setup.
Hardware Platform (Jetson / GPU): NVIDIA GeForce RTX 2070 Mobile (TU106M), Compute Capability 7.5, 8 GB VRAM
DeepStream Version: 9.1.0
JetPack Version: N/A (discrete GPU)
TensorRT Version: 10.16
NVIDIA GPU Driver Version: 575.51.03
Issue Type: Question
How to reproduce the issue: N/A, this is a configuration/usage question. Details below.
Requirement details: N/A
I have a pipeline with four nvinfer models chained before an nvtracker:
nvstreammux → pgie_a → sgie_a → sgie_b → sgie_c → nvtracker → tiler
The gie-unique-ids are: pgie_a = 4, sgie_a = 13, sgie_b = 12, sgie_c = 11. All four models output class_id = 0, and all four have interval=5.
**All models are custom trained Yolo26 models
Observed behavior**
I put pad probes on each element and print unique_component_id, class_id and object_id for every object.
-
On inference frames (e.g. frame 518), all four models produce correct detections. The
sgie_coutput has components 11, 12, 13 and 4, all withobject_id = UNTRACKED_OBJECT_ID(18446744073709551615), as expected.
===== PROBE: pgie_a =====Frame 518
component=4 class=0 object_id=18446744073709551615
===== PROBE: sgie_a =====Frame 518
component=13 class=0 object_id=18446744073709551615
component=4 class=0 object_id=18446744073709551615
===== PROBE: sgie_b =====Frame 518
component=12 class=0 object_id=18446744073709551615
component=13 class=0 object_id=18446744073709551615
component=4 class=0 object_id=18446744073709551615
===== PROBE: sgie_c =====Frame 518
component=11 class=0 object_id=18446744073709551615
component=12 class=0 object_id=18446744073709551615
component=13 class=0 object_id=18446744073709551615
component=4 class=0 object_id=18446744073709551615
-
On that same frame,
nvtrackeroutputs the right four components (11, 12, 13, 4) with tracker ids 0, 1, 3, 4.
===== PROBE: nvtracker =====Frame 518
component=11 class=0 object_id=0
component=12 class=0 object_id=1
component=13 class=0 object_id=3
component=4 class=0 object_id=4
-
On the frames between inference frames (e.g. 512–517, 519–524), the tracker outputs four objects with ids 4, 3, 1, 0, but all four are
component=11, the id of the last GIE in the chain (sgie_c).
===== PROBE: nvtracker =====Frame 520
component=11 class=0 object_id=4
component=11 class=0 object_id=3
component=11 class=0 object_id=1
component=11 class=0 object_id=0
-
The result is that most of the frames downstream of the tracker have every detection labeled as sgie_c id 0, even though the detections came from four different models.
What works
- Removing nvtracker: everything works correctly, including with the intervals.
- Setting the pgie_a model’s interval to 0 also gives the expected behavior .
- Earlier in the pipeline, I have the same pgie → sgie setup with
interval=5and other models, and it works fine, it uses the same tracker at the end of the pipeline.
What I think is happening
Since every model uses class_id = 0, my guess is that nvtracker can’t distinguish objects from different GIEs, and the objects it predicts on skipped frames get a single unique_component_id. I’m not sure this is the actual mechanism.
Questions
- Is it expected that nvtracker changes
unique_component_idon tracker-predicted objects on skipped frames? - Is having multiple detectors with
interval > 0and identicalclass_idvalues feeding one tracker unsupported? - Is the class_id remap the recommended approach, or is there a tracker property (e.g.
operate-on-gie-id,operate-on-class-ids) or a config setting that handles this?