Target-Aware Tracking with Long-term Context Attention
论文地址:https://arxiv.org/pdf/2302.13840
动机:
大多数深度追踪器仍然遵循孪生范例的指导,使用一个只包含目标而没有任何上下文信息的模板,这使得追踪器难以应对巨大的外观变化、快速的目标移动以及来自类似物体的吸引。为了缓解上述问题,提出了一个长期上下文注意(LCA)模块,该模块可以从长期帧对目标及其上下文进行广泛的信息融合,并在增强目标特征的同时计算目标相关性。完整的上下文信息包含目标位置以及目标周围的状态。LCA使用来自前一帧的目标状态来排除相似物体和复杂背景的干扰,从而准确定位目标,使跟踪器获得更高的鲁棒性和回归精度。通过在 Transformer 中嵌入 LCA 模块,我们构建了一个具有目标感知主干的强大在线跟踪器,称为 TATrack。此外,提出了一种基于历史信息分类置信度的动态在线更新算法,无需额外计算负担。
贡献:
- 提出了一种新的跨帧注意模块,适用于目标与其上下文的融合交互。
- 基于 LCA,我们构建了一个强大的跟踪器,其主干更适合跟踪任务。
- 提出了一种简洁高效的基于分类置信度的在线更新方法,以选择计算负担非常低的高质量模板。
1、Introduction
在仔细调查了现有的孪生追踪器后,我们发现它们或多或少地继承了SiamFC的某些简单操作,但也有一些缺点,具体如下:
- 由于外观信息不足,使用没有任何背景的目标模板与搜索区域相关联,将很难从与目标相似的背景吸引物中区分出真正的目标,也难以应对严重的外观变化;
- 在跟踪任务中,在主干网络完全提取了图像特征之后执行相关操作,但主干网络最初是为分类任务设计的,因此特征提取对跟踪任务的适用性在一定程度上受到限制。
- 跟踪器仅使用离线训练得到的最优模型来预测目标,模型只知道初始帧的目标外观,而没有在线更新的信息。
这样的跟踪器是静态的,它没有任何对视频序列中目标状态中发生的变化的感知。静态跟踪器缺乏对目标的连续变化的感知,并在长时间跟踪中失去了鲁棒性。 以上缺点在简单的跟踪场景中并不十分突出,但在复杂的跟踪场景中会迅速放大,因此需要克服。
受上述三个问题的启发,提出了一种长期上下文注意机制,该机制可以同时接受目标模板、历史帧和当前搜索帧作为输入,以自适应加权融合方式。
我们在LCA中嵌入了一个改进的位置编码器,使目标模板、历史帧和当前搜索帧在进行自我注意力计算的同时,还可以相互进行交叉注意力计算。LCA 广泛融合了跨越不同时间的图像的目标和上下文特征,可以有效地提取目标和围绕目标的状态信息。由于LCA模块具有相关性计算和特征提取功能,我们将多个LCA和SWA模块交替叠加,构建适合跟踪任务的骨干网。提出了一种非常简洁、高效的算法,该算法根据历史帧的分类置信度分数确定是否更新模板,从而实现高鲁棒性和避免上述两阶段方法等大量计算成本。
2、Method
Long-term Contextual Attention (LCA)
在本节中,我们首先介绍了提出的长期上下文注意(LCA)模块,该模块旨在集成来自多帧的目标和上下文信息。图2显示了LCA模块的概述。
LCA是一个强大的注意力计算模块,它可以整合目标模板、前一个模板和搜索到的图像的特征,根据目标模板的特征从前一个模板和搜索到的图像中感知到真正的目标,并在削弱干扰信息的同时强化目标的特征。同时,LCA可以根据目标状态隐含地找到搜索图像中的变化,包括在前一个模板中的外观和相对位置,进一步排除与目标相似的干扰物体,从而更准确地捕捉到当前目标状态。
在这个模块中,位置编码起着重要作用。我们知道,在自注意力公式1中,没有位置编码的自注意力公式是公式2,具有绝对位置编码的自注意力公式是公式 3。
x
∈
R
L
×
d
x\in \mathbb{R}^{L\times d}
x∈RL×d 是输入特征,
p
p
p 是绝对位置编码,
W
∈
R
L
×
d
W\in \mathbb{R}^{L\times d}
W∈RL×d 是线性变换矩阵。
Q
、
K
和
V
Q、K 和 V
Q、K和V 表示查询、键和值三个具有相同维度的映射矩阵。我们没有直接把目标模板、前一个模板和搜索图像作为一个整体来计算自我注意。由于目标模板、先前模板和搜索图像之间的关系在公式中不会被区分,这三个特征将被视为一个大图像,模型在三者之间构建联系的能力将受到限制。因此,我们必须改进位置编码。
Attention
=
Softmax
(
w
)
x
W
V
\text{Attention}=\operatorname{Softmax}(w)xW^V
Attention=Softmax(w)xWV
where w = 1 d ( x W Q ) ( x W K ) T \text{where}\qquad w=\frac{1}{\sqrt{d}}(xW^Q)(xW^K)^T wherew=d1(xWQ)(xWK)T
w A l s = ( ( x + p ) W Q ) ( ( x + p ) W K ) T d \begin{aligned} \\ w^{A l} s={\frac{\left(\left(x+p\right)W^{Q}\right)\left(\left(x+p\right)W^{K}\right)^{T}}{\sqrt{d}}} \end{aligned} wAls=d((x+p)WQ)((x+p)WK)T
TUPE提出了解耦绝对位置编码(公式4)作为传统位置编码公式的替代方案,其中
U
U
U是一个维数为
W
W
W的可学习绝对位置编码的线性变换矩阵。
w
A
b
s
=
1
2
d
(
x
W
Q
)
(
x
W
K
)
T
+
1
2
d
(
p
U
Q
)
(
p
U
K
)
T
\begin{aligned} w^{A b s}& =\frac{1}{\sqrt{2d}}\left(xW^Q\right)\left(xW^K\right)^T \\ &+\frac{1}{\sqrt{2d}}\left(pU^Q\right)\left(pU^K\right)^T \end{aligned}
wAbs=2d1(xWQ)(xWK)T+2d1(pUQ)(pUK)T
我们采用SWA公式5中使用的相对位置编码
r
∈
R
L
×
L
r \in \mathbb{R}^{L\times L}
r∈RL×L形式,其中
P
i
−
j
P_{i−j}
Pi−j是根据
i
−
j
i−j
i−j去索引的可学习变量。
r
i
j
=
P
i
−
j
\mathrm{r}_{ij}=\mathrm{P}_{i-j}
rij=Pi−j
我们将为单一图像设计的位置编码扩展到多图像的情况。我们首先将输入目标模板、前一个模板和搜索区域的特征沿W和H维度展开为一个维度L,并沿L维度将三者串联在一起
x
=
C
o
n
c
a
t
(
z
,
p
r
e
,
x
)
x = Concat (z, pre, x)
x=Concat(z,pre,x),并对绝对位置编码
p
=
C
o
n
c
a
t
(
p
z
,
p
p
r
e
,
p
x
)
p = Concat (pz, ppre, px)
p=Concat(pz,ppre,px)进行相同的操作。将相对位置编码 $r $划分为
n
×
m
=
9
n×m = 9
n×m=9 个独立区域来计算
P
i
−
j
P_{i-j}
Pi−j ,如图 2 中的位置编码所示。最后,我们得到 LCA 注意力公式6。
L
C
A
=
S
o
f
t
m
a
x
(
w
+
a
+
r
)
x
W
V
w
=
1
2
d
(
x
W
Q
)
(
x
W
K
)
T
a
=
1
2
d
(
p
U
Q
)
(
p
U
K
)
T
r
n
m
,
i
j
=
P
n
m
,
i
−
j
\begin{gathered} L C \mathrm{A}=\mathrm{Softmax}(w+a+r)xW^V \\ w=\frac{1}{\sqrt{2d}}(x W^{Q})(x W^{K})^{T} \\ a=\frac{1}{\sqrt{2d}}\left(pU^Q\right)\left(pU^K\right)^T \\ r_{nm,ij}=\mathbf{P}_{nm,i-j} \end{gathered}
LCA=Softmax(w+a+r)xWVw=2d1(xWQ)(xWK)Ta=2d1(pUQ)(pUK)Trnm,ij=Pnm,i−j
Discussions:
为什么引入额外的先验模板?
- 通过前面的模板引入丰富的背景信息,借助背景中前一个目标的相对位置来定位目标。
- 添加先前的模板可以实现在线更新,并且先前的模板在最近的时间点包含目标的状态,以便更准确地回归目标。
为什么我们没有将背景添加到目标模板中?
因为,前一个模板在时间上更接近当前帧,而初始目标在目标模板中包括背景并不重要,只包括未更新的目标可以强调跟踪器对目标跟踪的一致性。
Overall
模型整体结构如图3所示。
Backbone
主干网络接受目标模板 z ∈ R H z × W z × 3 z \in \mathbb{R}^{H_z \times W_z \times 3} z∈RHz×Wz×3,前一个模板 p r e ∈ R H p r e × W p r e × 3 pre \in \mathbb{R}^{H_{pre} \times W_{pre} \times 3} pre∈RHpre×Wpre×3和搜索图像 x ∈ R H z × W z × 3 x \in \mathbb{R}^{H_z \times W_z \times 3} x∈RHz×Wz×3的输入。为了更好地匹配LCA,我们选择具有相同Transformer结构的SWA来构建特征提取网络。在特征提取网络的第一阶段,我们使用大小为4的卷积核将图像特征修补并嵌入到 H 4 × H 4 × C \frac{H}{4}\times\frac{H}{4}\times{C} 4H×4H×C 的feature令牌中。在Transformer操作中,令牌将H、W两个尺寸扩展为长度L。然后通过两个SWA模块。在每个后续阶段之前使用PaE,H、W减半,而C加倍。在第三阶段,我们在一组中使用两个SWA模块与LCA模块交替叠加。我们把两个SWA模块作为一组,因为两个SWA模块完成一个窗口的转移和恢复。目标特征、先前特征和搜索特征分别依次通过PaE和SWA模块,三者沿L维度拼接后输入LCA,LCA的输出依次被SWA约简为三个令牌进行特征提取。最后,从骨干网中获得了 H 16 × W 16 × 4 C \frac{H}{16}×\frac{W}{16}×4C 16H×16W×4C令牌序列。
Neck
在这个阶段,我们添加关于前一个模板的目标位置和目标大小的编码信息。我们通过随机抖动前一个模板的区域来提高训练的稳健性,其中目标并不总是在图像的中心。先前的模板包含比目标更大的区域,为了避免相似目标引起的歧义,需要包含高斯定位信息。此外,我们采用了类似的方法,添加了
L
t
r
b
Ltrb
Ltrb表示的长度和宽度信息,以帮助模型预测。对于前一帧
b
p
r
e
=
{
b
x
1
,
b
y
1
,
b
x
2
,
b
y
2
}
b_{pre}=\{b^{x_1},b^{y_1},b^{x_2},b^{y_2}\}
bpre={bx1,by1,bx2,by2}的边界框,我们首先用
(
k
x
,
k
y
)
(k^x,k^y)
(kx,ky)表示特征图的每个位置。然后我们得到公式7表示的边界框信息
d
p
r
e
=
(
l
,
t
,
r
,
b
)
d_{pre} = (l, t, r, b)
dpre=(l,t,r,b)。
l
=
k
x
−
b
x
1
/
s
,
r
=
b
x
2
/
s
−
k
x
,
t
=
k
y
−
b
y
1
/
s
,
b
=
b
y
2
/
s
−
k
y
,
\begin{aligned} & l=k^{x}-b^{x_{1}}/s,r=b^{x_{2}}/s-k^{x}, \\ && \\ & t=k^{y}-b^{y_{1}}/s,\quad b=b^{y_{2}}/s-k^{y}, \\ && \end{aligned}
l=kx−bx1/s,r=bx2/s−kx,t=ky−by1/s,b=by2/s−ky,
其中
s
=
16
s = 16
s=16是图像映射到特征映射缩减的倍数。
d
p
r
e
∈
R
H
×
W
×
4
d_{pre}\in\mathbb{R}^{H\times W\times4}
dpre∈RH×W×4,
ψ
ψ
ψ是将
d
d
d的维度从4映射到C的多层感知器,以获得目标的尺寸信息嵌入。使用广播机制将前面提到的高斯位置映射
y
p
r
e
∈
R
H
×
W
×
1
y_{pre}\in\mathbb{R}^{H\times W\times1}
ypre∈RH×W×1乘以可学习权重
w
∈
R
1
×
1
×
C
w\in\mathbb{R}^{1\times 1\times C}
w∈R1×1×C,以获得先前目标的位置信息嵌入。Box-embedding由目标大小给出,目标位置嵌入直接通过以下等式求和:
Box-embedding
=
w
⋅
y
p
r
e
+
MLP
(
d
p
r
e
)
\text{Box-embedding}=w\cdot y_{pre}+\operatorname{MLP}(d_{pre})
Box-embedding=w⋅ypre+MLP(dpre)
然后我们依次与多个 LCA 模块重叠,以进一步处理目标的信息。在 LCA 的最后一层,我们只保留搜索特征到目标模板和前一个模板的注意力计算,然后将搜索特征图传递给分类头和回归头。
Head and Loss
头部网络包含两个分支:边界框回归头和分类头。回归图$ \mathbb{R}^{H×W×4} $和对应的预测图
R
H
×
W
×
1
\mathbb{R}^{H×W×1}
RH×W×1 分别通过三层感知器从搜索特征图中获得。回归损失使用常见的广义IoU损失,我们使用变焦损失的分类损失,它使用目前最流行的IoU感知设计。IOU-Aware的核心思想是用分类的正标签值代替IOU得分,将分类的传统正样本值标注为1,改进将回归任务与分类任务联系起来。变焦损失公式如下:
V
F
L
(
p
,
q
)
=
{
−
q
(
q
log
(
p
)
+
(
1
−
q
)
log
(
1
−
p
)
)
q
>
0
−
α
p
γ
log
(
1
−
p
)
q
=
0
\begin{aligned} VFL \mathrm{(p,q)}=\left\{\begin{array}{l l}{{-q(q\log(p)+(1-q)\log(1-p))}}&{{q>0}}\\ {{-\alpha p^{\gamma}\log(1-p)}}&{{q=0}}\end{array}\right. \end{aligned}
VFL(p,q)={−q(qlog(p)+(1−q)log(1−p))−αpγlog(1−p)q>0q=0
p
p
p 是分类预测,而
q
q
q 是目标的 IoU 分数。我们的总损失函数如下:
L
=
λ
cls
L
cls
(
p
,
IoU
(
b
^
,
b
)
)
+
λ
giu
L
giu
(
b
^
,
b
)
\mathcal{L}=\lambda_{\operatorname{cls}}\mathcal{L}_{\operatorname{cls}}\big(p,\operatorname{IoU}(\hat{b},b)\big)+\lambda_{\operatorname{giu}}\mathcal{L}_{\operatorname{giu}}(\hat{b},b)
L=λclsLcls(p,IoU(b^,b))+λgiuLgiu(b^,b)
对于权重
λ
c
l
s
λ_{cls}
λcls 设置为 1.5,
λ
g
i
o
u
λ_{giou}
λgiou 设置为 1.5。
Online Update Strategy
选择更新模板的一种常见方法是重新训练质量判断分支,但这种方法需要对模型进行两次训练。几乎所有的更新方法都将固定的超参数设置为阈值,并且仅当质量置信度高于此静态阈值时才更新。我们认为更新模板应该遵循两个原则:
- 更新后的模板应在时间上尽可能接近当前帧,以确保更新后的模板具有与当前帧最相似的状态。
- 更新的模板应尽可能高质量,具有良好的识别性和准确性。
对此,提出了一种具有简单分类置信度的动态阈值算法来选择理想的历史模板。
第一种算法使用分类置信度历史平均值作为阈值,如公式11所示:
m
e
a
n
=
∑
i
n
s
i
/
n
mean=\sum_i^n s_i/n
mean=i∑nsi/n
n
n
n是当前帧序列号
n
n
n,并且
s
i
s_i
si是第
i
i
i帧的分类置信度。作为阈值的平均值具有较低的更新标准,并且可以选择尽可能接近当前帧的历史模板。该方法在GOT-10k和TrackingNet数据集上表现出相对可靠的性能,但在长序列跟踪数据集Lasot上表现不佳。
我们分析了造成这种情况的原因:由于目标变形和人脸环境变化往往随着时间的增加而变得越来越复杂,模型在跟踪过程中不断积累错误,甚至在途中丢失后也会失去目标。这在GOT-10k和TrackingNet短序列数据集上并不明显,但像LaSOT这样的长序列基准更有可能遇到长时间的遮挡或目标消失,并且只使用较低的阈值将倾向于更新到错误的模板。
错误的更新将不断降低后续跟踪的分类置信度,使平均公式的阈值无效。因此,我们进一步提出了一种改进的计算方法,提出了一种带惩罚的阈值公式12。
带有惩罚的阈值公式的结果更多地依赖于先前的分类置信度分数,并且与平均公式相比,结果更稳定。保持较高的阈值可以使模型在遇到目标长时间消失和遮挡时抵制错误的模板更新。
p
-
m
e
a
n
=
∑
n
(
∑
i
m
s
i
/
m
)
/
n
=
[
(
s
1
+
s
1
2
+
…
s
1
n
)
+
(
s
2
2
+
…
s
2
n
)
+
…
(
s
n
n
)
]
/
n
p\text{-}mean=\sum^n\bigl(\sum_i^m s_i/m\bigr)/n \\ =[(s_1+\frac{s_1}{2}+\dots\frac{s_1}{n}) +\big(\frac{s_2}{2}+\ldots\frac{s_2}{n})+\ldots(\frac{s_n}{n})]/n
p-mean=∑n(i∑msi/m)/n=[(s1+2s1+…ns1)+(2s2+…ns2)+…(nsn)]/n
带有惩罚的阈值公式的结果更依赖于先验分类置信度分数,与平均公式相比,结果更加稳定。