Skip to main content
BoxMOT logo

Pluggable Python and C++ multi-object tracking modules for axis-aligned and oriented bounding box detections from any model.

CI PyPI version downloads license python-version DOI colab discord Ask DeepWiki

mikel-brostrom%2Fboxmot | Trendshift


DocsInstallationModesAPI ReferenceTrackersContributing

BoxMOT demo

BoxMOT provides independent detector, segmentor, appearance-encoder, and tracker components built around validated Torch structures. Pipelines compose those components; the CLI owns sources, outputs, materialized datasets, evaluation, tuning, research, and ReID workflows.

Why BoxMOT

  • One interface for track, materialize, time-variant, eval, tune, research, train-reid, eval-reid, compare-reid, export, and native build workflows.
  • Swappable components with explicit capabilities and requirements.
  • Immutable, keyed Parquet builds with reusable detections, masks, and embeddings.
  • Support for both AABB and OBB tracking paths.
  • Optional production-ready native C++ tracker implementations with the same metrics as the Python path, opted into via --tracker-backend cpp and embeddable in standalone C++ projects via CMake (see Native C++ Integration).
  • A structured Python API for embedding components and pipelines in applications.

Installation

BoxMOT supports Python 3.10 through 3.13.

pip install boxmot
boxmot --help

The default package uses the standard PyPI PyTorch build. Source checkouts and CI can explicitly select the lockfile-backed cpu or cu130 profile. For those profiles and mode-specific extras such as yolo, service, evolve, research, onnx, openvino, and tflite, see the installation guide.

Benchmark Results

Tracker key Status MOT17 ablation SportsMOT val MMOT OBB test OBB
HOTA MOTA IDF1 HOTA MOTA IDF1 HOTA MOTA IDF1
occluboost 71.10
(71.10)
78.50
(78.50)
85.28
(85.28)
83.17 97.48 89.36 49.84
(49.84)
39.41
(39.41)
58.60
(58.60)
botsort 69.68
(69.74)
78.23
(78.27)
82.33
(82.55)
76.93 98.11 78.30 52.31
(52.40)
45.43
(45.53)
61.42
(61.42)
boosttrack 69.25
(—)
75.91
(—)
83.20
(—)
76.32 97.08 77.82 48.39
(—)
41.36
(—)
56.36
(—)
strongsort 68.05
(—)
76.19
(—)
80.76
(—)
79.80 97.31 80.27 49.76
(—)
43.70
(—)
57.32
(—)
deepocsort 67.95
(—)
75.83
(—)
80.54
(—)
79.51 97.94 79.59 50.84
(—)
44.21
(—)
59.33
(—)
bytetrack 67.68
(67.68)
78.04
(78.04)
79.16
(79.16)
67.93 97.25 76.90 33.97
(33.97)
33.72
(33.72)
39.74
(39.74)
hybridsort 67.31
(—)
74.09
(—)
78.87
(—)
81.14 98.07 81.88 54.64
(—)
47.50
(—)
64.67
(—)
ocsort 66.44
(66.44)
74.55
(74.55)
77.90
(77.90)
76.34 96.60 75.64 28.64
(28.64)
26.17
(26.17)
30.06
(30.06)
sfsort 62.65
(62.65)
76.87
(76.87)
69.18
(69.18)
75.73 98.39 72.99 47.83
(47.83)
45.42
(45.42)
52.09
(52.09)

Scores are Python first and C++ in parentheses.
MMOT reported metrics are 'class average'. See Experiment Workflows for details.

Related guides:

Minimal Usage

CLI:

boxmot track --detector yolo26n --reid lmbn_n_duke --tracker occluboost \
  --source 0 --save --show

Evaluate a tracker:

boxmot eval \
  --dataset mot17 \
  --split ablation \
  --detector yolox-x-mot17 \
  --reid lmbn-n-duke \
  --tracker botsort

See the evaluation guide for --fps and --calibrate-kf usage.

Use NumPy detections and BGR images directly:

import numpy as np

from boxmot import OccluBoost

tracker = OccluBoost()
dets = np.array([[100, 200, 300, 400, 0.9, 0]])
frame = np.zeros((480, 640, 3), dtype=np.uint8)  # BGR image
tracks = tracker.update(dets, frame)
print(tracks[:, 4].astype(int))  # track IDs

# OBB: (cx, cy, w, h, angle in radians, confidence, class_id)
# tracker = OccluBoost(is_obb=True)
# dets = np.array([[200, 300, 200, 100, np.pi / 6, 0.9, 0]])
# tracks = tracker.update(dets, frame)
# print(tracks[:, 5].astype(int))  # track IDs

Contributing

Start with CONTRIBUTING.md and the contributor docs.

Contributors

BoxMOT contributors

