前言:看完这篇文章,我感慨还是挺多的。。
先附上作者在知乎上对这篇文章的介绍吧:https://zhuanlan.zhihu.com/p/34222060 论文的介绍在文章后半部分。
这篇文章考虑的是怎么不丢失跟踪目标的细节,其实就是提高目标的判别性,Siam类方法的跟踪缺点就是判别性不强,尤其是在图像中有与目标相似的物体时,往往导致跟踪失败。
因此作者加入了Encoder-Decoder结构,通过解码出来的图像与原图像之间的误差不断缩小,达到编码器中间的输出包含目标更多的细节信息。
解释下这个结构:
用的依旧是Siamese结构的思想,上面是样例图像分支,下面是搜索图像分支。
不考虑解码器的部分,两幅图像经过网络的,先利用浅层特征经过CACF后得到125125的响应图,这个CACF在后面会将到。然后利用深层特征进行互相关运算,得到1717的响应图,这个响应图经过双二次差值上采样到125*125,最后两幅响应图融合成最终响应,以上其实也是跟踪的过程。
作者加上了解码器(decoder),利用自编码器的思想,通过reconstruction loss不断优化,增加的这个重构约束增强了跟踪的判别性,后面的对比试验可以看出,性能提高了很多。
再来说这个CACF,参考CVPR2017年的这篇论文《Context-Aware Correlation Filter Tracking》,上下文感知的相关滤波器。
CACF的思想是在目标图像块
z
0
z_0
z0的周围采样k个上下文图像块
z
i
z_{i}
zi,这些图像块可以看做困难负样本,目的就是目标图像块有高的响应,周围图像块响应接近0:
min
w
∥
Z
0
w
−
y
∥
2
2
+
λ
1
∥
w
∥
2
2
+
λ
2
∑
i
=
1
k
∥
Z
i
w
∥
2
2
\min_{w}\left \| Z_0w-y \right \|_{2}^{2}+\lambda _1\left \| w \right \|_{2}^{2}+\lambda _2\sum_{i=1}^{k}\left \| Z_iw \right \|_{2}^{2}
wmin∥Z0w−y∥22+λ1∥w∥22+λ2i=1∑k∥Ziw∥22
在傅里叶域有闭式解:
w
^
=
z
^
0
∗
⊙
y
^
z
^
0
∗
⊙
z
^
0
+
λ
1
+
λ
2
∑
i
=
1
k
z
^
i
∗
⊙
z
^
i
\hat{w}= \frac{\hat{z}_0^*\odot \hat{y}}{\hat{z}_0^*\odot \hat{z}_0+\lambda _1+\lambda _2\sum _{i=1}^k\hat{z}_i^*\odot \hat{z}_i}
w^=z^0∗⊙z^0+λ1+λ2∑i=1kz^i∗⊙z^iz^0∗⊙y^
作者推导使之可微,可以进行反向传播,然后就可以端到端的进行训练了。公式就不贴了。
训练就是训练这三个损失函数。
跟踪时,就可以去掉后面的解码器,高层特征的样例模板就用第一帧的信息,固定不变。浅层特征出来的滤波器w进行更新:
w
t
=
α
t
w
+
(
1
−
α
t
)
w
t
−
1
w_t=\alpha _tw+(1-\alpha _t)w_{t-1}
wt=αtw+(1−αt)wt−1
α t = α ⋅ f ∗ ( x t ′ ) / f ∗ ( x 1 ′ ) \alpha _t=\alpha \cdot f^*(x_t^{'})/f^*(x_1^{'}) αt=α⋅f∗(xt′)/f∗(x1′)
α \alpha α开始取0.017
实验结果:
这是作者提出的EDCF和SiamFC、CFNet、CACF还有自身变种的比较,EDSiam是没有加CACF,CACFNet+是没有加高层特征的互相关,CACFNet是只端到端训练了两层的网络,没有利用Encoder-Decoder结构。EDCF无疑取得了最好的成绩。
接下来是跟其他跟踪器的比较,就不贴图了。
总体来看,结构还是很新颖的,不过性能似乎跟最近的一些新出来的Siam类跟踪器有点差距。