ifzhang / ByteTrack

[ECCV 2022] ByteTrack: Multi-Object Tracking by Associating Every Detection Box
MIT License
4.58k stars 866 forks source link

Clarification on matching.fuse_score #150

Open lpkoh opened 2 years ago

lpkoh commented 2 years ago

In yolox/tracker/byte_tracker.py, the code says: dists = matching.iou_distance(strack_pool, detections) if not self.args.mot20: dists = matching.fuse_score(dists, detections) Can I clarify what exactly matching.fuse_score does as compared to just iou_distance? Should I use it if passing in my own detections?

chamecall commented 11 months ago

you can try both options but the logic is the following: first we compute distance matrix based on iou_distance between object's bounding boxes where the less value is the closer according boxes are; if we skip fuse_score then linear_assignment goes on and its goal is to find best matches between two sets of boxes based on computed distances only; and now what fuse_score does is that it just adds additional information namely detection scores (from your detector) and incorporates them into mentioned distance matrix, so that if you have for example pair of boxes having small distance between them but detection scores of them (or one of them) are low then it will affect the distance value in the matrix (increase it).