目标跟踪算法二:ECO: Efficient Convolution Operators for Tracking(2016年11月)

Visual Tracking领域大牛(至少我认为是这个领域的大牛)Martin Danelljan又出新作。继C-COT之后又一刷新纪录的作品。不管是从结果还是速度上都有提升,尤其是速度提升明显。用传统特征HOG+CN的版本速度有60+FPS,用CNN+HOG+CN的速度有8FPS,从跟踪效果来看,个人认为可以算一个出色的作品。

C-COT是2016年ECCV的文章,下次有空再讲。

ECO文章链接:arxiv.org/pdf/1611.0922

这篇文章的baseline是Martin Danelljan的另一篇文章,就是上面提到的C-COT。

1. Motivation

这篇文章的出发点其实就是提高时间效率和空间效率。近一两年来,效果好的很多方法都是基于相关滤波来做的。最早用到相关滤波的是Bolme等人在2010年CVPR的MOSSE,速度非常快。在MOSSE之后,像KCF,DSST,CN,SRDCF,C-COT等等都是在相关滤波的基础上做的。随着特征维度越来越高,算法越来越复杂,跟踪效果虽然是在逐步提升,但是都是以牺牲跟踪速度为代价的。(Martin Danelljan在相关滤波这一系列方法上可谓是如鱼得水啊,有非常多的成果,非常多!)

那么Martin Danelljan(后面叫他DM好了)在相关滤波做跟踪的算法上积累了丰富的经验之后,分析了速度降低的三个最重要的因素:

(1) Model Size(模型大小)

也可以理解为特征的复杂度。比如说C-COT用了CNN+HOG+CN这样非常全面的特征组合,它每次更新模型的时候,需要更新的参数有800000个,速度当然很慢。实际上跟踪问题中的训练样本非常少,这么高的维度除了速度慢,还会引起过拟合(over-fitting)。

(2) Training Set Size(训练集大小)

这里所指的训练集是指保存了每一帧的跟踪结果的训练集,也就是说,每一次进行model update的时候,要用在这一帧之前所有跟踪到的样本。那么随着视频越来越长,这个训练集就会越来越大。那么一般的解决方案是保存比较新的样本,丢弃老的样本,具体策略每个方法都不一样。这样一来,模型还是容易过拟合。因为当目标被遮挡或者丢失的时候,比较新的这些样本本身就是错的,那么模型很容易有model drift,就是被背景或者错误的目标污染,导致跟踪结果出错。另外,样本集的保存也会使得空间效率低下,增加计算负担。

(3) Model Update

这个很显然,模型如果每帧都更新,速度肯定比间歇更新要慢。我发现16年下半年开始,做tracking的人开始非常关注这个问题。而在此之前,很多方法基本都是每帧都更新的。另外每帧都更新也会有model drift问题,这个显而易见不再赘述。

2. ECO Algorithm

好,那么针对以上三个问题,DM分别给出了应对策略,从三方面进行改进。

2.1 Factorized Convolution Operator(因式分解的卷积操作)

先简单介绍一下C-COT:

C-COT将特征feature map通过插值转换到连续的空间域了:

这里就不具体介绍了,把(1) 式当成提取的特征就行了,最后得到的特征是J{x}。最后检测目标的得分计算是:

(2)中的f就是每个维度的特征。 那么学习相关滤波器的目标函数是:

转换到频域是:

ECO在特征提取上做了简化。用了原来特征的子集,从D维的特征中选了其中的C维。C-COT是每个维度的特征对应一个滤波器,D维的特征就有D个滤波器,其实很多滤波器 的贡献很小。如图一所示,C-COT的大部分滤波器的能量很小。而ECO只选择其中贡献较多的C个滤波器,C<D,然后每一位特征用这C个滤波器的线性组合来表示。这里的C维如何选择文中没有具体说,我猜测是简单的利用滤波器中大于某个阈值的元素个数来选择。

图一:滤波器对比


那么新的检测函数是:


(6)式中P是一个DxC的矩阵,每一行代表对一个维度的特征对应的滤波器用所有C个滤波器的线性组合系数,也是一个未知数,需要在第一帧中进行学习,之后的跟踪中保持不变就行。这是学习滤波器的目标函数与(4)有了一些变化,现在是这样的:


在这个新的目标函数中,z=J{x},又在最后加了一项整定项,为了约束P。(7)现在是一个非线性最小二乘问题,其中第一项的具有双线性。因此DM把这个问题转化为一个矩阵的因式分解问题。用了Gauss-Newton和Conjugate Gradient来求解。具体的过程就不细讲了,与理解文章没有太大关系。


到此,第一个问题Model Size的解决就是这样了,从D降到了C。相当于将特征J{x} 换成了

2.2 Generative Sample Space Model

ECO简化了训练集,如图二所示。

图二:训练集

图二中下面一行是传统的训练集,每更新一帧就加一个进来,那么连续的数帧后训练集里面的样本都是高度相似的,即容易对最近的数帧样本过拟合。上面一行是ECO的做法,ECO用了高斯混合模型(GMM)来生成不同的component,每一个component基本就对应一组比较相似的样本,不同的component之间有较大的差异性。这样就使得训练集具有了多样性。

通过样本x和目标输出y的联合概率分布p(x,y),将目标函数进一步完善为:

(10)式是将(3)式的第一项换成了基于样本的联合概率分布。(3)是(10)的一个特例。另外,由于目标输出的y其实形状都是一致的,是一个峰值在目标中心的高斯函数,只是峰值 的位置不一样。那么ECO将y都设置成一样的,把峰值位置的平移量体现到x上,在频域中可以简单处理。那么p(x,y)就简化了,只需要计算p(x)就行了。这里用GMM来建模:

L表示component的个数,把之前的M个样本减少为L。

更新过程是这样的:每次新来一个样本,初始化一个component m,初始化

如果component的数量超过限制L,则丢弃一个权重最小的。否则,合并两个最近的component k和l:

近似目标函数(10)为:

(12)是把原来的M个样本减少为L个component的平均值。

在实际中,L设置为M/8,再一次减少了计算量,即1中提到的第二点,训练集大小。同时由于增加了样本的多样性,使得效果也有提升。

2.3 Model Update Strategy

ECO这里的做法很简单,就是简单地规定每隔Ns帧更新一次。注意这里的Ns只是对模型的更新,样本的更新是每一帧都要做的。最后的实验中,Ns设置为6。

模型更新频率降低,当然节约了时间,并且可以避免模型的漂移问题,一定程度上改进效果,但是也不可以把Ns取得太大,否则会使得模型跟不上目标的变化。

到此为止,ECO针对1中的三个问题都提出了解决方案,从速度和效果上都有了改进。

3. Experiment

具体的参数设置就不介绍了,可以直接看文章。直接放效果了,做tracking的人应该都看得懂。不做tracking的人,反正一句话:都是第一名!

VOT2016

OTB100,Temple-color,UAV123:

ECO通通第一,另外不用CNN的ECO-HC效果也很好,甚至比用CNN的DeepSRDCF还要好。用传统特征HOG+CN的版本速度有60+FPS,用CNN+HOG+CN的速度有8FPS。

总结一下ECO效果好的原因:

1. 特征全面(CNN, HOG, CN),这个对结果的贡献很高;

2. 相关滤波器经过筛选更具代表性(2.1做的),防止过拟合;

3. 训练样本具有多样性(2.2做的),减少冗余;

4. 非每帧更新模型,防止模型漂移;

编辑于 2017-02-19