Same tracking id to person and face detected from two different models

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson Orin AGX
• DeepStream Version 7.0
• JetPack Version (valid for Jetson only) 6.0
• TensorRT Version 8.6.2
• 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 running a pipeline with two detectors person and face using deepstream-app. I want the tracker to work on both of these detectors and assign same tracking id to person and face whichever is detected first. Say if the person is detected first then id is assigned by the tracker and later on if the face is detected then same tracking id should be assigned to it. I want the object meta to have same tracking id for the person and face. This will help me know that the face belongs to this person. Similarly it may happen that due to occlusion the face is detected first and later on person is detected. Then also the tracker assign a id to face first and copy/assign same id to the person.
Please let me know how this can be achieved and if there is any such example.
Thanks

Are you using two PGIE for person and face or PGIE for person and SGIE for face?

Face as PGIE and Person as SGIE. SGIE is running in full frame mode. I have other SGIEs after face to achieve face recognition and swap.
Thanks

If the Person is PGIE and face is the SGIE which detect face in the Person BBox, you can find the relationship between Person and Face in metadata. nvtracker only tracking BBox and don’t know the relationship between BBox.

Hi,
Sorry for my late reply. Actually Face (SCRFD model) is PGIE and Person (Yolo) is SGIE with full frame in custom preprocess. Since Person is in full frame mode so tracker doesn’t assign object id and hence Yolo_object_id is always -1.

Face (PGIE) ----> Person (SGIE)

The reason why I need to do so is because Face also provide 5 keypoints (kps). I am scaling kps by the ratio of frame_width/model_input_resolution and it is showing up on faces properly.

If I put Person as PGIE and pass this to Face as SGIE without any custom preprocess then face detection works properly, however kps can’t be shown on face. I believe that now since Face model get only Person and it’s input size becomes dynamic so scaling kps is not possible. Please let me know how can I scale kps properly if I set Person (Yolo) as PGIE and Face (SCRFD) as SGIE. I believe that, with such pipeline, tracker will maintain object id from Person to Face.
Thanks

@kesong I am looking forward for your reply on my earlier message.

Suppose you should can scaling kps by model resolution->face rect->persion rect->image.