即插即用的多目标跟踪(MOT)Python库,提供SORT和ByteTrack等经典算法的模块化实现。采用检测器无关设计,可配合任意目标检测模型(YOLO、DETR等)使用,支持视频文件、摄像头、RTSP流等多种输入源。提供统一CLI工具与Python API,内置CLEAR、HOTA、Identity等标准MOT评估指标计算功能。
项目概述#
Roboflow Trackers 是 Roboflow 推出的多目标跟踪(MOT)工具包,核心定位是将跟踪逻辑与检测模型解耦。通过提供整洁、模块化的算法重实现,解决了跟踪算法碎片化和集成复杂度高的问题。
核心算法#
已支持算法#
- SORT:Simple Online and Realtime Tracking,基于卡尔曼滤波与匈牙利算法的经典实时跟踪方案
- ByteTrack:利用低分检测框改善遮挡情况下跟踪性能的先进算法
计划支持#
- OC-SORT、BoT-SORT、McByte(官网标注 Coming soon)
功能特性#
输入源支持#
- 视频文件(.mp4、.avi)
- 摄像头索引
- RTSP 流
- 图像目录
可视化输出#
支持绘制 Bounding Box、Mask、轨迹、ID、置信度、标签等多种标注元素,输出带标注的视频文件或实时预览。
评估能力#
针对 ground truth 计算标准 MOT 指标:
- CLEAR 指标系列
- HOTA(Higher Order Tracking Accuracy)
- Identity 相关指标
安装方式#
# 基础安装(仅跟踪功能)
pip install trackers
# 完整安装(含 Roboflow 推理模型支持)
pip install trackers[detection]
环境要求:Python >= 3.10
快速上手#
CLI 使用#
# 默认配置处理视频
trackers track --source video.mp4 --output output.mp4
# 指定模型与跟踪器
trackers track --source video.mp4 --output output.mp4 \
--model rfdetr-medium \
--tracker bytetrack \
--show-trajectories
# 评估跟踪结果
trackers eval --gt-dir data/gt --tracker-dir data/trackers --metrics CLEAR HOTA Identity
Python API#
import cv2
import supervision as sv
from inference import get_model
from trackers import ByteTrackTracker
model = get_model("yolov8n-640")
tracker = ByteTrackTracker()
for frame in video_frames:
result = model.infer(frame)[0]
detections = sv.Detections.from_inference(result)
tracked_detections = tracker.update(detections)
# tracked_detections 现在包含 tracker_id
关键配置参数#
跟踪器参数#
| 参数 | 默认值 | 说明 |
|---|---|---|
--tracker | bytetrack | 选择算法(bytetrack/sort) |
lost_track_buffer | 30 | 无检测帧保留缓冲,提高遮挡鲁棒性 |
track_activation_threshold | 0.25 | 启动新轨迹的置信度阈值 |
minimum_consecutive_frames | 3 | 确认轨迹所需的连续检测数 |
minimum_iou_threshold | 0.3 | 匹配检测与轨迹的最小 IoU |
检测器参数#
| 参数 | 说明 |
|---|---|
--model | 模型名称(rfdetr-nano/small/medium/large) |
model.confidence | 检测置信度阈值(默认 0.5) |
model.device | 设备选择(auto/cpu/cuda/mps) |
架构设计#
trackers/
├── core/ # 核心算法实现
│ ├── base.py # 基类定义
│ ├── bytetrack/ # ByteTrack 实现
│ └── sort/ # SORT 实现
├── eval/ # 评估逻辑
├── scripts/ # CLI 入口
├── annotators/ # 可视化工具
├── io/ # 输入输出处理
├── motion/ # 运动模型
└── utils/ # 工具函数
设计要点:
- 检测器无关:核心接口
tracker.update(detections)接受标准化检测对象 - 与 supervision 生态深度集成,数据结构完全兼容
- 通过 jsonargparse 实现灵活的 CLI 参数解析
适用场景#
- 视频流实时目标跟踪(监控、安防)
- 体育赛事或行为分析(SoccerNet、SportsMOT 数据集)
- 机器视觉流程中需要维持目标 ID 一致性的场景
- 对比评估不同 MOT 算法性能的研究任务