首发——Large Margin Object Tracking with Circulant Feature Maps

首发——Large Margin Object Tracking with Circulant Feature Maps

作者:和傻牛一起闯天下

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

欢迎各位对目标跟踪领域有所体会或是有所心得的朋友投稿。

---------------------------------------------------------LMCF--------------------------------------------------------

文章链接:Large Margin Object Tracking with Circulant Feature Maps


LMCF(HOG+CN) and DeepLMCF(CNN) OTB100,OTB50结果,欢迎下载比较:
Download password: 7q1g


终于有机会在专栏介绍一下自己的工作Large Margin Object Tracking with Circulant Feature Maps (LMCF),欢迎大家讨论、拍砖。


在Tracking这个领域,我觉得可以分成两大类,第一类主要关注效果的提升,比如MDNetTCNN,他们确实把效果做的很好,在数据集上的结果刷的很高,但是速度非常慢,无法满足实时性要求。另一类则比较关注跟踪速度,比如StapleGOTURN。当然了,在保证的速度的同时也要保证效果。我之前比较关注第二类,主要是考虑到跟踪的实时性应该是第一考虑要素,在此基础上做了LMCF,比较幸运地被CVPR 2017接收。目前正在思考第一类工作,并思考如何将这两类更好地结合。本篇文章主要还是在介绍我们LMCF的工作。

1. Motivation

1.1 整个算法思路: 结构化SVM与传统SVM相比有着强大的判别力,而相关滤波有着速度上惊人的优势,是否能够结合这两者,得到一种既高速又高效的跟踪算法呢?

在相关滤波(KCF [1])或者说它的前身CSK出来之前(当然最早用相关滤波的是MOSSE [2]),结构化SVM(Struck [3](2011 ICCV))是一种效果很好的跟踪算法,主要是由于其强大的判别特性(Discrimination)。Struck用Structured output SVM作为分类器,也就是结构化SVM。这是一种输出空间可以是任意的复杂形式的SVM分类器,比如说序列、树等。在Struck中,输出空间是目标相对于上一帧的平移位置信息(\Delta x,\Delta y),确实在当时取得了非常好的效果。

但是由于在求解结构化SVM时计算复杂度较高,为了跟踪的实时性,Struck只能用简单的Haar特征来表示目标,采样的数量也比较稀疏。即便如此,Struck速度还是很慢,大概10FPS左右。但是结构化SVM是一个很强的判别器,在Struck提出时,其跟踪效果可以说是当时最佳的。

在基于相关滤波(Correlation Filter)算法出现之后,通过循环采样大大增加了样本数量,为一直以来困扰跟踪领域的稀疏采样问题提供了新的解决思路,并且可以用快速傅里叶变换FFT快速求解,因此可以在保证速度的前提下用一些维度较高的特征来做跟踪,比如KCF用到了HOG特征。KCF用简单的岭回归作为分类器,但是由于用到了高维的HOG特征以及稠密采样,使得它的效果还是非常好的,并且速度在170FPS左右,这也使得KCF变成了大量算法的baseline。

到这里就出现了LMCF的第一个最重要的motivation了,我们想用循环矩阵来突破结构化SVM的稀疏采样问题,更想借助CF来突破结构化SVM的跟踪速度。

1.2 针对前向跟踪:多峰前向检测。这一点是用来解决相似物体干扰的。在目标周围有特征相似的干扰物体时,响应图会有多个峰值,且最高的那一个有可能是干扰物体的,这时候可能就会引起误判。

1.3 针对模型更新:如何判断跟踪器跟踪的不好,或者说如何判断当前帧出现了遮挡、甚至目标丢失?一旦能够判断这一点,模型更新的准确性就可以有较大提升。

先前做了关于KCF的大量实验,我们观察到KCF的响应图(response map)。在跟踪准确的时候是一个峰值很明显,接近理想的二维高斯分布图,如图一的第一行所示。而在跟踪的不好的情况中,尤其是遮挡、丢失、模糊等,响应图会剧烈振荡,如图一第二行所示。因此我们提出了一种新的判据来判断是否出现了振荡,当判断出现振荡时,不进行模型的更新。这个判据的初始版本是我用在另一篇做机器人跟踪的文章中,Real-time 3D Human Tracking for Mobile Robots with Multisensors (ICRA 2017)。


图一:遮挡

2. LMCF Algorithm

2.1 问题描述