Support and Citation

  • Bugs and feature requests: GitHub Issues
  • Questions and discussion: GitHub Discussions or Discord
  • Limited free consulting is available for nonprofit nature conservation projects using BoxMOT. Contact box-mot@outlook.com to discuss your project.
  • Citation metadata: CITATION.cff
  • Commercial support: box-mot@outlook.com

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boxmot-25.0.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boxmot-25.0.0-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file boxmot-25.0.0.tar.gz.

File metadata

  • Download URL: boxmot-25.0.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for boxmot-25.0.0.tar.gz
Algorithm Hash digest
SHA256 4af0b286805990070213abf70883bdb0d7176ab9fbe0ff63eee488131725babd
MD5 1ae3e0c373d9d33079d262350c966d08
BLAKE2b-256 66b6914b15955a133f3df3ca203090bc8ca0b4233ca00f9514be44453bb8ea18

See more details on using hashes here.

File details

Details for the file boxmot-25.0.0-py3-none-any.whl.

File metadata

  • Download URL: boxmot-25.0.0-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for boxmot-25.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ec926008b6d3eaba82f2d3c11cb6befe03001516d3d4479f9b1ee9743adda90d
MD5 03a5a22ec44562bd316258ddaecde81e
BLAKE2b-256 481c09a57dbccb72cd0d4aa0a8fcffa7c18ab83ca50245fa8ec553304d1d6026

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

25.0.0 This release

2 files

23.0.0

2 files

22.0.0

2 files

21.0.0

2 files

20.0.0

2 files

19.0.0

2 files

18.0.0

2 files

17.0.0

2 files

16.0.11

2 files

16.0.10

2 files

16.0.9

2 files

16.0.8

2 files

16.0.7

2 files

16.0.6

2 files

16.0.5

2 files

16.0.4

2 files

16.0.3

2 files

16.0.2

2 files

16.0.1

2 files

16.0.0

2 files

15.1.0

2 files

15.0.10

2 files

15.0.9

2 files

15.0.8

2 files

15.0.7

2 files

15.0.6

2 files

15.0.5

2 files

15.0.4

2 files

15.0.3

2 files

15.0.2

2 files

15.0.1

2 files

15.0.0

2 files

14.0.0

2 files

13.0.17

2 files

13.0.16

2 files

13.0.15

2 files

13.0.14

2 files

13.0.13

2 files

13.0.12

2 files

13.0.11

2 files

13.0.10

2 files

13.0.9

2 files

13.0.8

2 files

13.0.7

2 files

13.0.6

2 files

13.0.5

2 files

13.0.4

2 files

13.0.3

2 files

13.0.2

2 files

13.0.1

2 files

13.0.0

2 files

12.0.10

2 files

12.0.9

2 files

12.0.8

2 files

12.0.7

2 files

12.0.6

2 files

12.0.5

2 files

12.0.4

2 files

12.0.2

2 files

12.0.1

2 files

12.0.0

2 files

11.0.9

2 files

11.0.8

2 files

11.0.7

2 files

11.0.6

2 files

11.0.5

2 files

11.0.4

2 files

11.0.3

2 files

11.0.2

2 files

11.0.1

2 files

11.0.0

2 files

10.0.84

2 files

10.0.83

2 files

10.0.82

2 files

10.0.81

2 files

10.0.80

2 files

10.0.79

2 files

10.0.78

2 files

10.0.77

2 files

10.0.76

2 files

10.0.75

2 files

10.0.73

2 files

10.0.72

2 files

10.0.69

2 files

10.0.68

2 files

10.0.67

2 files

10.0.66

2 files

10.0.65

2 files

10.0.64

2 files

10.0.63

2 files

10.0.62

2 files

10.0.61

2 files

10.0.60

2 files

10.0.59

2 files

10.0.58

2 files

10.0.57

2 files

10.0.56

2 files

10.0.55

2 files

10.0.54

2 files

10.0.52

2 files

10.0.51

2 files

10.0.50

2 files

10.0.49

2 files

10.0.48

2 files

10.0.47

2 files

10.0.46

2 files

10.0.45

2 files

10.0.44

2 files

10.0.43

2 files

10.0.42

2 files

10.0.41

2 files

10.0.40

2 files

10.0.39

2 files

10.0.38

2 files

10.0.37

2 files

10.0.36

2 files

10.0.35

2 files

10.0.34

2 files

10.0.33

2 files

10.0.32

2 files

10.0.31

2 files

10.0.30

2 files

10.0.29

2 files

10.0.28

2 files

10.0.27

2 files

10.0.26

2 files

10.0.25

2 files

10.0.24

2 files

10.0.23

2 files

10.0.22

2 files

10.0.21

2 files

10.0.20

2 files

10.0.19

2 files

10.0.16

2 files

10.0.15

2 files

10.0.14

2 files

10.0.13

2 files

10.0.12

2 files

10.0.11

2 files

10.0.10

2 files

10.0.9

2 files

10.0.8

2 files

10.0.7

2 files

10.0.6

2 files

10.0.5

2 files

10.0.4

2 files

10.0.3

2 files

10.0.2

2 files

10.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page