转载请标明链接: http://www.cnblogs.com/yanwei-li/p/8683933.html
网上已有很多关于 MOT 的文章, 此系列仅为个人阅读随笔, 便于初学者的共同成长若希望详细了解, 建议阅读原文
本文是 tracking by detection 方法进行多目标跟踪的文章, 最大的特点是使用了 state-of-the-art 的 detection 和 feature 来代替以往的方法, 使用简单的匹配方法就能达到最好的水平
论文地址: https://arxiv.org/pdf/1610.06136.pdf
Detection 以及 Appearance 特征地址(Google Drive 需 FQ): https://drive.google.com/open?id=0B5ACiy41McAHMjczS2p0dFg3emM
文章方法:
Detection 部分
文章针对 MOT16 所使用的 MOTA 指标中的 FP 与 FN, 使用 Faster R-CNN + Skip pooling + multi-region 的方法来结合多尺度特征, 从而降低 FP 与 FN
Appearance 特征部分
使用类似于 GoogLeNet 的网络来提取 128 维的特征, 并使用 cosine 距离来度量表观特征(与之前 SORT 文章所使用的方法类似);
结合 Softmax 和 Triplet loss 来训练网络其中 Softmax loss 用于保证 appearance 特征有良好的判别性, Triplet loss 用来保证同一 ID 内的 cosine 距离足够小(这里与 SORT 不同的是使用了 Triplet loss 来减小类内的 cosine 距离, 相当于在 training 过程中使得特征更加针对于 MOT 的任务)
Online Tracker
使用 Kalman 滤波来预测 track, 使用 Kuhn-Munkres 算法来进行结合 track 和 detection (与 SORT 类似, 不同的是 SORT 使用了 Hungarian 算法来匹配), 具体步骤见下:
构造相似度矩阵
计算 track 和 detection 间的关联度矩阵
At1 = Affinity(Tt1,Dt)
计算时结合运动 (affmot), 形状(affshp), 和外观(affapp) 的关联度作为最后的关联度矩阵, 具体计算如下:
匹配 track 和 detection
使用 Kuhn-Munkres 算法来匹配 track 和 detection 由于 KM 算法是全局优化算法, 在一些 detection 遗失时会出错因此我们使用两步匹配的策略, 首先根据阈值 Tt=0.5 将 track 分为高质量的 track 和低质量的 track(大于阈值为高质量, 小于为低质量); 然后首先匹配高质量的 track 和 detection, 再匹配前一步剩下的和低质量的 trackTrack 的质量计算如下, 其中
couples(trackleti)
包含了过往的所有匹配成功的
track 与 detection 的关联度:
具体流程
具体流程见下表, 其中
- w
- 1
- =0.5
- , w
- 2
- =1.5
- , w
- 3
- =1.2
, τ
t
=0.5
, τ
a
=0.4,
τ
m=100
4. Offline Tracker
Offline Tracker 是基于
H2T 的改进版本, 主要使用了 K-Dense Neighbors 搜索算法, 具体步骤见下:
使用了和 Online Tracker 相同的特征构建关联度矩阵
文章提出两个阈值来解决 motion 和平滑关联性对于过大 target 不稳定的问题
在构建关联度矩阵时放弃了高阶信息, 来减少矩阵维度并提高 DN 搜索的效率
具体步骤见下, 由于主要着眼于 Online Track, 这里就不再详细展开, 感兴趣的读者可以参考原文及其给出的参考文献
文章结果
文章结果见下表, 文章结果还是很不错的, 在当时也达到了 SOTA 不过相比于之前文章分析的 SORT(60Hz)以及 Deep SORT(40Hz), 此方法 (10Hz) 在实时性方面还是有比较大的差距个人认为主要是由于检测部分以及用于提取 appearance 特征的 GoogLeNet 计算量较大所导致的, 这个网络结构换为轻量级的网络即可, 在此就不再赘述
来源: https://www.cnblogs.com/yanwei-li/p/8683933.html