GradNet: Gradient-Guided Network for Visual Object Tracking论文解读

今天为大家解读一篇ICCV2019的oral paper。用于目标跟踪,思路奇特。值得认真学习一下。
项目及论文下载地址 here

研究背景

自从SiamFC横空出世,基于孪生网络的目标跟踪方法就几乎统治了跟踪领域。孪生网络通过学习模板和当前帧的相似度,判断目标最可能出现的位置,来达到跟踪的效果。自SiamFC之后,有SiamRPN,SiamMask,Cascade SiamRPN, SiamRPn++等都是跟踪领域精度最高的那几个模型,足以看出孪生网络在目标跟踪领域的地位。
所谓模板,就是第一帧中给出来的所要跟踪的目标,以这个目标作为模板,其他后续帧通过相似性学习,找到这个目标在其他帧中的相似度。相似度最大的位置,就差不多是目标位置了,在经过框回归,就能准确找到目标的精确位置。
采用模板有个好处,好处就是模板是固定的,总是来自第一帧给出的目标区域,所以模板可以说是很值得网络信赖的,毕竟确定就是网络需要跟踪的目标。随着网络后续帧处理之后,即便因为遮挡或者其他因素丢失了目标,只要这个目标重新出现之后,网络依然能利用模板这个最值得信赖的特征,找到真正要跟踪的目标,因为它们之间的相似度是最高的。
模板的一个坏处就是,一旦目标发生了很大的形变,或者严重的遮挡,甚至和第一帧的给定目标从视觉观感已经看不出是一个目标了,这个时候仍借助模板去跟踪目标,就不合适了。如果恰好出现了和目标相似类别的另一个背景目标出现,网络很可能出现误差漂移现象。
这就是GradNet被提出的初衷: 通过改变模板,不断是去适应目标的新形象,使得网络始终可以通过基于模板的cross correlation来获得高的相似度来跟踪目标。

事实上,在孪生跟踪领域,GradNet并不是第一个提出改变模板的策略,但GradNet的创新之处在于,它挖掘了梯度信息,并用梯度信息来实现模板的更新。这是首创。被ICCV2019评委Oral paper~!!!!!!

Motivation

梯度中包含了非常有用的信息。比如下面两张图,第一列将目标区域遮挡一部分,这张图的特征的梯度在被遮挡的区域会有很大的值(第二列玫瑰色的区域代表值很大)。第三列的图像展示了和目标相似的背景目标,一样会有很大的梯度。所以梯度是可以反映目标的变换以及背景的位置。
在这里插入图片描述

目前的一些跟踪方法中,有一些方法是用到了在线学习,就是在测试的时候,依然训练网络。这些方法也是要借助梯度更新参数,使网络适应目标的新形象。但是往往需要几十次的迭代,才能收敛,所以测试时间会非常慢。
而作者提出的GradNet,仅仅依靠两次前向计算和一次反向求梯度,就能实现更新模板并且准确跟踪。

主要贡献

  • 第一个利用梯度去更新模板的孪生网络
  • 提出了合理的训练方式,解决了网络不重视梯度以及过拟合的问题
  • 取得SOTA效果,还能有80FPS!!!!!!

Method

首先GradNet以SiamFC作为BaseLine,同时简单的介绍了SiamFC。
Z是第一帧给定的目标区域,X是以上一帧预测结果为中心,在下一帧(当前帧上)选取的更大一点的搜索区域。 f x , f z f_x, f_z fx,fz分别用来提取搜索区域特征和目标区域特征。有:
β = f z ( Z ) \beta = f_z(Z) β=fz(Z)$
S = β ∗ f x ( X ) S = \beta * f_x(X) S=βfx(X)
其中, β \beta β就是模板了,S是score map,就是描述了在搜索区域上各个小区域和模板的相似度。 星号代表Corss correlation操作。 另外,在一些方法中, f z , f x f_z, f_x fz,fx是一个东西,参数共享。

SiamFC希望在Score map上最大值对应得位置上,就是正确的目标区域。

接下来就可以正式介绍GradNet了。

模板如何生成

GradNet更新模板分三步走。网络结构图如下
在这里插入图片描述

初始化一个模板

Z经过 f 2 f_2 f2得到 f 2 ( Z ) f_2(Z) f2(Z) f 2 f_2 f2就是几个卷积层。然后计算得到 f x ( Z ) f_x(Z) fx(Z),同时得到一个初始模板
β = U 1 ( f 2 ( Z ) ) \beta = U_1(f_2(Z)) β=U1(f2(Z))

计算梯度

