GradNet: Gradient-Guided Network for Visual Object Tracking学习笔记
1.存在问题
当下最流行的跟踪就是采用模板匹配的Siamese方式,尽管它在跟踪领域取得了巨大的成功,但是模板也存在一个弊端,就是一旦目标发生很大的形变或者严重的遮挡,甚至和第一帧的给定目标从视觉观感已经看不出是一个目标了,这个时候仍然借助模板去跟踪目标,就不适合了。如果恰好出现了和目标相似类别的另一个目标,网络很可能出现误差漂移现象。
2.解决问题
本文通过改变模板,不断去适应目标的新形象,使得网络始终可以通过基于模板的cross correlation来获得很高的相似度来跟踪目标。然而目标更新的机制在目标跟踪领域并不新鲜,本文的创新是首次将梯度信息来实现模板的更新。
3.Motivation
梯度中包含了非常有用的信息。比如下面两张图,第一列将目标区域遮挡一部分,这张图的特征的梯度在被遮挡的区域会有很大的值(第二张玫瑰色的区域代表值很大)。第三列的图像展示了和目标相似的背景目标,一样会有很大的梯度。所以梯度是可以反映目标的变换以及背景的位置。
目前的一些跟踪方法中,有一些方法用到了在线学习,就是在测试的时候,依然训练网络。这些方法也要借助梯度更新参数,使网络适应目标的新形象。但是往往需要几十次的迭代,才能收敛,所以测试时间会很慢。而作者提出的GradNet,仅仅依靠两次前向计算和一次反向求梯度,就能实现更新模板并且准确跟踪。
4.贡献
a.提出了GradNet,使用梯度指导视觉跟踪中的模板更新。
b.为了保证较强的自适应能力和避免过拟合,提出了一种模板泛化方法。
c.在四个流行的基准上进行了大量实验,其结果表明了所提出的跟踪器在80fps的实时速度下获得了令人满意的结果。
5.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)
其中,
β
就
是
模
板
了
,
S
是
s
c
o
r
e
m
a
p
\beta就是模板了,S是score map
β就是模板了,S是scoremap,就是描述了在搜索区域上各个小区域和模板的相似度。星号代表Cross correlation操作。另外,在一些方法中,
f
z
,
f
x
f_z,f_x
fz,fx是一个东西,参数共享。
SiamFC希望在Score map上最大值对应的位置上,就是正确的目标区域。
接下来正式介绍GradNet了。
6.网络结构
整体步骤:
a.将模板特征
f
2
(
Z
)
f_2(Z)
f2(Z)送入到子网
U
1
U_1
U1以获得用于计算初始损失L的初始模板
β
\beta
β。
b.通过反向传播计算模板特征的梯度,并送入到另一个子网
U
2
U_2
U2以被非线性转换为更好的梯度表示。
c.将转换后的梯度加到模板目标特征中,得到更新后的目标特征,再次送入到子网
U
1
U_1
U1,输出最优模板。
d.最后通过将最优模板和搜索区域进行互卷积得到分类得分图。
算法伪代码:
下面将针对该网络进行详细的介绍:
模板初始化: Z经过
f
2
f_2
f2得到
f
2
(
Z
)
f_2(Z)
f2(Z),
f
2
f_2
f2就是几个卷积层。然后将
f
2
(
Z
)
f_2(Z)
f2(Z)送入到子网
U
1
U_1
U1得到一个初始化模板
β
\beta
β。初始模板只包含模板信息,没有背景信息。
其中
α
1
\alpha_1
α1是子网
U
1
U_1
U1的参数。
梯度计算: 然后将
β
\beta
β和
f
x
(
Z
)
f_x(Z)
fx(Z)通过Cross correction操作得到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
)
h_2(Z)
h2(Z)经过
U
1
U_1
U1,和之前的
U
1
U_1
U1是一样的网络,参数共享,就得到了最优的模板
β
∗
\beta^*
β∗,用这个
β
∗
\beta^*
β∗去和
f
x
(
Z
)
f_x(Z)
fx(Z)在做一次Cross correction操作,得到的Score map就是最终的输出了。
我们希望在分类得分图
S
∗
S^*
S∗上的目标位置有更大的值,而在其他位置有更低的值,因此我们通过loss来训练更新分支。
7.GradNet的两个问题
作者在实验中发现,用一个视频中抽取的两帧组成Batch,网络不重视梯度信息,因为
U
2
U_2
U2这个子网络的权重值很低。说明最终的模板值很大程度上还是来自第一次的Cross correction操作。另一个问题是出现了严重的过拟合。
于是作者提出了下面这种训练方式。
设
T
=
(
X
1
,
Z
1
,
Y
1
)
,
(
X
2
,
Z
2
,
Y
2
)
,
.
.
.
(
X
N
,
Z
N
,
Y
N
)
T={(X_1,Z_1,Y_1),(X_2,Z_2,Y_2),...(X_N,Z_N,Y_N)}
T=(X1,Z1,Y1),(X2,Z2,Y2),...(XN,ZN,YN)是训练样本。X,Z含义和上面相同,Y是标签,下标表示的是来自不同的视频序列。
作者在一个Batch中,选择来自k个(在实验中k为4)视频的样本,组成训练样本对(pairs)。
重点来了,然后用第一个样本的Z,记作
Z
1
Z_1
Z1,求
β
1
\beta_1
β1,用来自第一个视频的Z求到初始化模板
β
1
\beta_1
β1,作为这一个Batch的模板。就是其他三个序列也用这个作初始化的模板。下面是一个示意图。
按照左边的方式训练,就是出现那两个问题。按照右边的方式训练,能避免提到的两个问题,从示意图中的右边,可以注意到,只用了一个
Z
1
Z_1
Z1计算模板,用于Batch中的四个来自不同视频的image pairs。这样能帮助网络更在意来自梯度的信息。
Note: 这种训练方式从理论上来说,非常正确。因为如果按照第一种方式训练,本身就能够从第一次Cross Correlation操作得到很不错的相似性度量了,网络自然不会重视梯度信息。但是通过右边的方式学习,第一个视频的初始模板并不适合其他三个视频,毕竟是来自不同视频的数据。对于其他序列,网络不能从第一次的Cross correlation操作学习到东西,自然就依靠梯度给出的信息。
8.测试
在离线训练之后,整个网络的参数就固定下来了。
首先得到第一帧,以及给出的所要跟踪的目标,以及对应的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
)
h_2(Z_1)
h2(Z1)。
对于第二帧,使用
h
2
(
Z
1
)
h_2(Z_1)
h2(Z1)作为
f
2
(
Z
1
)
f_2(Z_1)
f2(Z1),用最值得信赖的样本对更新得到适合第二帧跟踪的最佳模板
β
2
∗
\beta_2^*
β2∗。以此类推。
什么是值得信赖的样本呢?选取规则如下:
a.设thre 为第一帧的score map的最大值
b.如果后续帧的socre map的最大值大于0.5*thre,这个帧以及对应的label作为值得信赖样本对。label来自于预测结果。
9.实验结果
OTB-2015数据集上的精度和成功率
TC128数据集上的精度和成功率
LaSOT数据集上的精度和成功率
不同跟踪器在VOT2017上的准确性(A)、鲁棒性®和预期平均重叠(EAO)分数
算法的不同变体在OTB-2015上的精度和成功分数
其中Ours w/o M是GradNet无模板泛化训练过程,Ours w/o MG是GradNet去掉了模板泛化训练过程和梯度应用,它可以被视为具有两个非共享分支的SaimFC,Ours w/o U是该方法无需模板更新,Ours w 2U是图3中的两个子网(紫色)不共享参数,Ours-baseline是SaimFC。