BOT-SORT 是一种用于多目标跟踪(MOT, Multi-Object Tracking)的算法,旨在提高跟踪的鲁棒性和准确性。它结合了目标检测与关联策略,通过优化跟踪框架中的排序和分配过程来实现高效跟踪。以下是 BOT-SORT 的详解:
1. 算法背景
多目标跟踪问题的核心是对视频帧中的目标进行准确检测,并在连续帧中维持目标身份的一致性。传统方法可能在快速移动的目标、遮挡以及检测精度不高时表现较差。BOT-SORT 的设计着重于以下两个关键点:
- 目标检测的可靠性:基于高性能目标检测模型(如 YOLO 系列或 Faster R-CNN)的结果。
- 关联算法的优化:采用 Kalman 滤波和匹配策略,提升目标分配的精度。
2. 创新点
改进一:Kalman Filter
相比于DeepSORT区别:1. 状态向量中直接输出宽高;2.噪声Q与R与时间有关(SORT中Q与R与时间无关,但是DeepSORT中与时间有关)
结果:较高的 HOTA,KF输出框更加准确
改进二:相机运动模型CMC
基于检测的跟踪 严重依赖于轨迹预测框和检测框之间的overlap
改进三:IOU-ReID融合:
ReID采用 指数移动平均(EMA) 更新轨迹外观状态
运动(IOU距离矩阵) 与 外观(余弦距离矩阵) 信息合并
将低余弦相似性或距离(IoU)远的候选删除。使用每个元素的最小者
3. 核心思想
BOT-SORT 提出了一种基于 排序增强的匹配策略,通过融合多个特征(位置、外观、运动)提高目标匹配的精度。主要包含以下模块:
(1) 目标检测
BOT-SORT 依赖高性能目标检测器,确保每一帧中的目标检测结果(Bounding Box)足够准确。检测结果通常包含:
- 检测框位置 [x,y,w,h]
- 检测置信度 c
(2) 状态预测
通过 Kalman 滤波预测目标在当前帧的位置和运动状态。状态包括:
- 位置和速度
- 状态更新利用上一帧的匹配结果和检测结果。
(3) 外观特征提取
BOT-SORT 使用预训练的深度学习模型(如 ReID 网络)提取目标的外观特征。特征向量用于衡量目标之间的相似性,解决遮挡和快速移动导致的跟踪丢失问题。
(4) 匹配策略
- 采用 级联排序匹配 (Cascade Matching):优先匹配高置信度目标和状态一致的目标。
- 距离计算融合了多种度量方法,包括:
- 位置距离(IoU):衡量两个检测框重叠的程度。
- 外观相似性(Cosine Similarity):衡量两目标外观特征的相似性。
- 运动一致性:利用 Kalman 滤波预测目标运动趋势。
(5) 身份维护
- 对未匹配的目标进行新身份分配或丢失目标回收。
- 采用轨迹管理策略防止短暂丢失目标被误删除。
4. 主要流程
以下是 BOT-SORT 的完整工作流程:
- 检测器获取目标检测结果。
- 预测跟踪器的状态(通过 Kalman 滤波)。
- 提取检测目标的外观特征。
- 进行多级匹配:
- 首先根据 IoU 匹配最近的目标。
- 再使用外观特征补充匹配。
- 更新跟踪器状态:
- 已匹配目标:更新位置、速度、外观。
- 未匹配目标:根据其连续帧丢失状态决定新增或删除。
- 输出最终的跟踪结果。
5. 优势与特点
- 高鲁棒性:融合了多种特征(位置、外观、运动),在目标遮挡或快速移动情况下依然有良好表现。
- 高效率:借助级联匹配减少计算量,提高实时性。
- 模块化设计:易于集成其他目标检测器或特征提取模型。
- 适配性强:能够在不同视频场景(交通、行人等)中获得较好表现。
6. 应用场景
BOT-SORT 广泛应用于以下场景:
- 智能交通监控:车辆跟踪与行驶轨迹分析。
- 安全监控:人员轨迹跟踪与行为分析。
- 体育视频分析:运动员动作和轨迹记录。
7. 伪代码
8. 与 SORT 的对比
BOT-SORT 是对经典 SORT 算法的改进,其关键区别在于:
- BOT-SORT 添加了外观特征匹配。
- BOT-SORT 改进了匹配策略,提升了遮挡情况下的鲁棒性。
参考
https://github.com/NirAharon/BoT-SORT
https://blog.csdn.net/ganbelieve/article/details/125787612
https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/126945400