BoxMOT 多目标跟踪完整指南:7 种算法按问题选型
【免费下载链接】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
监控画面里行人一被遮挡,ID 就跳变、跟踪框在相邻帧之间来回闪烁——这是多目标跟踪落地时最常见的两个痛点。BoxMOT(yolo_tracking)把检测器、外观模型、跟踪器做成可插拔组件:检测器只管输出框,7 种主流跟踪算法按场景随意搭配,同时支持轴对齐框(AABB)与旋转框(OBB)两条跟踪路径。
3 行命令跑起来
最短路径是这样的:
git clone https://gitcode.com/GitHub_Trending/bo/boxmot cd boxmot && pip install -e . boxmot track --source video.mp4 --detector yolov8n --reid osnet_x0_25_msmt17 --tracker botsort --save第三行是核心:--source指向视频,--detector选检测器,--tracker选算法,跑完直接得到带标注的视频。场景简单的情况下也可以从 PyPI 直接装boxmot包,不用 clone 源码。
按场景选跟踪算法
与其背名字,不如按"每种算法解决什么问题"来分:
- 遮挡与 ID 跳变:ByteTrack 的关键是把低置信度框也纳入关联,而不是只用高置信框,人群密集时稳定且快;OCSORT 的在线关联擅长短暂丢失后快速重捕获;DeepOCSORT 在 OCSORT 上叠加深度外观特征,重捕更准。
- 相机剧烈运动:BoT-SORT 做相机运动补偿(CMC),镜头晃动时更稳;StrongSORT 再叠加 ECC 背景对齐与外观重识别,ID 一致性更好,代价是速度偏慢。
- 混合场景、不想调参:HybridSORT 融合多种关联策略,遮挡和运动之间自动平衡;BoostTrack 根据场景动态调整内部参数,基本可以免调。
各算法对输入的要求不同(是否需要图像像素、是否必须配外观模型),官方矩阵在 docs/trackers/,每个算法的默认参数与调优元数据放在 boxmot/configs/trackers/。
| 使用场景 | 推荐算法 | 理由 |
|---|---|---|
| 密集监控、高频遮挡 | ByteTrack | 低分框也参与关联,快而稳 |
| 镜头平移 / 手持抖动 | BoT-SORT / StrongSort | 运动补偿加背景对齐 |
| 频繁再遮挡、长序列 | OCSORT / DeepOCSORT | 在线关联,外观特征辅助重捕 |
| 不区分场景直接跑 | HybridSORT / BoostTrack | 多策略自动平衡 |
| 旋转框(OBB)目标 | 上列 9 种框跟踪器均可 | 均支持 OBB 关联 |
不只想跑通,还想度量
CLI 里还带eval、tune、materialize三个子命令:在 MOT17、SportsMOT 这类基准上跑一次即可得到 HOTA / MOTA / IDF1;tune会自动搜索参数组合;materialize把检测结果缓存成 Parquet,后续调参不用反复跑检测。想嵌入自己的应用,结构化 Python API 参考 docs/python/。
选型小结
先问三个问题——相机动不动、目标密不密、遮挡之后能不能容忍换 ID——再对号入座,基本就能定下算法。切换时只改--tracker一个参数,检测器与 ReID 模型原封不动,这正是 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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考