Tracking system


In my tracking system, two classes are used to designate cones and people. However, problems arise: when objects overlap, the class can sometimes be erroneously changed. For example, when I approach a cone, the system may incorrectly update the key points and assign me the class of a cone due to a greater number of my key points. I need help configuring the system so that it does not change the object class when it is overlapped by another object.

Could you advise how to set up the tracking to prevent this problem? Also, does my system use algorithms like SORT (Simple Online and Realtime Tracking) or Deep SORT, and how can I interact with these algorithms to adjust the identification of objects when they overlap?

Hi @Shakir0905,

We do not currently expose all of the parameters of our proprietary tracking algorithm, the currently exposed ones are:

Can you try using the filtering mode to NMS3D_PER_CLASS? This can have an impact on the tracking performance.

Can we just disable this? I just need the boxes to be drawn, that’s all

You can disable prediction by disabling the tracking.

How !?
can i do it tell me please

Set enable_tracking = false when initializing the Object Detection modules.

If you share your code I can point you to the code to modify.

def setup_object_detection(self, zed):
        obj_param = sl.ObjectDetectionParameters()
        obj_param.detection_model = sl.OBJECT_DETECTION_MODEL.CUSTOM_BOX_OBJECTS
        obj_param.enable_tracking = False

        if obj_param.enable_tracking:
            zed.enable_positional_tracking()
        zed.enable_object_detection(obj_param)

        return obj_param

I did it and it works. Thanks!
but is it possible to adjust the threshold so as not to completely disable tracking? ?

1 Like

how about the treshold ??

obj_param.filtering_mode = “NMS3D_PER_CLASS” how can i do it correctly ?

Hi @Shakir0905

The tracking is a on/off thing, you can play with the detection confidence though:
Example here

    detection_parameters_rt = sl.ObjectDetectionRuntimeParameters()
    detection_parameters_rt.detection_confidence_threshold = 60

Then in the retrieve objects, you pass the runtime parameters:

zed.retrieve_objects(objects, detection_parameters_rt)

obj_param.filtering_mode = “NMS3D_PER_CLASS” how can i do it correctly ?

The filtering mode would be a line like:

obj_param.filtering_mode = sl.OBJECT_FILTERING_MODE.NMS_3D_PER_CLASS

@Shakir0905
That’s on me, wrong copy-paste, but the link to the doc I sent you is correct.
It’s detection_confidence_threshold and not detection_confidence.

obj_runtime_param.object_class_detection_confidence_threshold
obj_param.filtering_mode = sl.OBJECT_FILTERING_MODE.NMS3D_PER_CLASS
obj_runtime_param.detection_confidence_threshold = 60

i used this one, but the problem left the same