本项目使用官方 Ultralytics YOLO 跟踪器,完全对齐官方最佳实践。支持两种主要的跟踪算法:
- BoT-SORT (默认) - 结合 ReID 和全局运动补偿的高精度跟踪器
- ByteTrack - 高效的多目标跟踪算法
更新说明: 项目已完全迁移到官方跟踪器,删除了所有自定义跟踪器实现,确保与 Ultralytics 官方标准完全一致。
cfg/botsort.yaml- BoT-SORT 跟踪器配置cfg/bytetrack.yaml- ByteTrack 跟踪器配置
tracker_type: botsort # 跟踪器类型
track_high_thresh: 0.25 # 第一次关联阈值
track_low_thresh: 0.1 # 第二次关联阈值
new_track_thresh: 0.25 # 新轨迹初始化阈值
track_buffer: 30 # 轨迹缓冲时间
match_thresh: 0.8 # 匹配阈值
fuse_score: True # 是否融合置信度分数gmc_method: sparseOptFlow # 全局运动补偿方法
proximity_thresh: 0.5 # IoU 匹配阈值
appearance_thresh: 0.8 # 外观相似度阈值
with_reid: False # 是否启用 ReID| 特性 | BoT-SORT | ByteTrack |
|---|---|---|
| 精度 | 高 | 中等 |
| 速度 | 中等 | 快 |
| 内存占用 | 中等 | 低 |
| 复杂场景 | 优秀 | 良好 |
| ReID 支持 | 是 | 否 |
| 全局运动补偿 | 是 | 否 |
跟踪结果采用比赛要求的标准格式(10个字段):
帧号,目标ID,边界框左上角X,边界框左上角Y,边界框宽度,边界框高度,目标类别,-1,-1,-1
字段说明:
- 帧号:从0开始的帧序号
- 目标ID:跟踪目标的唯一标识符
- 边界框左上角X:边界框左上角的X坐标
- 边界框左上角Y:边界框左上角的Y坐标
- 边界框宽度:边界框的宽度
- 边界框高度:边界框的高度
- 目标类别:固定为1(代表车辆)
- 最后三个字段:固定为-1
示例:
0,1,712.96,195.25,14.36,13.99,1,-1,-1,-1
0,2,997.47,437.26,7.26,6.31,1,-1,-1,-1
0,3,284.91,792.55,13.09,15.51,1,-1,-1,-1
1,1,714.12,196.08,14.28,13.87,1,-1,-1,-1
1,2,998.15,438.02,7.18,6.25,1,-1,-1,-1
- 调整
track_high_thresh和track_low_thresh以平衡精度和召回率 - 增加
track_buffer可以减少 ID 切换,但会增加内存使用 - 调整
match_thresh影响轨迹关联的严格程度
- 使用 GPU 加速推理
- 适当调整批处理大小
- 考虑使用 TensorRT 或 ONNX 优化
- 小目标场景:推荐使用 BoT-SORT,调低检测阈值
- 实时应用:推荐使用 ByteTrack,优化推理速度
- 高精度要求:使用 BoT-SORT 并启用 ReID
-
跟踪器配置文件找不到
- 确保配置文件路径正确:
/data2/wuyuchen/Tracking_benchmark/cfg/ - 检查文件权限
- 确保配置文件路径正确:
-
ID 频繁切换
- 增加
track_buffer值 - 调低
new_track_thresh - 考虑使用 BoT-SORT
- 增加
-
跟踪精度不高
- 调整检测阈值
- 优化
match_thresh参数 - 检查输入视频质量
-
内存占用过高
- 减少
track_buffer值 - 使用 ByteTrack 替代 BoT-SORT
- 降低输入分辨率
- 减少
如遇到问题,请检查:
- YOLO 模型是否正确加载
- 配置文件路径是否正确
- 输入视频格式是否支持
- GPU 内存是否充足
更多详细信息请参考官方文档: