论文地址:https://arxiv.org/abs/1703.07402v1
论文代码:https://github.com/nwojke/deep_sort
论文浅谈
Introduction
Deep SORT是基于检测跟踪方式(tracking-by-detection),检测结果的好坏直接影响了算法的性能。Deep SORT是在SORT的基础之上,融合了目标的运动信息和深度表表观特征来解决SORT在目标受到长时间遮挡而造成的ID Switch问题,ID Switch的下降也是这篇文章相比于SORT最为突出的改善点。
文中提到的使用了一个被训练的CNN网络在一个大规模再识别数据集上识别行人,这里其实是通过一个被训练的卷积神经网络来提取数据集中目标的深度表观特征,当然,你也可以自己去训练网络,但是作者在Github上给出了选练好的模型和数据。
SORT with deep association metric
Track Handling and State Estimation
文中将轨迹定义在了一个8维空间上,其实是用一个8维空间向量来刻画track在某个时刻的状态信息,然后用卡尔曼滤波器去跟踪目标的状态,这里主要完成两个工作:
- 预测track在下一帧中的位置信息
- 基于detection和下一帧的track更新预测位置
在目标追踪过程中,卡尔曼滤波需要估计track的两个状态:
- 均值(Mean):表示了目标的位置信息,用一个8维向量表示
- 均方差(Covariance):表示了目标的不确定性信息,用一个8*8矩阵表示
Assignment Problem
分配问题是解决上述处理中有效的tracks和当前的detections的匹配问题(tracks是由卡尔曼滤波预测得到,detections是由CNN网络提取得到),解决匹配问题的三种方式:运动匹配、表观匹配和级联匹配。
运动匹配
使用当前帧中的detections和卡尔曼滤波预测的tracks之间的马氏距离来刻画运动匹配程度。
表观匹配
单独使用马氏距离作为匹配度量,会导致在相机大幅度移动时出现ID Switch严重情况,这是因为大幅移动导致马氏距离失效即不准确性。计算detections和tracks包含detections的特征向量之间的最小余弦距离来刻画表观匹配程度。
但是,当tracks太长导致表观产生变化,将这种最小余弦量单独作为匹配度量也是有风险的,所以文中将运动匹配度和表观匹配度进行加权平均得到两种度量的融合。其实就是运动度量对于短预测和匹配效果比较好,而表观度量对于长时间的 丢失轨迹效果比较好,要根据具体的数据集进行不用的加权。
级联匹配
级联匹配被提出来解决轨迹被长时间的遮挡而导致的卡尔曼滤波的弥散问题,这种级联方式的目的是调整了分配的优先级,其实是将detection分配给最频繁出现的track对象。文中给出的算法流程图如下:
Deep Appearance Descriptor
使用一个在ReID数据集上训练得到的网络来得到深度表观描述信息,这在作者的Github上提供预训练网络,使用提供的脚本运行生成数据特征。
Experiments&Conclusion
这里要注意的是文中使用的detections并不是公共数据集,只是在生成detections时使用了MOT16数据集,所以Deep SORT在ID Switch上优异性是建立在良好的detections的基础之上的。