论文地址:https://arxiv.org/abs/2105.03817
1.本文针对什么问题
目前跟踪领域中通用的cross-correlation操作只能获得两个特征图中局部块之间的联系,当目标移动较大、有干扰时鲁棒性较差。
2.已有的工作是什么,有什么问题
基于Siamese的和基于DCF的跟踪器已经统治了目标跟踪领域,但是它们都使用cross-correlation操作来获得模板特征和搜索区域特征之间的联系,但这个操作只能获得两个特征中局部区域之间的联系,而不能获得全局的联系。
3.为了解决这个问题,做了什么工作
本文针对这个问题提出了一个使用transformer的encoder-decoder结构的跟踪器,通过transformer中的注意力机制来获取全局的依赖。核心步骤是对模板特征和搜索区域特征分别做自注意力操作,然后对两者做交叉注意力操作。
4.具体方法是什么
整体结构如上图所示,其中上面是离线部分,下面是在线更新部分。
4.1 离线部分:
-
特征提取网络:
对ResNet50进行修改后作为特征提取网络:只是用前四个stage,并且在第四个stage中不进行下采样*(扩大特征图大小),还将此阶段中所有的3x3卷积改为dilation rate=2的空洞卷积(提升感受野)*。backbone后接1x1卷积减少通道数来减少计算损耗。
-
transformer结构:
-
目标定位:
在transformer结构的后面接了三个分支,其中上面两个用于回归,最下面的一个用于分类。每个分支由三个1x1的卷积核组成,最后接一个sigmoid函数。
1)目标定位:分类分支会生成一个分类置信度图 Y ∈ [ 0 , 1 ] Y \in [0,1] Y∈[0,1],最大值所在位置即为目标位置。但是因为这个位置是在经过下采样的低分辨率特征图上的位置,单单通过乘以一个下采样率来将特征图上的位置映射回原图会存在一定的偏差,所以就添加了一个位置偏差预测的分支,预测特征图中每个位置映射回原图的偏差 Y ′ ∈ [ 0 , 1 ) Y' \in [0,1) Y′∈[0,1)(包括长和宽),然后原图中的位置为:
( x c , y c ) = s ⋅ ( a r g m a x ( Y ′ ) + O ( a r g m a x ( Y ′ ) ) ) ({x_c},{y_c}) = s \cdot (argmax({Y^\prime }) + O(argmax({Y^\prime }))) (xc,yc)=s⋅(argmax(Y′)+O(argmax(Y′)))
其中s是下采样率, Y ′ Y' Y′是分类置信度图 Y Y Y经过余弦窗口(cosine window)处理后的结果,argmax可以获得 Y ′ Y' Y′的最大值的位置索引。2)大小回归:图中第二个分支就是用来预测尺度因子,计算公式如下:
( w b b , h b b ) = ( W , H ) ∗ S ( a r g m a x ( Y ′ ) ) ({w_{bb}},{h_{bb}}) = (W,H)*S( argmax ({Y^\prime })) (wbb,hbb)=(W,H)∗S(argmax(Y′))
而对于索引是小数的情况,可以使用线性插值策略。 -
损失函数:
1) 分类损失:使用像素级logistic回归焦点损失函数
其中 Y x y Y_{xy} Yxy是分类置信度图, Y ˉ x y \bar Y_{xy} Yˉxy是由高斯函数 exp ( − ( x − p ~ x ) 2 + ( y − p ~ y ) 2 2 σ p 2 ) \exp \left( { - \frac{{{{(x - {{\tilde p}_x})}^2} + {{(y - {{\tilde p}_y})}^2}}}{{2\sigma _p^2}}} \right) exp(−2σp2(x−p~x)2+(y−p~y)2)生成的, p ~ x {{{\tilde p}_x}} p~x和 p ~ y {{{\tilde p}_y}} p~y是目标在原图中的真实位置映射到特征图上得到的,即 p ~ = ( ⌊ p ˉ x s ⌋ , ⌊ p ˉ y s ⌋ ) \tilde p = \left( {\left\lfloor {\frac{{{{\bar p}_x}}}{s}} \right\rfloor ,\left\lfloor {\frac{{{{\bar p}_y}}}{s}} \right\rfloor } \right) p~=(⌊spˉx⌋,⌊spˉy⌋)。
2) 偏差回归损失:直接使用L1损失
L O = ∣ O p ~ − ( p ˉ s − p ~ ) ∣ {L_O} = |{O_{\tilde p}} - (\frac{\bar p}{s} - \tilde p)| LO=∣Op~−(spˉ−p~)∣
这里 O P ~ O_{\tilde P} OP~是 O O O在位置 P ~ \tilde P P~处的值。3) 尺度回归损失:同样使用L1损失
L S = ∣ S P ~ − s ~ ∣ {L_S} = |{S_{\tilde P}} - \tilde s| LS=∣SP~−s~∣
这里 S P ~ S_{\tilde P} SP~是 S S S在位置 P ~ \tilde P P~处的值,并且 s ~ = ( w ˉ b b W , h ˉ b b H ) \tilde s= (\frac{{{{\bar w}_{bb}}}}{W},\frac{{{{\bar h}_{bb}}}}{H}) s~=(Wwˉbb,Hhˉbb)即总损失为:
L = L Y + λ 1 L O + λ 2 L S L = {L_Y} + {\lambda _1}{L_O} + {\lambda _2}{L_S} L=LY+λ1LO+λ2LS
4.2 在线更新部分
如上面结构图的下面部分,在线更新部分由两个卷积层组成:第一个卷积层是一个1x1的卷积层,用来减少通道的数量;第二个卷积层是类似于DiMP的一个4x4卷积核,这个卷积核使用共轭梯度下降实现在线更新。然后将得到的结果加到离线部分得到的分类图上。具体的计算方法如下:
Y
′
′
=
w
Y
′
+
(
1
−
w
)
Y
o
n
l
i
n
e
{Y^{\prime \prime }} = w{Y^\prime } + (1 - w){Y_{online}}
Y′′=wY′+(1−w)Yonline