ECO : Efficient Convlution Operator 目标追踪论文

笔记结构

  • 论文简介

  • 论文主要解决问题

    • 卷积操作分解优化

    • 样本空间优化

    • 模型更新策略

  • 论文效果

论文简介

基本信息

介绍

本论文在当前目标追踪领域中属于相关滤波这一大分支,具体从KCF/DCF分支发展过来,逐渐将相关滤波这一技术发展。ECO前身论文C-COT通过将从backbone中不同提取的特征进行插值转化为连续型数据,然后有效地将图像的多种特征有效结合起来进行相关滤波,大幅提升了追踪的准确度,但是运行的速度却不尽人意,于是作者在其基础上于ECO中提出了两个关键的优化和一个新的更新策略,提升计算效率的同时准确度也有所提升。

ECO : Efficient Convlution Operator 目标追踪论文

论文主要解决问题

由于ECO和其前身C-COT的相关性很高,这里强烈建议先去学习一下C-COT,或者看一些别人写的ECO笔记,同时声明一下本篇主要是分析这篇论文的两个优化方法怎么来的和怎么处理的,能够更好的辅助你阅读原论文。当然如果讲述有误欢迎交流指导。

卷积操作分解优化

论文的前身C-COT有着巨大的模型,需要在线学习近80w个参数。但是复杂模型一般会带来的Over-Fitting问题从而导致准确度下降。这也是作者一直在关注的问题。

问题是如何发现的

作者将在C-COT训练后的滤波器进行可视化操作如下

ECO : Efficient Convlution Operator 目标追踪论文

左边是C-COT中滤波器的可视化,右边则是ECO中滤波器的可视化。可以很明显看出左边有许多的格子是无意义的,解释一下应该是从backbone抽取的某一些特征有问题(这里有问题可以有许多因素,比如特征本身无意义、特征对于此方法没有效果、特征处于信息压缩状态不好提取等等)。于是对应的滤波器在训练过程中权重一直在下降(因为没有提炼出有效的信息)或者一开始就没上升过。众多原因造成了C-COT滤波器中存在了大量冗余,即便是某些弱小权重的滤波器确实对于目标检查有一点帮助,但因此增加大量的计算,速度在根本上就会受到限制。

所以作者为了提升计算速度,需要对所需要进行优化的滤波器进行抽取训练就好了。这样就算是对原来要进行大量计算的卷积操作进行了分解优化,其实我个人认为这里Factorized这个词用Refining或者Simplify会更形象一点。

问题的解决方法

先看看C-COT中作者是如何进行操作的,注意这里还是D维的滤波器。

Sf{x}=fJ{x}=d=1DfdJd{x} S_f\left \{ x \right \} = f * J \left \{ x \right \} = \sum_{d=1}^{D} f^d * J_d \left \{ x \right \}

解决的方法很容易想到用一个参数矩阵矩阵相乘滤波后的结果即完成初步建模。

假设现在精简到使用C(C << D)个滤波器,那么可以定义参数矩阵P(D,C),从而有:

SPf{x}=PfJ{x}=c,dpd,cfcJd{xd}=fPTJ{x} S_{P f} \left \{ x \right \} = P f * J \left \{ x \right \} = \sum_{c,d}^{} p_{d,c} f ^c * J_d \left \{ x^d \right \} = f * P^T J\left \{ x \right \}

注意这里是展开利用卷积的线性性质得到右边的式子(注意左边f和右边f不等同)。到这里就完成了上小节所需要的。其实这个P矩阵主要作用是对提取出来的样本进行权衡筛选,从而间接完成滤波器的数量优化。

下面进行简单示例,令D=4,C=2,这里用C-COT的方法是如下计算

Sf{x}=f1J1{x1}+f2J2{x2}+f3J3{x3}+f4J4{x4} S_f \left \{ x \right \} = f^1 * J_1\left \{ x^1 \right \} + f^2 * J_2\left \{ x^2 \right \} + f^3 * J_3\left \{ x^3 \right \} + f^4 * J_4\left \{ x^4 \right \}

而在ECO中则是

