ifzhang/ByteTrack

What does match_thresh mean?

cxy86121 opened this issue · 1 comments

What does match_thresh mean in a member variable in BYTETracker class? The larger the setting, the more stable the tracking and the less prone to ID change.

@cxy86121 if you trace this variable starting from byte_tracker.py it ends up being called by lap.lapjv() in matching.py as the cost_limit argument.

Someone described the meaning of cost_limit on the lap repo as:

Values larger than cost_limit are disregarded. Which means that there will be unmatched rows.

I'm not 100% sure, but I think this is consistent with what you observed. My guess:

  • Low match_thresh - more stringent due to low cost threshold, therefore less detections assigned to tracks. New tracks may be assigned to these detections when they should have been assigned to existing tracks -> ID switching gets worse.
  • High match_thresh - the opposite, tracking improves. Perhaps the downside of this is more computational time for the linear assignment algorithm, but if we're using it with object detection anyway this shouldn't matter too much