卡尔曼滤波
卡尔曼滤波用当前时刻运动变量去预测下一时刻的运动变量,检测器第一次的检测结果用来初始化卡尔曼滤波的运动变量,后续的结果作为更新。在信号处理中卡尔曼滤波是去除噪声的一个算法,作用是使用信号更加的准确。在SORT中的,因为检测器可能会不准确,将目标跟踪算法得到的目标位置进行滤波,卡尔曼滤波使得结果更准确。
卡尔曼滤波共有预测和更新两部分组成,其中预测部分通过上一时刻状态预测这一时刻状态,其中没有添加观测值,并不是最佳的观测值。更新部分,添加了当前的观测值,经过更新后的值为最佳估计值。
卡尔曼滤波通过上一时刻的检测值,得到这一时刻的估计值,使用这一时刻的检测值修正得到最优估计值。
匈牙利匹配
匈牙利匹配是用来求二分图最优匹配问题,首先会建立一个图,其中有当前帧t=1 和前一帧t=0 的节点。然后计算两帧节点互相的距离,易得这个距离越小,那么当前帧的物体与前一帧相同的概率越大。
在SORT中匈牙利匹配解决的是分配问题,把当前帧检测器的检测框和上一帧卡尔曼滤波的预测框做匹配,将卡尔曼预测的框找到和检测器最匹配的框,进行IOU匹配,在通过IOU匹配结果计算代价矩阵,作为代价矩阵(1-IOU),代价矩阵作为匈牙利算法的输入,得到线性结果(最佳匹配结果)。
SORT工作流程
SORT算法流程:简单的来说SORT就是将卡尔曼滤波预测的结果和检测器预测的结果用匈牙利算法进行匹配,将不同的匹配状态执行不同的操作,并将结果迭代更新,SORT流程图。
(1)第一帧进来检测器进行检测,SORT根据检测器的结果初始化生成N个追踪器,每个目标生成一个唯一ID。
(2)第二帧进来检测器进行检测,先从卡尔曼滤波中得到由第一帧BBOX产生的状态预测和协方差预测,计算跟踪器生成的所有目标状态预测框和检测器检测框的IOU,通过匈牙利匹配算法得到IOU最佳匹配(目标的框子之间是否匹配)。
(3)匹配到检测器BBOX的去更新卡尔曼跟踪器,计算卡尔曼增益、状态更新矩阵和协方差矩阵更新,并将状态更新输出,作为本帧的跟踪BBOX。
(4)对于本帧中没有匹配到的目标,重新初始化跟踪器或者删除最追踪器。
SORT匹配状态
(1)Unmatched Tracks
如果检测器和追踪器不匹配(这帧目标多,下帧目标少),则删除已有追踪器。
(2)Unmatched Detections
如果检测器和追踪器不匹配(这帧目标少,下帧目标多),则生成新的追踪器。
(3)Matched Tracks
如果检测器和追踪器匹配轨迹成功,则进行卡尔曼更新,持续绑定ID。
参考资料:
https://blog.csdn.net/zimiao552147572/article/details/106009021
https://zhuanlan.zhihu.com/p/494453670
https://blog.csdn.net/qq_40608730/article/details/118710715
https://blog.csdn.net/yiran103/article/details/89421140
https://zhuanlan.zhihu.com/p/419270159
https://zhuanlan.zhihu.com/p/571623539
https://zhuanlan.zhihu.com/p/459758723