• SORT追踪


    卡尔曼滤波
    卡尔曼滤波用当前时刻运动变量去预测下一时刻的运动变量,检测器第一次的检测结果用来初始化卡尔曼滤波的运动变量,后续的结果作为更新。在信号处理中卡尔曼滤波是去除噪声的一个算法,作用是使用信号更加的准确。在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

  • 相关阅读:
    Java基础面经1
    正则表达式每个字符的学习
    vue根据文字长短展示跑马灯效果
    [附源码]Python计算机毕业设计Django教育企业网站
    Redis入门到通关之数据结构解析-ZipList
    Github相关知识
    Java BufferedOutputStream类的简介说明
    git 删除分支
    Caffeine 源码、架构、原理(史上最全,10W字 超级长文)
    【lwip】11-UDP协议&源码分析
  • 原文地址:https://blog.csdn.net/threestooegs/article/details/127930287