SORT与DeepSORT多目标跟踪原理
SORT和DeepSORT是多目标跟踪领域最经典的算法。请解释SORT的卡尔曼滤波+匈牙利匹配框架,以及DeepSORT如何引入ReID特征改善ID切换。
回答
专业代码师
SORT(Simple Online and Realtime Tracking)由Bewley等人于2016年提出,追求速度与简洁;DeepSORT是其改进版。
SORT核心框架——卡尔曼滤波+匈牙利匹配:
-
状态估计:
- 每个目标的状态用7维向量表示:[u, v, s, r, u̇, v̇, ṡ],其中(u,v)为中心坐标,s为面积,r为宽高比。
- 使用恒定速度模型(Constant Velocity Model)的卡尔曼滤波预测下一帧中的状态。
-
数据关联(匈牙利匹配):
- 计算预测框与检测框之间的IoU,作为匹配代价。
- 使用匈牙利算法找到最优匹配。
- 设置IoU阈值(如0.3),低于阈值的匹配被拒绝。
-
目标管理:
- 创建:检测到的新目标若连续匹配到检测框则确认。
- 删除:未匹配到的目标经过T_loss次仍未匹配则删除。
- 优点:简单快速,260+ FPS。
- 缺点:仅依赖IoU,目标ID切换次数多(尤其遮挡时)。
DeepSORT改进(2017):
-
外观特征嵌入(ReID):
- 使用一个独立的CNN网络提取检测框内目标的外观特征(128维)。
- 在线维护每个轨迹的特征集合(最近100帧的外观特征)。
-
级联匹配(Cascade Matching):
- 第一级:基于外观特征余弦距离的匹配(使用马氏距离约束运动一致性)。
- 第二级:对未匹配的轨迹使用IoU匹配。
- 匹配代价为运动马氏距离和外观余弦距离的加权和。
-
效果:
- ID切换次数大幅减少(约45%改善)。
- 对遮挡和长时间丢失后重检测的鲁棒性增强。
- 速度仍可达40+ FPS。