Sf{x}=p1,1f1J1{x1}+p1,2f2J1{x1}+p2,1f1J2{x2}+p2,2f2J2{x2}+p3,1f1J3{x3}+p3,2f2J3{x3}+p4,1f1J4{x4}+p4,2f2J4{x4} \begin{aligned} S_f \left \{ x \right \} = & p_{1,1}f^1 * J_1 \left \{ x^1 \right \} + p_{1,2}f^2 * J_1 \left \{ x^1 \right \} + \\ & p_{2,1}f^1 * J_2 \left \{ x^2 \right \} + p_{2,2}f^2 * J_2 \left \{ x^2 \right \} + \\ & p_{3,1}f^1 * J_3 \left \{ x^3 \right \} + p_{3,2}f^2 * J_3 \left \{ x^3 \right \} + \\ & p_{4,1}f^1 * J_4 \left \{ x^4 \right \} + p_{4,2}f^2 * J_4 \left \{ x^4 \right \} \\ \end{aligned}

理解了上述优化方法后会发现,此时在求解f滤波器的同时还需要求P,这里作者便使用了高斯牛顿法和共轭梯度法来进行求解下式

E(f,P)=Sf,P{x}yL22+c=1CwfcL22+λPF2 E(f, P) = \left \| S_{f,P} \left \{ x \right \} - y \right \|_{L^2}^2 + \sum_{c=1}^{C} \left \| wf^c \right \|_{L^2}^2 + \lambda \left \| P \right \|_F^2

使用一阶泰勒展开将高斯牛顿法的残差线性化即可得到(这一步在论文的3.1部分有详细说明)

E~(f^i,Δ,ΔP)=z^TPif^i,Δ+(f^iz^)Tvec(ΔP)y^ι22+c=1Cw^f^i,Δcι22+μPi+ΔPF2 \widetilde{E}(\hat{f}_{i, \Delta }, \Delta P) = \left \| \hat{z}^TP_i \hat{f}_{i, \Delta} + (\hat{f}_i \bigotimes \hat{z})^Tvec(\Delta P) - \hat{y} \right \|_{\iota ^2}^2 + \sum_{c=1}^{C} \left \| \hat{w} \ast \hat{f}_{i, \Delta}^c \right \|_{\iota ^2}^2 + \mu \left \| P_i + \Delta P \right \|_F^2

上式即为高斯牛顿方法每一次迭代的子问题,接下来用共轭梯度法求出f和P的最优变化量deltaf和deltaP对f和P进行更新即可,这里具体论文有许多便于计算的处理,建立配合论文复现代码一起理解。

样本空间优化

训练集(样本空间)指所用到的训练数据,在追踪过程中维护一个样本集可以在目标追踪过程中增加健壮性,但是显然效率自然会有所下降。

样本空间优化动机

ECO : Efficient Convlution Operator 目标追踪论文

作者在C-COT的追踪过程中,在上图中一系列图片可以发现,目标在移动过程中连续帧之间会存在大幅相同的像素块。如果每一帧都进入样本集中进行训练,很容易会导致追踪器对停留的目标过拟合或者过拟合于最近的目标图像,同时对于之前目标的形态可能会被过早遗忘(因为样本集空间有限)。即如果目标运动幅度较为平均,追踪效果可能不错,但是对于目标运动速度不均匀的情况下,每一帧都当作训练样本显然会阻碍tracking。

那么,是否能够找到一种生成样本集的方法能够使样本集既有多样性又精简呢。论文中也指出,就是作者对训练样本集空间进行优化的动机。

如何进行优化

将目标的各个运动形态进行区分并且相似的归类与一起即是优化的目标,如下图所示

ECO : Efficient Convlution Operator 目标追踪论文

这样将相同的样本归类到一起,同时保证每个归类之间有一定区别。这样就能保证样本集的样本多样性以及低冗余度。

实现时,作者首基于一种概率生成模型同时修改了一下评价函数进行了初步的优化,如下

E(f)=E{Sf{x}yL22}+d=1DwfdL22p(x,y)=j=1Majδxj,yj(x,y) \begin{aligned} E(f) = \mathbb{E} \left \{ \left \| S_f \left \{ x \right \} - y \right \|_{L^2}^2 \right \} + \sum_{d=1}^{D} \left \| wf^d \right \|_{L^2}^2 \\ p(x, y) = \sum_{j=1}^{M} a_j \delta _{x_j, y_j}(x, y) \end{aligned}

