news 2026/9/20 6:07:16

BoxMOT:给任意目标检测模型接上多目标追踪,11 种算法 1 条命令切换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BoxMOT:给任意目标检测模型接上多目标追踪,11 种算法 1 条命令切换

BoxMOT:给任意目标检测模型接上多目标追踪,11 种算法 1 条命令切换

【免费下载链接】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 把目标检测、ReID 外观编码和追踪拆成可独立替换的组件,任何输出边界框的检测、分割或姿态模型都能接上多目标追踪。它内置 ByteTrack、BoT-SORT 等 11 种追踪算法,MOT17 消融集最高 HOTA 达 71.1,且检测与嵌入一次生成、跨算法复用,省去重复推理。

你的场景属于哪一类?按需求挑追踪器

先想清楚你要解决什么,比纠结参数更有效。BoxMOT 的每个追踪器都声明了自己需要哪些输入(运动框、外观嵌入、图像像素、掩膜、3D 框),选错档位会在运行边界直接报错。

只有检测框、想给目标贴稳定 ID:纯运动档

画面里目标清晰、不重叠太多,追求 CPU 上的高帧率。选bytetrackocsort,它们只靠运动模型关联,从不读取图像像素,是成本最低的基线。文档里明确 ByteTrack 是"最快且强的运动基线"。

遮挡多、外观相似会串 ID:运动+外观档

行人互相遮挡、衣服颜色相近,纯运动会频繁断号。选botsortstrongsortdeepocsorthybridsortboosttrackoccluboost,它们额外用 ReID 外观嵌入辅助关联,IDF1 通常更高,代价是每帧多一次外观推理。strongsort还需图像像素做 ECC。

目标带旋转角,正框框不住:OBB 定向框档

航拍、斜视角里目标是斜的,正交框(AABB)框不准。用--geometry obb切到定向框路径,输入改为(cx, cy, w, h, angle, conf, class)。注意 MAF-HDA、EagerMOT 只接受 AABB 图像几何。

要反复评估/调参、不想重跑检测:可复用感知档

调追踪器参数时若每次都重跑检测,时间都浪费在预处理上。用materialize把感知结果发布成带 key 的不可变 Parquet build,之后evaltune都用--build BUILD_ID直接回放。

跑起来:3 步装好并出第一个结果

环境要求 Python 3.10–3.13,默认装 PyPI 上的 PyTorch。下面三步从安装到出结果一气呵成。

第一步,装包并校验 CLI 是否可用:

pip install boxmot # 基础包:CLI、Python API、追踪器、ReID 栈 boxmot --help # 能列出 track/materialize/eval/tune 等子命令即成功

看到--help打印子命令列表,说明命令入口已就绪。

第二步,用 YOLO 检测器时补装对应后端(yoloextra 会拉 Ultralytics 与 YOLOX):

boxmot install --extra yolo

第三步,跑一条最简追踪命令,--source 0是摄像头,换成视频路径或 RTSP 地址即可:

boxmot track --source 0 --detector yolov8n --tracker bytetrack --save --show

--show实时画带 track ID 的框,--save把结果视频写到runs/下。预期会看到摄像头画面里每个行人挂着稳定编号,按q或 Ctrl-C 退出时会打印一份含检测、ReID、追踪各阶段耗时的 Rich 报告。

需要原生 C++ 构建或materialize实验时,源码检出比 pip 更完整:

git clone https://gitcode.com/GitHub_Trending/bo/boxmot

实测数据:MOT17 上哪档够用

下表是 MOT17 消融分割(Python 后端)的官方基准,括号口径为 Python 分数:

追踪器形态HOTAMOTAIDF1
occluboost运动+外观71.1078.5085.28
botsort运动+外观69.6878.2382.33
boosttrack运动+外观69.2575.9183.20
strongsort运动+外观68.0576.1980.76
bytetrack纯运动67.6878.0479.16
ocsort纯运动66.4474.5577.90

