SGIE object size increase 20% rule not working

Please provide complete information as applicable to your setup.

**• Hardware Platform (Jetson / GPU) GPU
**• DeepStream Version 7.1
**• JetPack Version (valid for Jetson only)
**• TensorRT Version
**• NVIDIA GPU Driver Version (valid for GPU only) 550.127
**• Issue Type( questions, new requirements, bugs) Questions

We are implementing a Deepstream pipeline in Python. We have an object detector as the PGIE, an NvDCF tracker, followed by a few SGIE modules. The SGIE is attribute recognition on person and vehicle.

On page Gst-nvinfer — DeepStream documentation, there is an optimization on the tracker:

When the plugin is operating as a secondary classifier along with the tracker, it tries to improve performance by avoiding re-inferencing on the same objects in every frame. It does this by caching the classification output in a map with the object’s unique ID as the key. The object is inferred upon only when it is first seen in a frame (based on its object ID) or when the size (bounding box area) of the object increases by 20% or more. This optimization is possible only when the tracker is added as an upstream element.

This is a very nice feature that we want to have. However, after dumping some meta data in the SGIE probe function, we find that this rule is not functioning, and the SGIE is running on all detector objects of a tracker.

Can you confirm that this feature is still supported in the current Deepstream? If yes, what could be missed to set it up correctly?

Thanks a lot.

1 Like

Can you help to conform if you set: “classifier-async-mode=1” in the config file of SGIE? Please refer this sample config: /opt/nvidia/deepstream/deepstream-7.1/sources/apps/sample_apps/deepstream-test2/dstest2_sgie1_config.txt.

Thanks for your quick response.
We did not set classifier-async-mode=1. We will test and let you know.
Two follow up questions,

  1. What if the SGIE is an object detector? Should we also set classifier-async-mode=1?
  2. Do we need to use a queue between the PGIE and the SGIE since this is asynchronous mode?

Please check this doc ( Gst-nvinfer — DeepStream documentation 6.4 documentation) for more details of “classifier-async-mode=1”. It only valid for a secondary classifier along with the tracker.

It turns out that classifier-async-mode=1 is not necessary. We found that the problem was we set network-type=100 (others) instead of 1 (classifier) because the SGIE model is a multi-label classifier. After setting it to 1, the area size change rule begins to work.
Thanks for your help.

1 Like