在LMCF中,我们的分类器是一个结构化SVM,循环采样的目标框作为训练样本,因此输出空间Y = \left\{ {\left. {\left( {w,h} \right)} \right|w \in \left\{ {0,...,W - 1} \right\},h \in \left\{ {0,...,H - 1} \right\}} \right\},其中W,H分别是目标的宽、高。输入空间是一个与目标框成比例的图像块x\in X。输入-输出对即为\left( {{\bf{x}},{{\bf{y}}_{w,h}}} \right){{\bf{y}}_{w,h}} \in Y表示循环位移量,x表示以此为中心的图像块,\Psi \left( {{\bf{x}},{{\bf{y}}_{w,h}}} \right)为对应的联合特征图(joint feature map)。用来衡量\left( {{\bf{x}},{{\bf{y}}_{w,h}}} \right)为目标的可能性的函数F:X \times Y \to \mathbb{{R}}定义为线性形式F\left( {{\bf{x}},{\bf{y}};{\bf{w}}} \right) = \left\langle {{\bf{w}},\Psi \left( {{\bf{x}},{\bf{y}}} \right)} \right\rangle,那么跟踪的目标函数为:

f\left( {{\bf{x}};{\bf{w}}} \right) = \mathop {\arg \max }\limits_{{\bf{y}} \in Y} F\left( {{\bf{x}},{\bf{y}};{\bf{w}}} \right) (1)

为了求解\bf{w},我们的优化目标是这样的:

&\mathop {\min }\limits_{\bf{w}} \frac{1}{2}{\left\| {\bf{w}} \right\|^2} + C\sum\limits_{w = 1}^{W - 1} {\sum\limits_{h = 1}^{H - 1} {\xi _{w,h}^2} } \\ &{\text{s}}{\text{.t}}{\text{.}}\forall w,\forall h,\forall {{\bf{y}}_{w,h}} \in Y\backslash {{\bf{y}}_{0,0}}: \\ &F\left( {{{\bf{x}}},{{\bf{y}}_{0,0}};{\bf{w}}} \right) - F\left( {{{\bf{x}}},{{\bf{y}}_{w,h}};{\bf{w}}} \right) \geqslant \sqrt {\Delta \left( {{{\bf{y}}_{0,0}},{{\bf{y}}_{w,h}}} \right)} - {\xi _{w,h}} (2)

其中\Delta \left( {{{\bf{y}}_{0,0}},{{\bf{y}}_{w,h}}} \right) 是衡量预测为{{\bf{y}}_{w,h}}相对于真实位置{\bf{y}}_{0,0}的损失函数,定义为:\Delta \left( {{{\bf{y}}_{0,0}},{{\bf{y}}_{w,h}}} \right) = m\left( {{{\bf{y}}_{0,0}}} \right) - m\left( {{{\bf{y}}_{w,h}}} \right),其中m\left( \bullet \right)设计为高斯函数,在目标位置响应最大。

具体求解过程可以移步文章内容,有疑问可以再讨论,有时间我会再补充进来的。

2.2 多峰目标检测

每当新来一帧时,\bf{s}是基于上一帧目标位置的图像块,目标的位置{\bf{y}}=f\left( {{\bf{s}};{\bf{w}}} \right)可以通过(1)计算得到。通过循环采样得到的整张响应图可以这样计算:

F\left( {{\bf{s}},{\bf{y}};{\bf{w}}} \right) = {{\mathcal F}^{ - 1}}\left( {\hat \Psi _{{\bf{s}}0}^* \circ {\bf{\hat w}}} \right) = {{\mathcal F}^{ - 1}}\left( {{{{\bf{\hat k}}}^{{\Psi _{{\bf{x}}0}}{\Psi _{{\bf{s}}0}}}} \circ {\bf{\hat \alpha }}} \right) (3)

其中\Psi \left( { \bullet ,{{\bf{y}}_{0,0}}} \right)缩写为{\Psi _{ \bullet 0}}。如图二所示,当目标周围有相似特征的区域时,可能会出现最高的峰值是干扰的情况。为了进一步提高定位精度,我们进行多峰检测。

图二:


对于(3),多个峰值可以通过P\left( {\bf{s}} \right) = F\left( {{\bf{s}},{\bf{y}};{\bf{w}}} \right) \circ {\bf{B}}得到,其中{\bf{B}}是一个只有局部最高点是1,其余为0的矩阵。当这些峰值与最高点的比例超过一个阈值时,我们对这些峰值进行二次检测,最后目标定义为所有响应图的最高点。

2.3 高置信度模型更新策略

