3 分钟上手 BoxMOT:给任意检测模型装上多目标追踪的开源方案
【免费下载链接】boxmotBoxMOT: Pluggable Python and C++ SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot
BoxMOT 是一个插件式多目标追踪(MOT)工具包,把 ByteTrack、BoT-SORT、DeepOcSORT 等主流追踪器做成了可插拔模块。你的检测、分割或姿态模型只要输出边界框,就能立刻接上追踪,获得稳定的目标 ID。它同时支持 Python 与 C++ 双实现,覆盖 MOT17、MOT20、DanceTrack 等基准的本地评估,适合想快速验证追踪效果的新手和研究团队。
🚀 安装依赖与快速开始
环境要求很简单:Python 3.10 ~ 3.13,一条命令装完所有依赖:
pip install boxmot装好后用这条最简命令打开摄像头做实时追踪,几秒钟就能看到带 ID 的框:
boxmot track --source 0 --detector yolo26n --reid lmbn_n_duke --tracker occluboost --show如果你更喜欢从源码开始(方便贡献或定制),可以克隆仓库:
git clone https://gitcode.com/GitHub_Trending/bo/boxmot跑通第一条命令后,boxmot --help里的每个子命令都值得点开看一眼:track、eval、tune、export、materialize 都围绕同一套组件体系设计,互相之间可以复用检测结果。
📊 追踪器性能对比与选型建议
仓库在 MOT17 ablation、SportsMOT、MMOT OBB 三个基准上给出了各追踪器的实测指标(括号为 C++ 后端的分数),整理如下:
| Tracker | MOT17 HOTA | MOT17 MOTA | MOT17 IDF1 | 外观嵌入支持 | 适合场景 |
|---|---|---|---|---|---|
| occluboost | 71.10 | 78.50 | 85.28 | 可选 | 追求最高精度,GPU 资源充足 |
| botsort | 69.68 | 78.23 | 82.33 | 可选 | 通用首选,精度与工程成熟度均衡 |
| boosttrack | 69.25 | 75.91 | 83.20 | 可选 | 遮挡复杂场景,ID 保持能力强 |
| strongsort | 68.05 | 76.19 | 80.76 | 必须 | 有 ReID 模型时想验证经典方案 |
| deepocsort | 67.95 | 75.83 | 80.54 | 可选 | 遮挡处理,DeepSORT 的增强路线 |
| bytetrack | 67.68 | 78.04 | 79.16 | 不需要 | 纯 CPU、追求极致帧率 |
| ocsort | 66.44 | 74.55 | 77.90 | 不需要 | 轻量基线,快速对比参考 |
选型上可以这样简化:
- 要精度:直接用 occluboost 或 botsort,前者 MOT17 三项指标都是第一。
- 要速度:bytetrack 和 ocsort 不依赖外观嵌入,纯运动关联,在 CPU 上也能跑出很高 FPS。
- ID 频繁切换:boosttrack 的 IDF1 很高,适合目标互相遮挡频繁的监控、赛事画面。
每个追踪器的参数说明都在 docs/trackers/ 目录下,想深入某一种算法时按名找对应文档即可。
🛠️ 常用场景实操
实时追踪摄像头或视频
track子命令是日常用得最多的入口,--source支持摄像头编号、视频文件、图片、目录或 URL:
boxmot track --source video.mp4 --detector yolov8n \ --reid osnet_x0_25_msmt17 --tracker botsort --save--save会把结果视频写到 runs 目录;--device cuda:0可指定 GPU。
效果评估
eval负责在标准数据集上打分。比如复现 MOT17 ablation 分割上的 botsort 结果:
boxmot eval --dataset mot17 --split ablation \ --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort也有仓库自带的迷你数据集可以直接跑通流程,数据在 assets/ 目录下,例如 MOT17-mini。检测结果和外观嵌入会缓存下来,之后换追踪器评估时无需重复推理。
超参调优
追踪器的 IoU 阈值、最大缺失帧数等参数对最终指标影响不小。tune子命令用多目标进化算法自动搜索,把最优组合写回配置文件:
boxmot tune --dataset mot17 --split ablation \ --detector yolox-x-mot17 --reid lmbn-n-duke --tracker botsort --n-trials 200导出 ReID 模型
需要部署到边缘设备时,可以把 ReID 权重导出成 ONNX、OpenVINO 或 TensorRT 格式:
boxmot export --weights osnet_x0_25_msmt17.pt --include onnx --device cpu📚 资源与延伸阅读
- 官方文档入口:docs/index.md,按模式组织的命令手册在 docs/modes/
- 各追踪器原理与参数详解:docs/trackers/
- 追踪器实现源码:boxmot/trackers/,公共基础设施在
common/子目录 - 数据集配置(MOT17/MOT20/DanceTrack/SportsMOT 等):boxmot/configs/datasets/
- 示例笔记本:Torchvision 检测追踪在 examples/det/torchvision_boxmot.ipynb,姿态与分割追踪同理放在 examples 对应子目录
- 贡献与测试流程:CONTRIBUTING.md
跑通第一条boxmot track命令之后,建议先拿迷你数据集做一次eval,建立对 HOTA、MOTA、IDF1 三个指标的直观感受,再去调参,效率会高很多。
【免费下载链接】boxmotBoxMOT: Pluggable Python and C++ SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考