Filter out detections being fed into nvtracker

• Hardware Platform (Jetson / GPU) Jetson Nano 4GB custom board
• DeepStream Version 6.0
• JetPack Version (valid for Jetson only) 4.6
• TensorRT Version 8.0.1.6
• Issue Type( questions, new requirements, bugs) New requirement
• Requirement details

I’m trying to develop a DeepStream app that tracks cars and two-wheelers.

My app is based on deepstream_test1_app. So, I have constructed the following pipeline:

gst_bin_add_many (GST_BIN (pipeline), source, h264parser, decoder, streammux, pgie, nvtracker)

For my use case I only need to track cars and two-wheelers moving on a specific region on the camera viewport. So, in order to improve tracker efficiency, I want to:

  • Filter out persons, road signs
  • Filter out all cars, two-wheelers based on their bounding box intersecting a specific polygon on the viewport.

Is there any way I could achieve this? I basically want to reduce the data produced by the pgie element. So that nvtracker processes only a subset of the data from pgie.

Is it possible to remove those object at the probe function of the sink pad of nvtracker?

Yes, this is possible. This is essentially what I am asking: How can I implement this removal in the probe function? I have checked the sources but I’m completely lost as I don’t know how to start my implementation.

you can set detector class’s threshold above 1.0 and the corresponding objects won’t be detected.

it sounds like using ROI, check out nvdsanalytics example.

1 Like

I was able to do the first by setting the threshold value above 1.0 for the corresponding classes.

However I don’t know how I could use nvdsanalytics plugin. Can I place this plugin between nvinfer and nvtracker plugins?

Check out apps/sample_apps/deepstream-nvdsanalytics-test sample app (listed at this page) for the idea how and where to place the nvdsanalytics plugin.

nvdspreprocess can set ROI for inference. Is it help in you case?

Gst-nvdspreprocess (Alpha) — DeepStream 6.1 Release documentation (nvidia.com)

There is a simple solution to my problem. I used a probe function to check the bboxes generated by nvinfer. Inside the probe function I use the following method to remove all the objects that are outside my ROI:

pyds.nvds_remove_obj_meta_from_frame(frame_meta, obj_meta)

This effectively removes all irrelevant objects and nvtracker operates only on objects that intersect with the ROI.

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