概述
SORT是一种多目标跟踪算法,可以有效地关联目标,并提升跟踪的实时性。SORT的核心主要是卡尔曼滤波和匈牙利算法的结合版,可以达到较好的跟踪效果。在当时,追踪速度达到了260HZ,相比其他方法速度提升了20倍。
简介
SORT关注的重点是实时跟踪,我们能提供给追踪器的信息主要有两个:过去帧和当前帧。因此可以看作是一个数据关联问题,目的是在视频序列的帧之间关联检测。此外,还要权衡精度和速度,也就是在保证精度的前提下拥有实时性。
从图中可以看出,SORT相比当时的跟踪算法,在保证高准确率的同时,也能拥有较高的检测速度。注:这里的精度计算时,只考虑间检测框的位置和大小,没有添加额外的辅助信息,例如比较外观等等。之前的跟踪器,会包含比较多的组件来对付边界情况或者一些错误异常信息,当目标追踪不到的时候,只能通过检测去重新更新ID找回。
SORT的出发点和它们不同,作者在进行目标跟踪时没有使用任何被跟踪目标的外观特征,而仅仅使用了检测框的位置和大小进行目标的运动估计和数据关联,也没有进行任何的重识别的算法,而是专注于帧与帧之间的匹配,而不是检测错误的鲁棒性。具体来说,SORT采用了卡尔曼滤波和匈牙利算法,分别处理运动预测和数据关联这两个分量。
具体实现
SORT由以下几个部分组成:检测、当前帧到未来帧的转换、当前帧与对象相的关联、管理追踪目标的生命周期。
检测
由于SORT是在16年提出的,当时用的检测框架是two-stage的FasterRCNN检测框架。
预测模型
这里的预测模型,是将目标的标识等信息传播到下一帧。也就是采用一个匀速模型来近似物体的每一帧的位移,这个模型独立于其他物体,也独立于拍摄物体的摄影机的运动。每个目标的状态被建模为:
其中,u和v代表目标中心的x、y坐标,s、r表示bounding box的尺寸(面积)和长宽比。这里的长宽比是固定的,所以前后帧的长宽比都一样,后面的表示下一帧的预测中心的坐标和检测框面积。bounding box用于更新目标状态,其中的速度分量使用卡尔曼滤波进行求解。如果没有和目标关联的检测框,就使用线性的预测模型而不需要修正。
数据关联
为现有的目标分配检测框时,每个目标的边界框形状是通过预测其在当前帧中的新位置估计的。然后计算分配代价矩阵,将其作为目标与检测框之间的交并比(IOU)。如果你不了解IOU的话,可以看一下《IOU、GIOU、DIOU、CIOU损失函数详解》。作者采用了匈牙利算法求解这个问题,此外,如果IOU小于一定的阈值,则拒绝分配检测框。使用IOU的好处是可以隐式解决目标的短期遮挡问题,也就是当目标被遮挡对象覆盖时,只检测遮挡对象,这样的话,只有遮挡在上面的目标是可以分配到检测框的,而被覆盖目标是不受影响的,因为压根就没有给它分配检测框。
创建和删除跟踪标识
当视频中物体刚出现时,给它创建标识。当物体离开画面时,销毁标识。这时需要考虑所有的小于IOU阈值的重叠的检测,代表还有没有被跟踪到的对象。跟踪器初始化为速度为0的bounding box,由于在此时没有速度,速度分量的协方差被初始化为很大的值,用来反映这种不确定性。此外,新的跟踪器会经历一个预热期,在此期,,以积累足够的目标需要与检测相关联的信息,防止错误跟踪。如果跟踪器在一定时长T(实验采用1帧作为时长)内没有被检测到,就会停止追踪,防止跟踪器数量无限增大。之所以把T设置为1,有两个原因,一是实际检测中的物体一般不是匀速运动的,二是论文主要关注点是短时目标追踪。另外,把已经丢失的目标尽早删除可以提升追踪效率。但是,这样做的弊端是目标的ID会频繁改变,计数会出现问题,而且实际跟踪效果也会比较差。