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 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)
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.