Danh mục

mikel-brostrom/boxmot

BoxMOT: Pluggable Python and C++ SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes

snapshot · 26/10/2026
MB

mikel-brostrom/boxmot

Python · danh tính provisional_slug_only

BoxMOT: Pluggable Python and C++ SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes

strongsortbytetrackocsortdeep-learningsegmentationtensorrttracking-by-detectionyolo
Sao8.3klịch sử sao
Hạng#6935snapshot toàn cục
Fork1.9kbản ghi nguồn
Số ngày trending2lịch sử xu hướng
Snapshot chỉ có lịch sử sao đầy đủ của star-history/star-history. Lịch sử thiếu thì không vẽ.

README

Từ GitHub · lưu tạm tối đa 7 ngày

BoxMOT logo

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

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

mikel-brostrom%2Fboxmot | Trendshift


Docs • Installation • Modes • API Reference • Trackers • Datasets • Contributing

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, materialize --time-variant, eval, tune, research, train-reid, eval-reid, compare-reid, export, install, 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 native C++ tracker implementations selected with --tracker-backend cpp, with shared detection/output contracts and documented backend differences. They are also embeddable in standalone C++ projects through CMake (see Native C++ Integration and platform dependency installation).
  • A structured Python API for embedding components and pipelines in applications.

Installation

Requires Python 3.10–3.13.

Install from PyPI:

pip install boxmot "ultralytics>=8.4.58"
boxmot --help

Or, from a source checkout, run in the repository root:

pip install "uv==0.12.4"
uv sync --extra cpu --extra yolo
uv run --no-sync python -m boxmot.engine.cli --help

Replace --extra cpu with --extra cu130 for CUDA 13.0.

See installation options, source and CPU/CUDA setup, and GPU batch sizing.

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

Choose a workflow and settings with the terminal UI:

boxmot ui

Track a webcam from the CLI:

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

Python with axis-aligned boxes (AABB):

import numpy as np

from boxmot import OccluBoost

tracker = OccluBoost()
# x1, y1, x2, y2, confidence, class_id
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

Python with oriented boxes (OBB):

import numpy as np

from boxmot import OccluBoost

tracker = OccluBoost(is_obb=True)
# cx, cy, width, height, angle in radians, confidence, class_id
dets = np.array([[200, 300, 200, 100, np.pi / 6, 0.9, 0]])
frame = np.zeros((480, 640, 3), dtype=np.uint8)  # BGR image
tracks = tracker.update(dets, frame)
print(tracks[:, 5].astype(int))  # track IDs

See the mode guides for more CLI and Python workflows. Advanced examples: capture timing, prompted tracking with EdgeTAM, and 2D/3D fusion with EagerMot.

Track Attributes with Ollama and vLLM

Provider Description Pros Cons
Ollama Easily run vision models locally, with straightforward installation, model downloads, and API access. Simple setup; images stay on your machine when using local models. Large models need substantial RAM/VRAM and disk space; speed depends on your hardware.
vLLM Serve vision-language models on your own infrastructure, with more configuration options for handling many requests efficiently. Efficient batching for concurrent requests; control over models and infrastructure. More setup, tuning, and maintenance; you provide the hardware to run the models.

Add clothing, footwear, and pose descriptions to person tracks with Ollama or vLLM. Display attributes alongside track IDs and export structured JSON results. Every attribute run requires PostgreSQL for its queue and retained results; the Compose workflow starts the database automatically.

See the Track Attributes guide for setup, configuration, and examples. To run detection, ReID, and the VLM on NVIDIA GPUs, use the GPU Compose setup.

License

BoxMOT is licensed under the GNU Affero General Public License v3 (AGPL-3.0).

Each detector and segmentor integrated with BoxMOT retains its own upstream license. See the respective project's license for its terms. Other third-party components also retain their respective licenses and notices.

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