BoxMOT
BoxMOT is a structured tracking-by-detection toolkit for axis-aligned boxes, oriented boxes, and instance masks. Its dependency direction is explicit:
Detectors, segmentors, appearance encoders, and trackers are independently usable. Pipelines normally provide reusable masks and appearance embeddings. For live use, every high-level ReID-enabled tracker adapter can also extract missing embeddings lazily from a supplied frame. Native adapters pass those features to their model-free C++ tracker libraries. The engine owns media sources, sinks, services, CLI workflows, evaluation, tuning, and resumable materialization.
MafHda combines motion and masked correlation-filter
appearance for AABB detections with nonempty full-frame instance masks and
current image frames.
boxmot track --tracker maf_hda --detections DIR --images DIR --instances DIR replays saved TrackR-CNN predictions
on KITTI MOTS; see the MAF-HDA tracker page for the required paths.
EagerMot adds 2D/3D sensor fusion through the Python
tracker API with independent detection batches and camera calibration.
Use boxmot eval --tracker eagermot to evaluate saved KITTI PointGNN and TrackR-CNN
predictions against KITTI MOTS masks; the tracker page provides the command.
boxmot tune --dataset ./kitti-mots --tracker eagermot
loads a multimodal sequence dataset.yaml, optimizes separate car and
pedestrian profiles together for class-average mask HOTA, and saves profiles
for boxmot eval --tracker eagermot --dataset ./kitti-mots --class-config. Sequence data lives
together; the same YAML declares classes, splits, and the encoding and paths
for each modality. Use the sensor dataset template
to supply your own images, 2D/3D detections, calibration, and ego poses.
Get started
pip install boxmot
boxmot --help
boxmot track \
--source video.mp4 \
--detector yolov8n \
--tracker bytetrack \
--save
For repeatable evaluation, publish perception once and name the build on every downstream command:
boxmot materialize --experiment mot17/ablation-yolox-lmbn.yaml
boxmot eval --experiment mot17/ablation-yolox-lmbn.yaml --build BUILD_ID
Where to go next
| Goal | Guide |
|---|---|
| Install optional detector, service, or export runtimes | Installation |
| Run the CLI | CLI |
| Track live or finite media | Track |
| Build reusable keyed perception data | Materialize |
| Evaluate, tune, or research against a fixed build | Modes |
| Compose Torch-native components in Python | Python API |
| Select an association algorithm | Trackers |
| Embed a service or native tracker | Integrations |
Canonical structures are CPU-contiguous and validated without implicit conversion. Standalone box-only tracker calls may use exact NumPy AABB6 or OBB7 rows and receive packed NumPy AABB8 or OBB9 rows; pipelines and enriched detections use canonical structures.