Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU): Orin AGX
• DeepStream Version: 7.0
• JetPack Version (valid for Jetson only): 6.0
Context - Working Configuration
We have a DeepStream application with **parallel inference using 2 models** running successfully:
Pipeline architecture:
- source → streammux
- Branch 1: pgie1 (unique_id=1) → tracker0 → nvdsmetamux
- Branch 2: pgie2 (unique_id=2) → tracker1 → nvdsmetamux
- nvdsmetamux → streamdemux → OSD → sinks
Configuration details:
- 2 primary GIEs with different models (unique_component_id: 1 and 2)
- Each branch has its own NvDCF tracker (tracker0 and tracker1)
- nvdsmetamux aggregates metadata from both branches
- This configuration works correctly: bboxes are displayed with tracking IDs on correct RTSP Out
Problem Encountered
We’re experiencing PTS tolerance timeout issues where:
- When one model’s inference takes longer, its metadata arrives late to the metamux
- The metamux drops the late metadata entirely (exceeds `pts-tolerance`)
- Result: complete loss of information from one model, including tracker interpolation data
- Even with `pts-tolerance=200000`, the issue persists under load
Attempted Solution - Single Tracker After Metamux
To solve the PTS issue, we want to place a single tracker AFTER the metamux to aggregate objects from both models before tracking:
- source → streammux
- Branch 1: pgie1 (unique_id=1) → nvdsmetamux
- Branch 2: pgie2 (unique_id=2) → nvdsmetamux
- nvdsmetamux → SINGLE TRACKER → streamdemux → OSD → sinks
Implentation:
- Removed tracker0 and tracker1 from branches
- Created single tracker bin after nvdsmetamux using standard NvDCF tracker
- Tracker configuration: `ll-lib-file: /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so`
nvdsmetamux configuration
[property]
enable=1
# active-pad commented out to allow metadata fusion
# active-pad=sink_0 #tested with and without
pts-tolerance=200000
[group-0]
src-ids-model-1=0;1
src-ids-model-2=0;1
Current Issue
The application runs without errors, but:
What works:
- Both GIEs detect objects correctly
- Metadata is aggregated by nvdsmetamux (verified in logs)
- Example: `Frame 1 Source 0: Total=17 (GIE1=4, GIE2=13)
What does not work:
- No bboxes appear on video output
- The tracker appears to not process the aggregated objects
Questions
1. Is NvDCF tracker designed to handle objects from multiple GIE sources (different unique_component_id values) in a single frame?
2. Does the tracker filter objects based on `gie_unique_id` even when no `gie-id` filter is specified in the config?
3. Is our architecture valid? Should metadata from multiple parallel GIEs be aggregated BEFORE or AFTER tracking?
4. Are there any specific tracker configuration parameters required to accept objects from multiple GIE sources?
5. Is there an alternative approach to solve the PTS timeout issue while maintaining tracking across both model outputs?
Thanks for any help.