Skip to content

Tracking Tasks

BoxMOT tracks detector outputs through time. The task determines the geometry and optional per-object data entering the tracker; the selected tracker decides how those observations are associated.

Supported tasks

Task Detection input Track output Start here
Axis-aligned boxes Boxes with float32[N,4] xyxy Tracks with AABB geometry Bounding Boxes
Oriented boxes OrientedBoxes with float32[N,5] cxcywha Tracks with OBB geometry Oriented Boxes
Instance masks Full-frame MaskBatch aligned to detections Optional MaskBatch aligned to tracks Masks

Angles are expressed in radians. N is the number of detections and M is the number of emitted tracks; the values can differ when a tracker is coasting through a missed detection. The table describes canonical Detections input. Standalone packed NumPy AABB6 or OBB7 input instead returns a C-contiguous float64 AABB8 or OBB9 matrix.

Shared workflow

Every task follows the same pipeline:

Frame -> detector -> optional upstream segmentor/ReID
      -> tracker (optional private ReID) -> PipelineResult

The resolved tracker has a fixed AABB or OBB mode. Segmentation masks stay aligned through immutable selection and permutation. Use maf_hda with AABB detections, nonempty full-frame masks, and current images for association using motion and masked correlation-filter appearance. A ReID-enabled tracker adapter can extract missing embeddings privately from the frame; attached upstream embeddings bypass that path. Native adapters pass generated or attached embeddings through the typed ABI to their model-free C++ tracker libraries.

Pose detectors

An Ultralytics pose model can provide its detected boxes to the tracking pipeline. BoxMOT currently tracks those boxes; keypoints are not part of the canonical Tracks contract.