理解出错之处望不吝指正。
文章链接
模型概况
模型结构如下图所示:
本模型与SiamFC的区别在于:提出了一种不同于SiamFC的损失函数。
在SiamFC中的损失函数如下:
L
l
(
Y
,
V
)
=
∑
x
i
∈
X
w
i
l
o
g
(
1
+
e
−
y
i
⋅
v
i
)
L_l(Y,V)=\sum_{x_i \in X}w_ilog(1+e^{-y_i \centerdot v_i})
Ll(Y,V)=xi∈X∑wilog(1+e−yi⋅vi)
作者说,这个损失函数不够好,因为它只考虑了每个instance(啥是instance?比如模板经过特征提取后得到6×6的特征图
f
e
f_e
fe,搜索区域经过特征提取后得到22×22的特征图
f
s
f_s
fs,我们使用6×6的特征图当做卷积核在22×22的特征图上进行卷积得到17×17的分数矩阵,则在卷积的过程中
f
s
f_s
fs中的每一个6×6区域在原图上的对应区域就是一个instance,而对应“+1”标签的称为positive instance,“-1”标签的称为negative instance)是否足够正确,而忽略了positive instance和negative instance之间的关系。
文中提出使用下式的损失函数:
L
t
(
V
p
,
V
n
)
=
−
1
/
(
M
N
)
∑
i
M
∑
j
N
l
o
g
p
r
o
b
(
v
p
i
,
v
n
j
)
L_t(V_p,V_n)=-1/(MN)\sum_{i}^{M}\sum_{j}^{N}log\ prob(vp_i,vn_j)
Lt(Vp,Vn)=−1/(MN)i∑Mj∑Nlog prob(vpi,vnj)
p
r
o
b
(
v
p
i
,
v
n
j
)
=
e
v
p
i
/
(
e
v
p
i
+
e
v
n
j
)
prob(vp_i,vn_j)=e^{vp_i}/(e^{vp_i}+e^{vn_j})
prob(vpi,vnj)=evpi/(evpi+evnj)
作者还通过梯度计算公式对比了两种损失函数(以下为两种损失函数的梯度中不同的部分,并不是全部的梯度公式):
∂
T
l
∂
v
p
=
−
1
2
(
1
+
e
v
p
)
,
∂
T
l
∂
v
n
=
1
2
(
1
+
e
−
v
n
)
\frac{\partial T_l}{\partial vp}=-\frac{1}{2(1+e^{vp})},\ \ \ \ \frac{\partial T_l}{\partial vn}=\frac{1}{2(1+e^{-vn})}
∂vp∂Tl=−2(1+evp)1, ∂vn∂Tl=2(1+e−vn)1
∂
T
t
∂
v
p
=
−
1
1
+
e
v
p
−
v
n
,
∂
T
t
∂
v
n
=
1
1
+
e
v
p
−
v
n
\frac{\partial T_t}{\partial vp}=-\frac{1}{1+e^{vp-vn}},\ \ \ \ \frac{\partial T_t}{\partial vn}=\frac{1}{1+e^{vp-vn}}
∂vp∂Tt=−1+evp−vn1, ∂vn∂Tt=1+evp−vn1
从中我们可以看出本文中的损失函数在计算positive instance和negative instance的梯度时,都能考虑到两种不同的instance的联系,这样利于得到更好的跟踪模型。
实验结果
文章的训练数据集采用ILSVRC2015,实验结果如下所示。
1.OTB-2013
2.OTB-其他
3.VOT-2017