SORT算法
Simple Online and Realtime Tracking(SORT)
是一个非常简单、有效、实用的多目标跟踪算法。在SORT
中,仅仅通过IOU
来进行匹配虽然速度非常快,但是ID switch
依然非常严重。
SORT
最大特点是基于Faster RCNN
的目标检测方法,并利用卡尔曼滤波算法与匈牙利算法,极大提高了多目标跟踪的速度。
SORT
算法核心就是卡尔曼滤波
和匈牙利算法
卡尔曼滤波
卡尔曼滤波被广泛应用于无人机、自动驾驶、卫星导航等领域,简单来说,其作用就是基于传感器的测量值来更新预测值,以达到更精确的估计。
假设我们要跟踪位置变化,如下图所示,蓝色的分布是卡尔曼滤波预测值,红色的分布是传感器的测量值,黄色的分布就是预测值基于测量值更新后的最优估计。
匈牙利算法
匈牙利算法解决的是一个分配问题,在多目标跟踪主要步骤中的计算相似度的,得到了前后两帧的相似度矩阵。匈牙利算法就是通过求解这个相似度矩阵,从而解决前后两帧真正匹配的目标。
SORT核心算法流程
Detections
是通过目标检测器得到的目标框,Tracks
是轨迹信息。核心是匹配的过程与卡尔曼滤波的预测和更新过程。
SORT算法的工作流程如下:
- 目标检测器得到目标框Detections,同时卡尔曼滤波器预测当前的帧的Tracks, 然后将Detections和Tracks进行IOU匹配,最终得到的结果分为:
- Unmatched Tracks,这部分被认为是失配,Detection和Track无法匹配,如果失配持续了T次,该目标ID将从待跟踪目标中删除。
- Unmatched Detections, 这部分说明没有任意一个Track能匹配Detection, 所以要为这个detection分配一个新的track。
- Matched Track,这部分说明得到了匹配。
- 卡尔曼滤波可以根据Tracks状态预测下一帧的目标框状态。
- 卡尔曼滤波更新是对观测值(匹配上的Track)和估计值更新所有track的状态。
总结
作者使用了Faster RCNN来进行模型的检测,并使用Kalman滤波预测状态,基于检测框位置和IOU的匈牙利算法,使得算法有很高的效率,但是这么频繁的ID切换,在实际应用中跟踪的价值会大打折扣!