StrongSort
Paper: StrongSORT: Make DeepSORT Great Again
StrongSORT revisits DeepSORT and shows that a stronger baseline matters. The paper improves the detector and appearance encoder, adds better motion handling and camera compensation, and then layers on lightweight postprocessing ideas to recover missed links and detections. The core message is that a carefully engineered DeepSORT-style tracker can remain competitive without changing the online MOT formulation.
Python AABB mode also supports optional EdgeTAM mask guidance
with --tracker strongsort --tracker-backend python --asso-func iou --edgetam --mask-guidance-weights edgetam.pt.
It requires IoU association and per_class=False, retains this tracker's
existing association rules, and adds temporal model inference. Accuracy
gains have not been established for this extension.
What BoxMOT Needs For StrongSort
- A detector plus appearance embeddings. Appearance cues are central to this
tracker. The Python implementation can generate missing embeddings from a
supplied
Frameor consume embeddings already attached toDetections. - Supports both AABB and OBB detections in BoxMOT.
- Good when appearance matching matters more than raw speed, especially for pedestrian-style MOT benchmarks.
Direct construction accepts reid=ReIDConfig(...) or a prebuilt
AppearanceEncoder, as described in the
Python API.
Python API
Pass algorithm settings through StrongSortConfig, for example
StrongSort(config=StrongSortConfig(min_conf=0.6)). Direct construction and
create_tracker("strongsort") use the same algorithm defaults. See the
tracker configuration guide for presets and component settings.
Bases: TrackerConfig
Configure StrongSORT's appearance gallery, confirmation, and matching costs.
Shared history and association settings are inherited from TrackerConfig.
max_iou_dist applies to overlap metrics; centroid fallback matching uses
centroid_max_distance. Motion fusion defaults to the existing gated blend.
Parameters:
-
min_conf(float, default:0.6) –Minimum detection confidence accepted for tracking.
-
max_cos_dist(float, default:0.4) –Maximum cosine distance for appearance-gallery matching.
-
max_iou_dist(float, default:0.7) –Maximum geometry distance for fallback association.
-
n_init(int, default:3) –Consecutive hits required to confirm a track.
-
nn_budget(int | None, default:100) –Maximum number of appearance-gallery features stored per track.
-
mc_lambda(float, default:0.98) –Appearance-cost weight in the blend with Mahalanobis distance; the motion-distance weight is one minus this value.
-
motion_fusion(str, default:'blend') –Appearance-pass motion handling: off, gate, or gate and blend.
-
fuse_iou(bool, default:False) –Combine appearance-gallery distances with IoU before motion fusion.
-
fuse_detection_score(bool, default:False) –Fuse detection confidence into appearance-pass costs before motion fusion.
-
ema_alpha(float, default:0.9) –Previous-embedding weight in exponential smoothing; higher values retain more history and adapt more slowly.
-
gating_only_position(bool, default:False) –Gate appearance matches using center coordinates instead of all measured geometry coordinates.
-
geometric_recovery_max_age(int, default:1) –Maximum unmatched age eligible for geometric fallback after appearance matching, measured after prediction.
-
det_thresh(float, default:0.3) –Minimum detection confidence for the shared tracking kernel.
Bases: BoxTracker
Track AABB or OBB detections with appearance matching and ECC camera motion.
Attributes:
-
tracks(list[Track]) –Active StrongSORT track states.
-
cmc–Camera-motion compensation method.
Image frames are required for ECC camera-motion compensation. Appearance embeddings are required and are generated with ReID when absent from inputs. Detection filtering uses min_conf, confirmation uses n_init, and geometric fallback matching uses max_iou_dist.
Parameters:
-
config(StrongSortConfig | None, default:None) –Immutable algorithm settings. None selects StrongSortConfig defaults.
-
kalman(KalmanConfig | None, default:None) –Immutable filter noise, timing, and supported behavior settings. None preserves tracker defaults.
-
reid(ReIDConfig | AppearanceEncoder | None, default:None) –Immutable encoder configuration or a canonical appearance encoder. Missing embeddings are generated lazily; None selects the default encoder.
-
**kwargs(Unpack[BoxTrackerOptions], default:{}) –Runtime
per_class,is_obb,class_ids,class_names,mask_guidance, andedgetamsettings.