读法:追求实时、目标清晰选bytetrack/ocsort(纯运动、最轻);遮挡重、怕断号选外观系,botsort的 MOTA 最高;综合 HOTA 与 ID 一致性看,occluboost三项都靠前,是默认首选。

换种方式调用:CLI、Python API 与原生后端

CLI 只是入口之一。把追踪器当组件嵌入自己的程序,用 Python API 更直接。下面这段直接喂 NumPy 检测与 BGR 图,拿到带 ID 的结果:

import numpy as np from boxmot import OccluBoost # 也可 create_tracker("occluboost", ...) tracker = OccluBoost() # 默认几何 aabb dets = np.array([[100, 200, 300, 400, 0.9, 0]]) # x1,y1,x2,y2,conf,class frame = np.zeros((480, 640, 3), dtype=np.uint8) # BGR 图像 tracks = tracker.update(dets, frame) print(tracks[:, 4].astype(int)) # 第 5 列是 track ID

预期打印出与每条检测对应的整数 ID;OBB 场景把构造改成OccluBoost(is_obb=True)并传 7 列即可。

想复用调好的参数,把--tracker-config指向一个 YAML 就能覆盖内置默认值:

boxmot track --source 0 --tracker botsort --tracker-config path/to/calibrated.yaml

同一追踪器还有原生 C++ 后端,botsortbytetrackocsortoccluboostsfsort--tracker-backend cpp即可,指标与 Python 路径对齐;底层 C++ 库在 boxmot/native/,配置与调参范围在 boxmot/configs/trackers/。

别踩这几个坑:新手最容易配错的 4 个点

⚠️几何类型要和检测器一致。OBB 检测器必须配--geometry obb,AABB 追踪器收到 OBB 框(或反之)会在追踪前被工厂校验直接拒绝,不会默默转。

⚠️分清谁要像素、谁要嵌入。bytetrack/ocsort从不读图像像素;带 ReID 的追踪器需要frame或现成嵌入,strongsort还额外要 ECC 像素。eval时缺这些输入会抛出可操作的 materialization 错误,先补--reid或嵌入再回放。

⚠️变步长时间是实验功能,不是默认。默认 fixed-step 预测;variable_dt只对 8 个 Python 卡尔曼追踪器生效,native C++、SFSORT、MafHda、EagerMot 直接拒绝,且要求每帧时间戳严格递增,用采集时间而非处理耗时。

⚠️一条 pipeline 只服务一条序列。换视频、换分辨率或换序列前必须reset()(CLI 引擎自动处理,嵌入式 Python 调用要自己调pipeline.reset()),否则状态会跨序列串号。


BoxMOT 的价值在于把"检测 → 外观 → 追踪"拆成可插拔组件,让同一份感知结果在 11 种追踪算法间自由切换、可复现评估。深入用法看 docs/index.md,追踪器逐项参数见 docs/trackers/index.md。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 6:07:07

VS Code 配置 Claude Code 完整教程:环境安装、settings.json 与 API 接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 6:07:03

硅光与纳米电子学集成:光电协同芯片的设计与封装实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 6:04:24

虚拟电厂中电转气与碳捕集协同优化调度的Matlab+Cplex实现

拿到这种标题的项目,我第一反应是:这是典型的电力系统优化调度方向的论文级题目,大概率是研究生课题或者毕业设计。凡是碰过虚拟电厂、综合能源、碳捕集这类题目的人都知道,最耗时间的不是模型本身,而是“模型写出来跑…

作者头像 李华
网站建设 2026/9/20 6:03:22

2025年AI技术演进与组织变革深度解析

1. 项目概述"2025 AI现状深度洞察"这个标题背后蕴含着对人工智能技术发展阶段的精准判断。作为一名长期跟踪AI技术落地的从业者,我亲眼见证了AI从实验室走向产业应用的完整历程。2025年将是一个关键转折点——AI技术不再停留在单点应用的试点阶段&#xf…

作者头像 李华