prominenceai/deepstream-services-library

Tracking algorithm for all Triggers is incorrect/insufficient for how the Tracker libs actually work.

rjhowell44 opened this issue · 3 comments

The current Tracking algorithm(s) delete a tracked object once it is no longer found in frame, however, the Tracker libs are capable or reacquiring objects once reported by the inference engine again. The DSL tracking needs to be able to support the same.

Tracker config files specify two config properties relavant to this.

  maxShadowTrackingAge: 51    # Max length of shadow tracking. If the shadowTrackingAge exceeds this limit, the tracker will be terminated.
  earlyTerminationAge: 1    # If the shadowTrackingAge reaches this threshold while in TENTATIVE period, the target will be terminated prematurely.

NVIDIA Sample Configs:

  • IOU - maxShadowTrackingAge: 38
  • NvDCF_Acuracy - maxShadowTrackingAge: 42
  • NvDCF_Perf - maxShadowTrackingAge: 51
  • NvDeepSORT - maxShadowTrackingAge: 68

There will be a new DSL symbolic constant defined as

/**
 * @brief The maximum number of consecutive frames a tracked object
 * can go undetected before it is purged and no longer tracked. 
*/
#define DSL_ODE_TRACKED_OBJECT_MISSING_FROM_FRAME_MAX               100

merged into the v0.30.alpha branch

Although the above change will improve the behavior, there is a fundamental difference in the way the Tracker and ODE Trigger work.

  • Tracker maintains up to a fixed number of undetected objects indefinitely.
  • ODE Trigger maintains undetected objects for a max number of frames.

The DSL Tracking need to be changed to match the Tracker