Tracker doesn't appear to persist parent field

I’m working on a program that uses the parent field of NvDsObjectMeta instances. In this case we are computing a flag for the parent object based off of the child objects. We’re running it with a non-zero interval so the tracker handles persisting the metadata through subsequent frames. It looks like the parent field is not present in the subsequent frames until the primary inference engines run again.

Is there a way to keep the parent field through subsequent frames? Is there any documentation that describes which fields are persisted through subsequent frames? I have not seen any documentation referencing this yet but would appreciate a pointer if it exists.

2 Likes

Are you asking how to get track object history , have you checked How to obtain previous states of tracked object. - #3 by sumityadav

I hadn’t seen that response, thanks for the pointer. I was asking about how we can get other NvDsObjectMeta fields (in particular, the parent field) to stick with their associated objects as they come out of the tracker (like how class_id is persisted). I believe this is a different question than how to obtain previous states of tracked object.

After digging around I think I found the answer to this. The trackers all look to eventually operate on instances of _NVMOTObjToTrack. This object has fields for the object class, object bounding box, and detection confidence of the object. It also has a pointer that can be used to keep track of other related information to the object.

My assumption is that the out-of-the-box tracker implementations do not track additional info from an NvDsObjectMeta object such as the parent field or the misc_obj_info field. It looks like you can write your own low-level tracker that could track this additional info.

Instread of writing my own low-level tracker, I’ve instead just been caching the parents for each object further down the pipeline.

As a side note, I didn’t see the function deepstream_app::tracking_done_buf_prob() in the latest version of the deepstream sdk (4.0.2). There are other _done_buf_prob() functions so I get the gist of what tracking_done_buf_prob() would likely do.

Additional links that might be useful for future viewers:

OK, thanks. Let’s close this topic and create a new topic if you need any further help.