DeepStream multiple source issue

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson
• DeepStream Version 6.3
• JetPack Version (valid for Jetson only) 5.1.2
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs) bugs
• 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)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

I have developed a deepstream pipeline to process multiple sources (RTSP cameras). The pipeline incorporates three models: primary model (PGIE) using YOLOv8, secondary model 1 (SGIE1) utilizing YOLOv5-face, and secondary model 2 (SGIE2) employing ArcFace. However, due to limitations with the SGIE1 model, it cannot be exported to support dynamic shapes. To address this, I configured the batch size for PGIE to 8 and SGIE1 to 1. The pipeline functions smoothly when processing a single source, but encounters errors when processing two sources simultaneously. What could be the underlying cause of this issue, and how can it be resolved? Thank you.

The error is:
0x1c48bcc0 WARN nvinfer gstnvinfer.cpp:2002:gst_nvinfer_process_objects: Source info not found for source 1. Maybe the GST_NVEVENT_PAD_ADDED event was never generated for the source.

Could you first check which nvinfer is causing the problem?You can check by following the steps below.

  1. …->pgie->fakesink
  2. …->pgie->sgie1->fakesink
  3. …->pgie->sgie1->sgie2->fakesink

Hi, I followed the steps as you instructed.

  1. …->pgie->fakesink -----> It works well
  2. …->pgie->sgie1->fakesink -----> It throws error as I mentioned above
    202 0x74ae700 WARN nvinfer gstnvinfer.cpp:2002:gst_nvinfer_process_objects: Source info not found for source 1. Maybe the GST_NVEVENT_PAD_ADDED event was never generated for the source.

Could you attach your config file and source file? Maybe there’s something wrong with your configuration. Or you can add some debug info in the source code to analyze that yourself. The code is open source.

Were you able to solve the issue?

You can also share your project to us or reproduce your issue with one of our demos. If we can reproduce that, we can analyze that further.

Your issue and this topic may not be the same, please file a new topic and describe your issue in detail. Thanks

Sorry I cannot share my code but my pipeline is similar to this repo: hiennguyen9874/deepstream-face-recognition: Deepstream face detection & recognition (github.com)
I use the face-detection as first sgie and face-recognition as second sgie

OK. From the log alone, the other video stream may be not properly connected to nvstreammux. You can add some log info in our source code to analyze why the nvinfer->source_info is empty in the gstnvinfer.cpp.

After a long time ingesting into this problem with log info in the gstnvinfer.cpp below:

if ((GstNvEventType)GST_EVENT_TYPE(event) == GST_NVEVENT_PAD_ADDED) {
    /* New source added in the pipeline. Create a source info instance for it.
     */
    guint source_id;
    gst_nvevent_parse_pad_added(event, &source_id);
    printf("Add succesfully: %u\n", source_id);
    nvinfer->source_info->emplace(source_id, GstNvInferSourceInfo());
  }

I have some insights:

  1. If …->pgie->fakesink —> The source_id is 0, 1, … when add more sources.
  2. If …->pgie->sgie1->fakesink —> The source_id remains 0 when additional sources are added. The source_id does not increase.

Probably not because of that. We have similar demo like sources\apps\sample_apps\deepstream-test2.
The pipeline is …->pgie->sgie0->sgie1->… It works normally.