注意到此时的评价函数中的数学期望表示的更为泛化,但主要是p(x,y)进行样本集的筛选。上图中的delta函数表示训练样本的狄拉克冲激函数。

进一步考虑到对于每一个样本x其期望相关y都是可以预先决定的,都是一个峰值在目标中心的高斯函数,只是峰值的位置不一样,这样如果将y的值都设置成一样的,然后峰值位移的处理转移到x上,将可以将p(x,y)简化成p(x),同时将x在频率域上进行位移处理也比较方便(因为评估函数的优化方法就是转化到频率域进行计算的,这种优化方法是相关滤波技术的核心之一)。此时再使用GMM(高斯混合模型)有

p(x)=l=1LπlN(x;μl;I)πm=γμm=xj \begin{aligned} p(x) &= \sum_{l=1}^{L} \pi_l N(x;\mu _l;I)\\ \pi_m &= \gamma \\ \mu _m &= x_j \\ \end{aligned}

上述后面两个式子(pi对应样本权重,u对应样本中心)是对一个新样本的初始化,然后此时即可维护一个component的样本集,并由更新策略

  • 如果样本集没满,新样本直接填入空位

  • 如果样本集满了,则

    • 搜索样本集中如果某个component的权重值低于阈值即可丢弃将新值填入

    • 若无低阈值component则找到两个最相似的样本进行合并,注意这里新样本也要考虑进去

上述合并操作方法如下

πn=πk+πl,μn=πkμk+πlμlπj+πl \pi_n = \pi_k + \pi_l , \mu _n = \frac{\pi_k \mu _k + \pi_l \mu_l}{\pi_j + \pi_l}

这样可得到最后的评估函数

E(f)=l1LπlSf{ul}y0L22+d=1DwfdL22 E(f) = \sum_{l-1}^{L} \pi_l \left \| S_f \left \{ u_l \right \} - y_0 \right \|_{L^2}^2 + \sum_{d=1}^{D} \left \| wf^d \right \|_{L^2}^2

这里ul代表了一个component的期望。这样,同时维护一个合理容量样本集即可完成减少一定计算和内存消耗。

模型更新策略

相比前两个优化,模型更新的策略就相对比较容易。其想法的来源类似第二个优化的问题:每一帧都进行更新容易使追踪器过拟合到目标最近的形态,同时也增加了巨大的计算负担。基于目标可能的位移变化速度,简单的在固定一定帧数后进行更新不仅可以减少计算量,同时还能增加追踪器的健壮性。作者基于实验也证明了这一策略的有效提升。

由于此方法实现简单,此处不再详细介绍。

论文效果

论文实验的参考可能会随着后续的State-of-the-art的出现可能变动,但论文实验的官方数据还是有一定参考价值的。同时与baseline的对比也能较好的证明论文方法的有效性。

ECO : Efficient Convlution Operator 目标追踪论文
上图是ECO对比C-COT的性能提升,其中D>C,论文设置L是M的八分之一,Ns为5。可以看到最终速度快了进20倍。

ECO : Efficient Convlution Operator 目标追踪论文

上图是ECO在2016的VOT上跑的benchmark。EAO曲线比当时其他方法好了许多。
ECO : Efficient Convlution Operator 目标追踪论文

ECO在其他参数方面也基本是领先的,仅在Acc.上比SSAT弱了几个点。

结论

本篇文章主要是针对作者前一篇论文C-COT进行了两大优化以及使用了一个新的策略,在速度上对C-COT进行了大幅优化,效果依旧是VOT2016中的佼佼者。其中两大优化以及新的更新策略值得借鉴学习。

后语

本篇笔记是以我自己的角度讲解这篇论文。基础部分并没有做过多的解释,原因是论文发了已经有两年了,网上关于ECO论文的解释博客基本也将知识点能解释的都解释了,重复记录对于发布博客没有太大的意义(毕竟我还是菜鸟????)。另外关于本篇有误之处欢迎交流。

相关文章:

  • 2022-01-07
  • 2021-07-24
  • 2022-12-23
  • 2021-05-31
  • 2021-04-29
  • 2021-08-23
  • 2021-05-10
  • 2021-07-24
猜你喜欢
  • 2021-09-27
  • 2021-11-10
  • 2021-04-11
  • 2022-12-23
  • 2021-09-06
  • 2021-12-01
  • 2021-12-01
相关资源
相似解决方案