多目标跟踪的SORT算法快是快,就是......
1
什么是跟踪算法?
多目标跟踪(MOT),该任务就是在图像序列中识别运动中的物体,使得不同帧之间同一个物体有着相同的id。
该算法有什么用?
可以进行智能视频监控:自动化检测,如监视某个场景的可疑行为、交通监视,如收集交通实况用于调节交通流动等;
可以用于人机交互,如计算机理解人的手势、姿态等,跟踪是关键技术;
可以用于视觉导航、虚拟现实、医学诊断等领域。
有哪些相关的工作?
相关的工作有如单目标跟踪、目标检测(输入一张图片,识别并定位图片中感兴趣的物体,输出是跟踪的输入)、ReID(是图像检索子问题,根据与查询图片的相似性,降序排列,是目标跟踪中一种有效的外观特征)等。
该算法的一般步骤是什么?
步骤一: 给定视频的原始帧
步骤二:用检测器获得检测框
步骤三:对于检测到的物体,计算不同的特征,通常是视觉和运动特征
步骤四:相似度计算,计算对象属于同一目标的概率
步骤五:关联步骤,为每个对象分配ID
这与之前了解的重识别的步骤大差不差,重识别先是图像和视频的获取,然后将目标标注,再进行特征提取和表达、相似度量的计算,最后检测结果。
即数据准备、识别检测、特征提取、相似度计算、数据关联。
2
简单介绍一下SORT算法
SORT算法于2016年提出,是以检测器作为关键组件,用卡尔曼滤波器预测目标的状态,然后以IoU(预测框和检测框的交并比)作为前后两帧的目标关系度量指标,通过匈牙利算法关联检测框到目标,并管理跟踪目标的生命周期。
SORT算法用一个线性等速模型来近似每个物体的帧间位移,每个目标的状态建模是:X=[u,v,s,r,u’,v’,s’]T
u,v分别表示目标中心的水平和垂直像素位置,s和r表示目标的BBox的尺寸大小和纵横比。而u’,v’,s’就是预测到的结果。
关联检测到目标后,用检测到的边界框更新目标状态,其中速度分量通过卡尔曼滤波器框架进行优化求解。如果没有与目标相关的检测,则使用线性速度模型简单地预测其状态而不进行校正。
怎么理解这里的卡尔曼滤波器呢?
卡尔曼滤波器就是利用数学模型预测的值和测量得到的观测值进行数据融合,找到最优的估计值。
我们现在想获得t帧某一目标准确的检测框,有两种方法。
一种就是用已知的1~t-1中的信息预测出t帧的检测框,一种就是通过检测算法直接预测。
那卡尔曼滤波就是结合两者,进行去噪,先从1~t-1中的信息预测出t帧的检测框,然后对t帧目标检测的基础上结合预测的结果,得到更加准确的检测框。
从本质上说,跟踪算法的核心是解决数据关联问题。SORT使用匈牙利算法进行数据关联。匈牙利算法的任务就是将t-1帧的检测框和t帧的检测框进行匹配。
而匹配就需要一定准则,匈牙利依据的准则是“损失最小”。损失由代价矩阵表示。
这里的代价矩阵为原有目标在当前帧中的预测框和当前帧目标检测框之间的IoU。
得到代价矩阵后使用匈牙利算法对分配进行优化求解。
SORT算法使用卡尔曼滤波处理逐帧数据的关联性以及使用匈牙利算法进行关联度量,这种算法在高帧速率下获得良好的性能。
但由于SORT忽略了被检测物体的表面特征,因此只有在物体状态估计不确定性较低时才会准确。
而且当目标跟丢就无法找回来,只能通过检测重新更新ID,导致同一目标的ID变换频繁,效率虽然很高,但是频繁的id变换对实际应用并不友好,所以又有了后续的DeepSORT。
下次再聊DeepSORT~