这篇论文的流程为:(也是track by detection的基本流程)
使用faster-RCNN(或其他检测算法)检测第一帧的目标-->将检测的目标经过卡尔曼滤波预测下一帧的轨迹状态(u,v,r,h)-->再使用faster-RCNN检测第二帧的目标-->将检测到的第二帧目标与预测的轨迹状态进行配对,(举个简单例子:例如如果两者IOU接近1,则代表上帧目标与此帧对应成功)-->更新卡尔曼滤波器
重复此过程,其中:faster-RCNN用于帧帧检测目标,卡尔曼滤波用于预测。匈牙利算法(或IOU等方法)用于前后帧数据关联。
数据关联过程参考:https://blog.csdn.net/ycc2011/article/details/84787538
具体的一些细节:
一、追踪(状态估计与轨迹处理:卡尔曼滤波):
(1)状态估计
每个目标在每帧都是有个状态的,作者使用了8维空间(u,v,r,h,x',y',r',h')来表示对应目标所处的轨迹状态。u,v,r,h分别表示目标矩形框的中心点位置,r是长宽比,h是高。剩下四个参数代表目标对应的速度(可以理解成运动目标在前四个参数的运动速度?)。有了这些状态参数,接着使用kalman滤波器对相应目标预测更新轨迹。kalman滤波器采用的为匀速模型和线性观测模型。其观测变量为(u,v,r,h)这四个参数。
(2)轨迹处理
轨迹的出现和停止都需要严格确定,作者使用了一个阈值a来记录轨迹从上一次成功匹配到当前时刻的时长,如果这个时长a大于最大允许阈值Amax,则认为长时间匹配不上的轨迹认为已经结束,终止这段轨迹。
对于在匹配过程中产生的冗余的新轨迹(检测到的目标与轨迹进行首次试探性的匹配),将其标注为'tentative';观察对应目标在接下来连续的几帧内是否能够连续匹配成功,是则认为新轨迹产生,将其标注为'confirmed';如果不能连续匹配成功,则标注为'deleted'。
二、数据关联(匹配问题:匈牙利算法):(这里可以把轨迹理解成目标在不同时刻的位置序列(u,v,r,h))
匹配指的是当前有效轨迹(tentative/confirmed)和当前检测到的目标之间的轨迹。(例如出现一对多和多对一的情况,这就涉及到了匹配问题,如何将两者合理分配的去匹配,使得效率最佳)。这个匹配问题用到了运动信息和表观信息(运动匹配度和表观匹配度)。
运动匹配度:
你使用kalman滤波器对上一帧对应目标的轨迹进行了预测,我得拿这个预测得到的下帧目标轨迹状态和你检测出来的下帧目标轨迹状态(u,v,r,h)进行一个对比呀。这个比较值小于一定值,才能得出下帧检测到的目标是不是对应上帧的那个目标啊(要把上下帧对应目标联系起来,才能达到追踪的效果)。于是就用到了这样一个公式(马氏距离):
d(i,j)表示第j个detection和第i条轨迹之间的运动匹配度;yi表示在当前时刻的预测观测量;dj表示检测到的目标当前轨迹状态。其中是轨迹由kalman滤波器预测得到的在当前时刻观测空间的协方差矩阵
求得了每个检测到的目标对应每条轨迹的‘距离值之后’,给定阈值,筛选出匹配好的出来。
( 但从卡尔曼滤波框架中获得的预测状态分布只提供了对物体的粗略估计位置,所以我们还需要结合外观匹配度)
外观匹配度:
使用马氏距离的缺点就是,你需要频繁的把轨迹和检测到的目标进行比较,然后找到合适的两方进行最优匹配。但这会导致频繁的IDswitch(可能这一帧这两个匹配的好,到下一帧轨迹对应的目标就变化了,目标ID就会相应变换)。
所以我们还要利用到目标的外观信息(形状等?)。作者使用深度网络(见后面的描述)提取detection和轨迹状态中的bounding box包含的外观特征向量,并取他们特征向量之间的最小余弦距离作为检测和轨迹之间的外观相似程度。(轨迹太长,会导致外观发生变化,预测的目标轨迹状态(u,v,r,h)也会发生一些变化,在发生变化后,再使用最小余弦距离作为度量会出问题;所以只对轨迹的前100个匹配进行最小余弦距离度量)。
小结:这两个指标通过服务于分配问题的不同方面来相互补充。一方面,马氏距离对短期预测特别有用。另一方面, 余弦距离考虑的外观信息对于长期目标遮挡之后,能够很好的实现恢复。为了建立关联问题, 我们使用加权和将这两个指标组合在一起:
三、级联匹配(更优化的匹配问题):
例如在实际追踪过程中,当两个由卡尔曼滤波生成的轨迹竞争一个检测到的目标时,马氏距离更有利于那条长期遮挡的轨迹(它会让长期遮挡的这条轨迹和该检测到的目标进行配对;连续的预测不更新会使得协方差矩阵Si会增大,进而对应的马氏距离变小);这样显然是不对的。所以引入级联匹配。这样每次分配的时候考虑的都是遮挡时间相同的轨迹
策略:优先考虑更频繁地看到的对象,在匹配的最后阶段还对unconfirmed和age=1的未匹配轨迹进行基于IOU的匹配。
四、Deep appearance descriptor:
预训练的网络是在大规模ReID数据集上训练得到的,学到的特征很适合行人跟踪。本文使用该预训练网络作为基础网络,构建wide残差网络,用来提取bbox的外观特征。
五、级联匹配过程
总流程:首先是得到下帧的追踪框集合T和下帧的检测框集合D,设置最大的Amax为轨迹最大允许丢失匹配的帧数。通过加权的距离度量公式得到成本矩阵,再通过级联条件,设定阈值分别对外观和位置因素进行计算,满足条件则返回1,否则返回0。然后初始化匹配矩阵为空,初始化未匹配矩阵等于D。然后,通过匈牙利算法,对于每个属于追踪框集合的元素T,在检测框里面查找成本最低且满足阈值过滤条件的检测框作为匹配结果,同时更新匹配矩阵和非匹配矩阵。
参考:
https://www.cnblogs.com/YiXiaoZhou/p/7074037.html
https://zhuanlan.zhihu.com/p/45745892
https://blog.csdn.net/yuhq3/article/details/78857614
Sort算法:
https://blog.csdn.net/Kerrwy/article/details/81034342 (流程理解)