BoostTrack
Paper: BoostTrack++: Using Tracklet Information to Detect More Objects in Multiple Object Tracking
BoostTrack++ focuses on a neglected part of MOT pipelines: deciding which detections are worth trusting in the first place. The paper extends BoostTrack by using tracklet history to build a richer similarity score, then boosts low-confidence detections when past evidence suggests they are real objects. In practice, that improves recall and identity stability without giving up the online tracking-by-detection setup.
Python AABB mode also supports optional EdgeTAM mask guidance
with --tracker boosttrack --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 BoostTrack
- A detector plus appearance embeddings when
use_embeddings=True, as in the default full configuration. The Python implementation can generate missing embeddings from a suppliedFrameor consume embeddings already attached toDetections. - Supports both AABB and OBB detections in BoxMOT.
- Best when low-confidence true positives are a recurring problem and you want stronger association scoring than plain IoU or Mahalanobis distance.
Direct construction accepts reid=ReIDConfig(...) or a prebuilt
AppearanceEncoder, as described in the
Python API.
Tuning notes
Adaptive Kalman Filter (kalman.adaptive_kf)
The Python implementation supports experimental online process-noise estimation
with kalman.adaptive_kf=True (default: False). It uses a window of up to 30 Kalman
innovations per track, starts adapting after 15 measurement corrections, and
blends the estimate with baseline noise (70% adaptive, 30% baseline).
Initialization and prediction-only updates do not count toward warmup.
Measurement noise is configured under kalman.noise.
Consider adaptation for long tracks whose motion predictability changes, then
compare against validated fixed noise settings. Short tracks may never leave
warmup; detector, association, and camera-compensation errors can distort the
estimate. kalman.variable_dt=True independently handles irregular capture intervals
and can be combined with adaptation. See
choosing Kalman timing and adaptation
for scenarios and CLI examples.
Enable it with a typed Kalman configuration:
from boxmot import KalmanConfig, create_tracker
tracker = create_tracker(
"boosttrack",
kalman=KalmanConfig(adaptive_kf=True),
)
Or set it in a custom tracker config YAML:
Use a calibrated tracker configuration to load covariance scales fitted against
representative ground truth. Those scales live under kalman.noise; adaptation
and timing remain separate settings within the same kalman group.
Python API
Pass algorithm settings through BoostTrackConfig, for example
BoostTrack(config=BoostTrackConfig(det_thresh=0.5)). Direct construction and
create_tracker("boosttrack") use the same algorithm defaults. See the
tracker configuration guide for presets and component settings.
Bases: TrackerConfig
Configure confidence boosting, association, and optional appearance features.
Shared history and association settings are inherited from TrackerConfig.
Parameters:
-
use_cmc(bool, default:True) –Enable camera-motion compensation; requires image frames.
-
min_box_area(int, default:10) –Minimum area of emitted track boxes in pixels squared.
-
aspect_ratio_thresh(float, default:1.6) –Maximum aspect ratio of emitted track boxes.
-
cmc_method(str, default:'ecc') –Camera-motion compensation method used when CMC is enabled.
-
lambda_iou(float, default:0.5) –Weight of geometric similarity in association.
-
lambda_mhd(float, default:0.25) –Weight of Mahalanobis similarity in association.
-
lambda_shape(float, default:0.25) –Weight of shape similarity in association.
-
lambda_emb_multiplier(float, default:1.5) –Multiplier for the appearance association weight.
-
alpha_fixed_emb(float, default:0.95) –Minimum previous-embedding weight in confidence-aware EMA.
-
appearance_thresh(float, default:0.75) –Minimum cosine similarity for first-pass appearance rescue.
-
appearance_iou_fraction(float, default:0.5) –Fraction of the geometry threshold required for appearance rescue; ignored for centroid association.
-
use_dlo_boost(bool, default:True) –Boost confidence of detections similar to existing tracks.
-
use_duo_boost(bool, default:True) –Boost confidence of detections far from existing tracks.
-
dlo_boost_coef(float, default:0.65) –Similarity multiplier for basic DLO boosting, used when soft boosting and varying thresholds are both disabled. Boosted confidence saturates at one.
-
s_sim_corr(bool, default:False) –Use the corrected AABB shape-similarity formula.
-
use_rich_s(bool, default:True) –Combine Mahalanobis, shape, and soft IoU similarities for DLO.
-
use_sb(bool, default:True) –Blend detection confidence with DLO similarity for soft boosting.
-
use_vt(bool, default:True) –Use track-age-dependent similarity thresholds for DLO boosting.
-
dlo_soft_alpha(float, default:0.65) –Original detection-confidence weight during soft DLO boosting.
-
dlo_soft_power(float, default:1.5) –Exponent applied to similarity during soft DLO boosting.
-
dlo_threshold_start(float, default:0.95) –DLO similarity threshold immediately after an observation.
-
dlo_threshold_end(float, default:0.8) –Minimum DLO similarity threshold as a track goes missing.
-
duo_mahalanobis_thresh(float, default:13.2767) –Minimum squared motion distance for DUO candidates.
-
duo_iou_thresh(float, default:0.3) –IoU above which competing DUO candidates are grouped.
-
track_confidence_decay(float, default:0.9) –Per-frame factor used to discount track confidence.
-
track_confidence_warmup(int, default:7) –Track age at which the initial confidence ramp ends.
-
use_embeddings(bool, default:True) –Use supplied appearance embeddings, generating missing embeddings from image frames with the configured ReID backend.
-
motion_fusion(str, default:'off') –Additional first-pass Kalman gate or motion-cost blend.
-
motion_fusion_lambda(float, default:0.98) –Existing-cost weight in the optional motion blend.
-
motion_fusion_only_position(bool, default:False) –Use only centers for the additional motion gate.
-
fuse_iou(bool, default:False) –Fuse appearance similarity with IoU before appearance weighting.
-
fuse_detection_score(bool, default:False) –Fuse detection confidence into first-pass geometry.
-
det_thresh(float, default:0.6) –Minimum detection confidence for the shared tracking kernel.
Bases: BoxTracker
Track AABB or OBB detections with confidence boosting and multi-cue matching.
Attributes:
-
frame_count(int) –Number of processed frames.
-
active_tracks(list) –Currently active tracks.
-
trackers(list[KalmanBoxTracker]) –Internal Kalman trackers.
-
cmc–Camera-motion compensation method when enabled.
Parameters:
-
config(BoostTrackConfig | None, default:None) –Immutable algorithm settings. None selects BoostTrackConfig 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.
dlo_confidence_boost
Boost AABB confidence while keeping scores in the public [0, 1] range.
dlo_confidence_boost_obb
Apply DLO boosting with oriented, representation-invariant geometry.
duo_confidence_boost_obb
Apply DUO boosting using native OBB motion and pairwise overlap.