Deep sort算法论文解读

目录

1 出发点

2 算法思路

2.1 轨迹处理(Track Handing)和状态估计(state estimation):

2.1.1 状态估计:

2.1.2 轨迹处理:

2.2 分配问题

2.2.1 运动信息的关联:

2.2.2 目标外观信息的关联:

2.2.3 两种关联方式的融合:

2.3 级联匹配

3 总体效果


 

1 出发点

Sort跟踪方法是把检测框和跟踪框的IOU情况输入到匈牙利算法中进行线性分配来关联帧间ID的。Deep sort想要把目标的外观信息加入到匹配计算之中,这样在目标被遮挡,后来又出现的情形下,还能够正确匹配ID 从而可以有效减少ID switch频繁的情况。

 

2 算法思路

2.1 轨迹处理(Track Handing)和状态估计(state estimation):

2.1.1 状态估计:

用一个8维空间表示轨迹在某时刻的状态:

其中(u,v)bounding box的中心坐标,r是长宽比,h表示高度。其余四个变量表示对应的在图像坐标系中的速度信息。使用一个基于常量速度模型和线性观测模型的标准kalman滤波器进行目标运动状态的预测,预测的结果为(u,v,r,h)

2.1.2 轨迹处理:

关于跟踪器处理以及新检测结果出现的处理,deep sortsort的做法相同:(回顾一下)

针对跟踪器:

设置计数器,在卡尔曼滤波预测期间递增,一旦跟踪结果和检测结果能够match上,这个trk相对应的计数器就重置为0

如果一个trk在一段时间内一直没能match上检测结果,我们就把这个trk从跟踪器列表trks中删除。

针对新检测结果出现:

当某帧出现新的检测结果的时候(即,出现了与当前跟踪结果无法match的检测结果),我们认为可能出现了新的目标,会为其创建新的跟踪器trk。不过我们需要观察一段时间,如果连续3帧中潜在的新跟踪器对目标位置的预测结果(标记为tentative)都能够与检测结果match,那么则确认是出现了新的目标轨迹(标记为confirmed);如果不能达到该要求,则认为是出现了“虚警”,需要从跟踪器列表trks中删除该trk(标记为deleted)。

 

2.2 分配问题

在分配问题上,sort是把检测框和跟踪框的IOU情况作为输入,采用匈牙利算法,输出检测框和跟踪框的匹配结果。Deep sort同时考虑了运动信息的关联目标外观信息的关联,使用了融合度量的方式计算检测和跟踪轨迹之间的匹配程度。

2.2.1 运动信息的关联:

Deep sort使用检测框与跟踪器预测框之间的马氏距离来描述运动关联程度。 

其中,dj表示第j个检测框的位置,yi表示第i个跟踪器对目标的预测位置,Si表示检测位置与平均跟踪位置之间的协方差矩阵。也就是说,马氏距离通过计算检测位置和平均跟踪位置之间的标准差将状态测量的不确定性进行了考虑。

并且,deep sort通过以从逆χ2分布计算得来的95%置信区间对马氏距离进行阈值化处理。

如果某次关联的马氏距离小于指定的阈值t(1),则设置运动状态的关联成功。对于我们的四维测量空间,相应的Mahalanobis阈值为t (1) = 9.4877

2.2.2 目标外观信息的关联:

当运动的不确定性很低的时候,上述的马氏距离匹配是一个合适的关联度量方法,但是在图像空间中使用kalman滤波进行运动状态估计只是一个比较粗糙的预测。特别是相机存在运动时会使得马氏距离的关联方法失效,造成ID switch的现象。

因此作者引入了第二种关联方法,对每一个的检测块dj求一个特征向量rj (通过CNN网络计算对应的128feature向量rj),限制条件是||rj||=1。作者对每一个跟踪目标构建一个gallary,存储每一个跟踪目标成功关联的最近100帧的特征向量。那么第二种度量方式就是计算第i个跟踪器的最近100个成功关联的特征集与当前帧第j个检测结果的特征向量间的最小余弦距离。计算公式为:(注意:轨迹太长,导致外观发生变化,发生变化后,再使用最小余弦距离作为度量会出问题,所以在计算距离时,轨迹中的检测数量不能太多)

如果上面的距离小于指定的阈值,那么这个关联就是成功的。阈值是从单独的训练集里得到的。

2.2.3 两种关联方式的融合:

使用两种度量方式的线性加权作为最终的度量:

注意:只有当两个指标都满足各自阈值条件的时候才进行融合。

距离度量对短期的预测和匹配效果很好,但对于长时间的遮挡的情况,使用外观特征的度量比较有效。

作者指出,对于存在相机运动的情况,可以设置λ=0。但是,马氏距离的阈值仍然生效,如果不满足第一个度量的标准,就不能进入Cij的融合阶段。

2.3 级联匹配

当一个目标长时间被遮挡之后,kalman滤波预测的不确定性就会大大增加,状态空间内的可观察性就会大大降低。

假如此时两个跟踪器竞争同一个检测结果的匹配权,往往遮挡时间较长的那条轨迹因为长时间未更新位置信息,追踪预测位置的不确定性更大,即协方差会更大,马氏距离计算时使用了协方差的倒数,因此马氏距离会更小,因此使得检测结果更可能和遮挡时间较长的那条轨迹相关联,这种不理想的效果往往会破坏追踪的持续性。

这么理解吧,假设本来协方差矩阵是一个正态分布,那么连续的预测不更新就会导致这个正态分布的方差越来越大,那么离均值欧氏距离远的点可能和之前分布中离得较近的点获得同样的马氏距离值。

所以,作者使用了级联匹配来对更加频繁出现的目标赋予优先权。以下是步骤:

T是物体跟踪集合

D是物体检测集合

1.C矩阵存放所有物体跟踪i与物体检测j之间距离的计算结果

2.B矩阵存放所有物体跟踪i与物体检测j之间是否关联的判断(0/1)

3.关联集合M初始化为{}

4.将找不到匹配的物体检测集合初始化为D

5.从刚刚匹配成功的跟踪器循环遍历到最多已经有Amax 次没有匹配的跟踪器

6.选择满足条件的跟踪器集合Tn

7.根据最小成本算法计算出Tn与物体检测j关联成功产生集合[xi,j]

8.更新M为匹配成功的(物体跟踪i,物体检测j 集合

9.U中去除已经匹配成功的物体检测j

10.循环

11.返回 M U 两个集合

 

级联匹配的核心思想就是由小到大对消失时间相同的轨迹进行匹配,这样首先保证了对最近出现的目标赋予最大的优先权,也解决了上面所述的问题。

在匹配的最后阶段还对unconfirmedage=1的未匹配轨迹进行基于IoU的匹配。

这可以缓解因为表观突变或者部分遮挡导致的较大变化。

当然有好处就有坏处,这样做也有可能导致一些新产生的轨迹被连接到了一些旧的轨迹上。但这种情况较少。

 

3 总体效果

在行人重识别数据集上离线训练模型,学到的特征很适合行人跟踪。输入128维的归一化的特征。在GTX1050m显卡上,输入30bounding box提取特征的时间约为30ms

相对于SORT只用相邻帧进行匹配来说,Deep SORT允许高达30帧的丢失,而Kalman的等速运动模型没有改变,这主要造成了FP的升高。

 

 

参考:

https://www.cnblogs.com/YiXiaoZhou/p/7074037.html

http://www.cnblogs.com/yanwei-li/p/8643446.html

https://blog.csdn.net/zjc910997316/article/details/83721573

https://blog.csdn.net/cdknight_happy/article/details/79731981

  • 35
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值