mikel-brostrom/boxmot
BoxMOT: Pluggable Python and C++ SOTA multi-object tracking modules with support for axis-aligned and oriented bounding boxes
BoxMOT – 可插拔多目标跟踪库
简介 BoxMOT 是一个 Python(以及可选的 C++)库,允许你在任何目标检测器之上构建、运行和评估多目标跟踪器(MOT)。它提供简洁、模块化的 API,其中四个主要部分——检测器、分割掩码、外观编码器(Re‑ID)和跟踪器——可以独立替换。该库附带用于常见工作流(跟踪、评估、调参、数据集生成等)的命令行界面(CLI)以及用于在代码中集成跟踪器的 Python API。
主要特性
| 特性 | 重要性 |
|---|---|
| 统一 CLI | 单一入口点(boxmot)涵盖跟踪、评估、超参数调优、Re‑ID 训练、数据集导出等功能,减少了拼接单独工具的需求。 |
| 可插拔组件 | 检测器(例如 YOLO 变体)、分割器、Re‑ID 编码器和跟踪器可通过简单标志自由组合,实现快速实验。 |
| AABB 和 OBB 支持 | 处理轴对齐边界框(AABB)和旋转边界框(OBB),适用于物体旋转的航拍或体育视频。 |
| 原生 C++ 后端 | 可选的高性能 C++ 实现(--tracker-backend cpp)可使用,并通过 CMake 集成到其他 C++ 项目中。 |
| 不可变 Parquet 构建 | 检测、掩码和嵌入存储在带键的 Parquet 文件中,使数据集可复现并跨实验复用。 |
| 广泛的基准表 | README 中列出了许多内置跟踪器(例如 occluboost、botsort、bytetrack)在 MOT17、SportsMOT 和 MMOT OBB 数据集上的 HOTA、MOTA 和 IDF1 分数。 |
| Python API | 示例展示了创建跟踪器(OccluBoost)并输入 NumPy 检测结果和 BGR 帧以获取跟踪 ID,支持可选的 OBB 模式。 |
| 安装 | pip install boxmot 适用于 Python 3.10‑3.13;提供额外配置文件(yolo、service、onnx 等)用于 GPU 或 CPU 构建。 |
| 社区与支持 | Discord、GitHub Discussions,以及为非营利保护项目提供有限的免费咨询。 |
典型用法
# 使用 YOLO‑v2 检测器、Re‑ID 模型和 OccluBoost 跟踪器从网络摄像头跟踪
boxmot track \
--detector yolo26n \
--reid lmbn_n_duke \
--tracker occluboost \
--source 0 --save --show
from boxmot import OccluBoost
import numpy as np
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 图像
tracks = tracker.update(dets, frame)
print(tracks[:,4].astype(int)) # 跟踪 ID
适用人群
- 需要可复现流程来原型制作新 MOT 算法的研究人员。
- 需要快速 C++ 后端部署实时跟踪(例如野生动物监测、体育分析)的实践者。
- 需要在标准 MOT 基准上评估多个跟踪器的统一接口的任何人。
了解更多
- 完整文档:
docs/(安装、模式、API 参考、跟踪器列表)。 - 基准结果和实验指南见 README 表格和
docs/guides/。 - 通过 Discord 或 GitHub Discussions 获取社区帮助。
相关
- 项目
- 项目
- 项目
- 项目
- 项目