如何判断跟踪结果是否准确是一个没有定论的问题,但又是一个非常重要的问题。因为这决定着模型的更新策略。KCF,DSST,DSSVM,Staple等许多算法是不进行跟踪结果可靠性的判定的,每一帧的结果都用来更新,或者像MDNet或者TCNN那样每隔N帧更新一次。这样是有风险的,特别是当目标被遮挡,或者跟踪器已经跟的不好的时候,再去更新模型,只会使得跟踪器越来越无法识别目标,这就是模型漂移问题,model drift

由于想要保证跟踪速度,我们就需要一种简单有效的模型更新策略,最好能够通过已经获得的一些资源来进行判断,而不需要进行太多复杂的计算。首先最容易想到的就是response map的最高点的值{F_{\max }},一般来说这个值越大说明跟踪的结果越好,但也有例外,比如图三中第一行第三列,在目标被几乎完全遮挡的时候最高响应值是0.94,这个值是高于整个视频最高响应值的均值的,如果只用这一个判据进行了模型的更新,就会让模型漂移到遮挡物体上,如图三第二行第三列,最后丢失了目标。


响应最高点并不能反映响应图的振荡程度。在图三中,虽然最高点的值{F_{\max }}依然高,但是响应图在被遮挡时振荡剧烈,是可以通过振荡程度来避免错误更新的。因此我们提出了一个新的判据APCE:

APCE = \frac{{{{\left| {{F_{\max }} - {F_{\min }}} \right|}^2}}}{{mean\left( {\sum\limits_{w,h} {{{\left( {{F_{w,h}} - {F_{\min }}} \right)}^2}} } \right)}} (3)

其中 {F_{\max }},{{F_{\min }}},{{F_{w,h}}}分别表示响应最高、最低和(w,h)位置上的响应。这个判据可以反映响应图的振荡程度,当APCE突然减小时,就是目标被遮挡,或者目标丢失的情况,如图三第一行中目标被遮挡后,APCE相对于这段视频APCE的历史均值就减小的很明显,因此在这种情况下我们选择不更新模型,从而避免了模型的漂移。

只有当APCE和{F_{\max }}都以一定比例大于历史均值的时候,模型才进行更新,这样一来大大减少了模型漂移的情况,二来减少了模型更新的次数,达到了加速的效果。

3. Experiments

3.1 自身对比实验



我们分别用传统特征(HOG+CN)和CNN特征实现了LMCF和DeepLMCF,另外比较了不用多峰检测的LMCF-Uni,不用模型更新策略的LMCF-NU,以及两者都不用的LMCF-N2,在OTB50测试了效果。当然除了速度之外,各个指标都是DeepLMCF最好。可见模型更新策略和多峰检测策略都带来了一定的提升。

3.2 LMCF对比实验


左边一列是OTB50,右边是OTB100。跟用传统特征的比较新的方法做了比较,方法和对应年份、出处都在图例里面,用的结果都是各个作者自己公布的结果。我们的平均速度在80FPS以上。

3.3 DeepLMCF对比实验

我们还做了一组实验,将特征换成CNN特征,跟最新的用了深度特征的算法作比较。在提交的前几天看到了MD大神ECCV的新作C-COT,他公布了结果,所以也拿来比较了一下。效果确实比我的好一些,但是速度差别很明显,我们的速度是10FPS左右,而C-COT的速度是0.25FPS左右(这是我们自己测试的速度)。

通过上面的实验,我们验证了LMCF的高效性。

4. Conclusion

总结一下,这篇文章中,我们用了结构化SVM作为分类器,有着强大的判别能力,并引入了相关滤波,通过循环采样增加了训练样本的数量同时进行加速。我们利用多峰检测避免了相似物体和背景干扰。针对模型更新环节,提出了简单有效的模型更新策略,大大减少了模型漂移的情况,同时减少了模型更新的次数,达到了再次加速的效果。我们的方法不依赖于具体特征,可以根据实际情况使用传统特征或者深度特征。在实验中,我们验证了LMCF的高效和高精度。


[1] J. F. Henriques, R. Caseiro, P. Martins, and J. Batista. Highspeed tracking with kernelized correlation filters. IEEE Transactions on Pattern Analysis and Machine Intelligence, 37(3):583–596, 2015

[2] D. S. Bolme, J. R. Beveridge, B. A. Draper, and Y. M. Lui. Visual object tracking using adaptive correlation filters. In Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on, pages 2544–2550. IEEE, 2010.

[3] S. Hare, A. Saffari, and P. H. Torr. Struck: Structured output tracking with kernels. In 2011 International Conference on Computer Vision, pages 263–270. IEEE, 2011.

编辑于 2017-09-05

文章被以下专栏收录

    本专栏主要针对单目标跟踪算法研究,做一些算法分享以及剖析。欢迎有兴趣的朋友关注和投稿。