‘Skimming-Perusal’ Tracking: A Framework for Real-Time and Robust Long-term Tracking
写在前面
这是Huchuan Lu这个组做的一篇长程跟踪的文章,看起来应该他们投CVPR2019的那篇MBMD上做的,文章的精度已经比MBMD高了,而且做到了real-time,把MBMD中的MDNet部分换成了Siamese的结构,所以比较快把。
Motivation
- 目前为止,大部分的跟踪算法都是针对短的视频序列的,现有的长程跟踪算法,还是很难满足robust和real-time的需求。
Contribution
- 提出了一个基于深度神经网络的 novel的 Skimming-Perusal 模块去解决长程跟踪问题。 这两个模块都是offline训练好的并可以直接用在在线跟踪上,使得跟踪过程更高效;
- Perusal模块是为了精细的在一个局部区域里定位到目标,该模块由一个bbox回归器(基于SiameseRPN)和一个验证器(基于deep feature embedding);
- 提出了一个Skimming模块来用密集的滑动窗口来定位最有可能包含目标的局部区域,这个操作可以加速re-detection 过程。
Algorithm
以上就是这篇文章算法的流程图,先是使用Perusal模块在local的search region里找到proposal,然后用验证网络去验证这些proposal的可靠性,如果结果是不可靠,则使用Skimming模块来在global的区域中找到一块有可能有target的local region,再用Perusal模块去找proposal。其实这个local-to-global的方式是DaSiamRPN里面有用到的,加了这个之后,DaSiamRPN确实在长程的数据集上也有很好的表现。
1 Perusal 模块
这个模块就是用SiameseRPN实现的, 通过SiameseRPN来得到一系列的bbox, 不过不用SiameseRPN的bbox评价方式,而是将得到的bbox都用一个验证网络来得到它们的置信度,下图就是本文中用到的Perusal模块:
2 离线学习好的验证网络
这里使用的网络结构文中没画出来,不过有引用,感兴趣可以去看看。
这一块主要是学一个embedding function
f
(
⋅
)
f(\cdot )
f(⋅) ,将template和proposal都弄到一个a discriminative Euclidean space里去,然后使用三元组损失来确保这个空间的判别力,也就是作为损失函数:
其中
Y
i
α
\mathcal{Y}^{\alpha}_i
Yiα 指的是一个target的第
i
i
i 个anchor,
Y
i
p
\mathcal{Y}^{p}_i
Yip 是一个正样本,
Y
i
n
\mathcal{Y}^{n}_i
Yin 代表负样本,
α
\alpha
α 指的是margin。 在跟踪的过程中,一个bbox的置信度由其和第一帧的template
Z
\mathcal{Z}
Z 的 cosine 距离算出:
如果这个score大于一个阈值,则认为找到了target,否则就需要重检测。
3 SKimming 模块
这个就是用来做重检测的,这边主要是使用滑动窗口的方式确定某个local region是否包含有target,这边也是用Siamese的结构实现的:
主要的流程就是给定一个template
Z
\mathcal{Z}
Z 和一个search region
X
\mathcal{X}
X ,算一个
p
=
g
(
Z
,
X
)
p = g(\mathcal{Z}, \mathcal{X})
p=g(Z,X) , 其中
p
p
p 是指target是否在这个region中出现,
g
(
⋅
,
⋅
)
g(\cdot,\cdot)
g(⋅,⋅) 是用上面的网络实现的。
这一段我有疑问,这个Skimming模块难道不是只用来定位region的嘛,为何又开始选candidates了?
Experiment
实验做的挺好的,ablation study 也挺完善的, 可以看出最管用的还是他的验证模块,长程的跟踪,若是能评价bbox的质量,应该就很有用。
Conclusion
还是比较典型的长程跟踪方法,先验证再重检测。文章写的也比较好懂,但是网络有点多,应该offline训起来挺麻烦的,长程确实是一个待解决的问题,但是目前能想到的框架也是这样,顶多换换baseline,暂时没有其他思路了。