然后 β \beta β f x ( Z ) f_x(Z) fx(Z)通过Cross correlation操作得到Score map,用这个Score map和Label计算loss,求得
f 2 ( Z ) f_2(Z) f2(Z)的梯度,**这里是对特征图求导,**然后把梯度送进另一个子网络 U 2 U_2 U2,输出在加上 f 2 ( Z ) f_2(Z) f2(Z),得到 h 2 ( Z ) h_2(Z) h2(Z)

模板更新

h 2 ( Z ) h_2(Z) h2(Z)经过 U 1 U_1 U1,和之前的U1是一样的网络,参数共享,就得到了最优的模板, β ∗ \beta^{*} β,用这个 β ∗ \beta^{*} β去和 f x ( Z ) f_x(Z) fx(Z)再做一次Cross correlation操作,得到的Score map就是最终的输出了。

GradNet的两个问题

作者在实验中发现,用一个视频的中抽取的两帧组成Batch,网络不重视梯度信息,因为U2这个子网络的权重值很低。说明最终的模板的值很大程度还是来自第一次的Cross correlation操作。另一个问题是出现了严重的过拟合。
于是作者提出了下面这种训练方式。
T = { ( X 1 , Z 1 , Y 1 ) , ( X 2 , Z 2 , Y 2 ) , . . . ( X N , Z N , Y N ) } T = \left \{(X_1, Z_1, Y_1), (X_2, Z_2, Y_2),...(X_N, Z_N, Y_N) \right \} T={(X1,Z1,Y1),(X2,Z2,Y2),...(XN,ZN,YN)}是训练样本。X,Z含义和上面相同,Y是Label。下标代表来自不同的视频序列。
作者在一个Batch中,选择来自k个(在实验中k为4)视频的样本,组成训练样本对(pairs)。
重点来了,然后用第一个样本的Z,记作 Z 1 Z_1 Z1,求 β 1 \beta_1 β1,用来自第一个视频的Z求到的初始化模板 β 1 \beta_1 β1作为这一个Batch的模板。就是其他三个序列也用这个作初始化的模板。下面是一个示意图。
在这里插入图片描述按照左边的方式训练,就会出现那两个问题。按照右边的方式训练,能避免提到的两个问题,从示意图中的右边,可以注意到,只用了一个Z1计算模板,用于Batch中的四个来自不同视频的image pairs。这样能帮助网络更在意来自梯度的信息。
Note: 这种训练方式从理论上来说,非常正确。因为如果按照第一种方式训练,本身就能够从第一次Cross Correlation操作得到很不错的相似性度量了,网络自然不会重视梯度信息。但是通过右边的方式学习,第一个视频的初始模板并不适合其他三个视频,毕竟是来自不同视频的数据。对于其他序列,网络不能从第一次的Cross correlation操作学习到东西,自然就依靠梯度给出的信息。

如何测试

在离线训练之后,整个网络参数就固定了,这和一般长短时更新继续训练的跟踪方法完全不同。
首先得到第一帧,以及给出的所要跟踪的目标,以及对应的label。继而得到 Z 1 , X 1 Z_1, X_1 Z1,X1,继而的到最佳模板 β ∗ \beta^* β。同时保存 h 2 ( Z 1 ) h_2(Z_1) h2(Z1),用于更新后续帧的初始模板,也就是在测试当前帧得到的 h 2 ( Z i ) h_2(Z_i) h2(Zi),被当做下一帧需要的 f 2 ( Z i + 1 ) f_2(Z_{i+1}) f2(Zi+1)
还要保存一个值得信赖的pair(X,Y),根据这个值得信赖的样本以及对应的标签,去更新得到新的 h 2 ( Z ) h_2(Z) h2(Z)

比如说,第一帧以及对应的label肯定是值得信赖的样本对(pair。给定的,自然是值得信赖的),然后两路都送进第一帧,用第一帧对应的lable得到梯度,用梯度得到目前的最佳模板 β 1 ∗ \beta_1^* β1。同时保存 h 2 ( Z 1 ) h2(Z1) h2(Z1)

对于第二帧,使用 h 2 ( Z 1 ) h2(Z1) h2(Z1)作为 f 2 ( Z 1 ) f_2(Z1) f2(Z1),用最值得信赖的样本对更新得到适合第二帧跟踪的最佳模板 β 2 ∗ \beta_2^* β2。以此类推。
什么是值得信赖的样本呢?选取规则如下:

  • 设thre 为第一帧的score map的最大值
  • 如果后续帧的socre map的最大值大于0.5*thre,这个帧以及对应的label作为值得信赖样本对。label来自于预测结果。

关于label的形式,好像是和score map类似的东西,这个需要看SiamFC才能明白了。还有框回归是否还需要呢,也是未知了。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值