DeepStream PreProcessor + MsgConv Race condition

I’m customizing DeepStream components to integrate it to my company’s existing software.
To do that, I had to normalize coordinates sent by nvmsgconv. I have used the frame metadata inside msg2p api, and I noticed some messages in the broker being offset when combining the msg2p with NvDsPreProcesor - Most of the detections were in the right spot, but once in a while there was an off-spot detection.

OSD showed all the detections aligned perfectly 100% of the time, while via msgconv they were, sometime, off-set. It only happened (as much as I have spotted) when applying a custom ROI area using NvDsPreProcessor.

I guessed the issue was caused by a race condition over the ROI metadata.
I added a call to nvds_acquire_meta_lock(batch_meta); and a call to nvds_release_meta_lock(batch_meta); wrapping the inside if block starting on line 555 of gst-nvmsgconv/gstnvmsgconv.c under the gst-plugins source tree of DS6.2.

After adding the calls, everything worked perfectly, and no bboxes from msgconv were off-set.

Please add this fix to your code

Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU)
• DeepStream Version
• JetPack Version (valid for Jetson only)
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, 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)

thanks for the sharing. there are some questions.

  1. which deepstream sample are you referring to? what is the whole media pipeline?
  2. about “sometime, off-set.”, do you mean the bboxes coordinates will change after nvmsgconv?
  3. could you provide simplified code and configuration to reproduce this issue? thanks

I am using a custom configuration with deepstream-app to run yolov8 inference on PGIE+SGIE mode.

I believe the issue is mostly on the fact that I have been using Gst-NvDsPreprocess to apply ROIS for inference - This issue was not present otherwise.

I must also point out the fact that I have been customizing the msg2p lib to send relative bboxes instead of absolute ones, using the image height/width of the pipeline via the frame metadata.
I am not able to share all of these, but perhaps it should be considered to add the lock I have mentioned above anyway - to lock the metadata in some cases. - Because I believed it resolved the issue completly.

thanks for the sharing, I will try to reproduce.
I can’t reproduce this issue.

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