Abstract
自我注意力机制能够捕获序列特征和全局信息,被广泛应用于各种NLP和CV任务中,并提高了其性能。本工作致力于研究若何将自我注意力机制进行扩展以更好地在识别细粒度物体(如不同种类的鸟或人的身份识别)时更好地对微妙的嵌入特征进行学习。为此,我们提出了与自我注意力学习相配合的双交叉注意力学习(DCAL)算法。首先,我们提出了全局-局部交叉注意力来促进全局图像和局部高响应图像区域之间的信息交互,这有助于加强空间上的识别线索。其次,我们提出了逐对交叉注意力(PWCA)来建立图像对之间的交互。PWCA可以通过将另一幅图像作为干扰物对图像的注意力学习进行正则化,并在推理过程中去除干扰物。我们观察到DCAL可以减少误导注意力,分散注意力响应,发现更多的互补部分进行识别。我们对细粒度视觉分类和对象再识别进行了广泛的评估。实验证明,DCAL的表现与最先进的方法相当,并持续改善多个自我注意基线,例如,在MSMT17上,分别超过DeiT-Tiny和ViT-Base 2.8%和2.4% mAP。
1. Introduction
自我注意是一种注意机制,它可以将单个序列的不同位置联系起来,形成全局依赖关系。
由于不同子类之间的细微视觉差异,细粒度识别比一般图像分类更具挑战性。现有的大多数方法都是基于CNN来预测类概率或测量特征距离。为了处理细微的外观变化,通常通过学习空间注意或显式地定位语义对象/部分来捕捉局部特征。我们采用了一种基于vision Transformer的不同方式来合并本地信息。为此,我们提出了全局-局部交叉注意(global-local cross-attention, GLCA)来增强全局图像与局部高响应区域之间的相互作用。具体来说,我们计算查询向量的选定子集和键值向量的整个集合之间的交叉注意。通过与自我注意学习的协调,GLCA可以帮助强化空间上的辨别线索,以识别细粒度的对象。
除了整合局部信息,区分细微视觉差异的另一种解决方案是成对学习。直觉是,人们可以通过比较图像对来识别微妙的变化。现有的基于cnn的方法设计了专用的网络架构,以实现成对的特征交互。对比损失[16]或评分排序损失[69]用于特征学习。基于此,我们还采用了一种成对学习方案来建立图像对之间的相互作用。与优化特征距离不同,我们提出了两两交叉注意(成对交叉注意,PWCA),通过将另一幅图像作为干扰物,来规范图像的注意学习。具体来说,我们计算一个图像的查询和两个图像的组合键值之间的交叉注意。通过在键和值向量中引入混淆,注意力分数被扩散到另一幅图像上,从而增加了当前图像的注意学习难度。这样的正则化使得网络能够发现更多的鉴别区域,并减轻对样本特定特征的过拟合。值得注意的是,PWCA仅用于训练,因此在推理过程中不会引入额外的计算成本。
提出的两类交叉注意易于实现,并且与自我注意学习兼容。我们对细粒度视觉分类(FGVC)和对象再识别(Re-ID)进行了广泛的评估。实验证明,DCAL的表现与最先进的方法相当,并持续改善多个自我注意基线。
我们的主要贡献可以概括如下。(1)提出全局-局部交叉注意增强全局图像与局部高响应区域之间的相互作用,以增强空间上的判别线索。(2)通过正则化注意学习,我们提出了成对交叉注意来建立图像对之间的相互作用。(3)提出的双交叉注意学习可以补充自我注意学习,并在不同FGVC和Re-ID基准的多个视觉Transformer基线上实现一致的性能提升。
2. Related Work
2.1. Self-Attention Mechanism
2.2. Fine-Grained Visual Categorization
2.3. Object Re-Identification
3. Proposed Approach
3.1. Revisit Self-Attention
[ Attention is all you need, 2017]最初提出了自我注意机制,通过计算每个单词与句子中所有其他单词之间的相关性来解决NLP任务。[12]继承了这一思想,将图像/特征图中的每个分块作为用于一般图像分类的单词。总的来说,自注意函数可以描述为将查询向量和一组键和值向量映射到输出。输出是作为值向量的加权和计算的,其中分配给每个值的权重是通过查询与相应键的缩放内积计算的。具体来说,查询
q
∈
R
1
×
d
q \in \mathbb{R}^{1\times d}
q∈R1×d首先使用内积和
N
N
N个键向量(
K
=
[
k
1
;
k
2
;
.
.
.
;
k
N
]
K=[k_1;k_2;...;k_N]
K=[k1;k2;...;kN],其中
k
i
∈
R
1
×
d
k_i \in \mathbb{R}^{1\times d}
ki∈R1×d)做匹配。然后,这些内积通过softmax函数做缩放和归一化得到
N
N
N个注意力权重。最终的输出是
N
N
N个值向量(
V
=
[
v
1
;
v
2
;
.
.
.
;
v
N
]
V=[v_1;v_2;...;v_N]
V=[v1;v2;...;vN],其中
v
i
∈
R
1
×
d
v_i\in \mathbb{R}^{1\times d}
vi∈R1×d)的加权和。通过将
N
N
N个查询向量打包为一个矩阵
Q
=
[
q
1
;
q
2
;
.
.
.
;
q
N
]
Q=[q_1;q_2;...;q_N]
Q=[q1;q2;...;qN],自我注意力的输出矩阵可以表示为:
f
S
A
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
V
)
=
S
V
(
1
)
f_{SA}(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}}V)=SV\space(1)
fSA(Q,K,V)=softmax(dQKTV)=SV (1)
其中,
1
d
\frac{1}{\sqrt{d}}
d1是缩放因子,查询、键、值矩阵由同一个输入嵌入
X
X
X的不同线性变换得到:
Q
=
X
W
Q
Q=XW_Q
Q=XWQ,
K
=
X
W
K
K=XW_K
K=XWK,
V
=
X
W
V
V=XW_V
V=XWV。
S
∈
R
N
×
N
S\in \mathbb{R}^{N\times N}
S∈RN×N表示注意力权重矩阵。
为了同时处理不同位置的表示子空间的信息,提出了一个考虑多个注意力头的多头注意力模块(MSA)。MSA的过程可以计算为带有子嵌入的自注意块的拼接上的线性变换。为了编码位置信息,固定/可学习的位置嵌入被添加到补丁嵌入中,然后馈送到网络中。为了预测类别,在所有网络的输入嵌入
X
X
X的前面增加了一个类别嵌入
C
L
S
^
∈
R
1
×
d
\hat{CLS}\in \mathbb{R}^{1\times d}
CLS^∈R1×d,最终用一个线性分类器得到预测结果。因此,输入嵌入以及查询、键、值矩阵变为
(
N
+
1
)
×
d
(N+1)\times d
(N+1)×d维,公式(1)使得图像块以及类嵌入之间的信息得到扩散。
基于自我注意,可以使用一个MSA层和一个前馈网络(FFN)构建Transformer编码器模块,FFN由两个带有GELU激活的线性变换组成。层归一化(LN)置于每个MSA和FFN层之前,并对每一层都使用残差连接。
3.2. Global-Local Cross-Attention
由式(1)可知,自我注意力在计算全局注意力得分时平等地对待每一个查询。换句话说,图像的每一个局部位置以同样的方式和所有位置进行交互。为了对细粒度的目标进行识别,我们期望挖掘具有分辨力的局部信息实现对微妙特征的学习。基于此,我们提出了全局-局部交叉注意力来增进全局图像和局部高响应图像区域的信息交互。首先我们遵循[Quantifying attention flow in transformers, 2020]的注意力流程计算第i个模块的累积注意力得分:
S
i
^
=
S
ˉ
i
⨂
S
ˉ
i
−
1
⋯
⨂
S
ˉ
1
(
2
)
\hat{S_i}=\bar{S}_i\bigotimes\bar{S}_{i-1}\cdots\bigotimes\bar{S}_1\space\space\space(2)
Si^=Sˉi⨂Sˉi−1⋯⨂Sˉ1 (2)
其中
S
ˉ
=
0.5
S
+
0.5
E
\bar{S}=0.5S+0.5E
Sˉ=0.5S+0.5E的含义是使用单位矩阵
E
E
E考虑残差连接以重新归一化注意力权重。
⨂
\bigotimes
⨂指的是矩阵乘法操作。我们通过这种方式来追踪从输入层到更高层的信息传播。然后,我们使用聚合的注意力图来挖掘高响应区域。根据公式(2),
S
^
i
=
[
s
^
i
,
j
]
(
N
+
1
)
×
(
N
+
1
)
\hat{S}_i=[\hat{s}_{i,j}]_{(N+1)\times(N+1)}
S^i=[s^i,j](N+1)×(N+1)的第一行代表类别嵌入
C
L
S
^
\hat{CLS}
CLS^的累积权重。我们从
Q
i
Q_i
Qi中选取对类别嵌入
C
L
S
^
\hat{CLS}
CLS^的累积权重响应最高的前
R
R
R个查询向量构建一个新的查询矩阵
Q
l
Q^l
Ql,表示最值得注意的局部嵌入。最终,我们通过下式计算得到所选局部查询与全局键-值对的交叉注意力:
f
G
L
C
A
(
Q
l
,
K
g
,
V
g
)
=
s
o
f
t
m
a
x
(
Q
l
K
g
T
d
V
g
)
(
3
)
f_{GLCA}(Q^l,K^g,V^g)=softmax(\frac{Q^l{K^g}^T}{\sqrt{d}}V^g)\space\space\space(3)
fGLCA(Ql,Kg,Vg)=softmax(dQlKgTVg) (3)
在自我注意力(式1)中,所有的查询向量都和键-值对进行交互。在我们的GLCA(式2)中,只有查询向量的一部分子集与键-值对进行交互。我们观察到,GLCA可以帮助加强空间上的区分线索,以促进细粒度类的识别。另外的一种选择是计算局部查询
Q
l
Q^l
Ql和局部键-值向量(
K
l
K^l
Kl,
V
l
V^l
Vl)之间的自我注意力。但是,通过建立局部查询和全局键值向量之间的交互,我们不仅可以将高响应区域与自身联系起来,还可以将高响应区域与外部的其他上下文联系起来。图1 (a)说明了提出的全局局部交叉注意,我们在方法中使用M = 1 GLCA块。
3.3. Pair-Wise Cross-Attention
细粒度识别数据集的规模通常没有一般的图像分类那么大,例如ImageNet[9]包含超过100万张1,000类的图像,而CUB[47]只包含5,994张200类的图像用于训练。此外,与大规模分类任务相比,FGVC和Re-ID在类间存在较小的视觉差异。每个类的样本数量较少可能导致网络过拟合到特定样本的特征,以区分视觉上混淆的类,以最小化训练误差。
为了缓解这一问题,我们提出了成对交叉注意来建立图像对之间的相互作用。PWCA可以被看作是一种新的正则化方法来正则化注意学习。具体第,我们从同一训练集中采样两张图像
(
I
1
,
I
2
)
(I_1, I_2)
(I1,I2)构建图像对。对成对的每个图像分别计算它们的查询、键、值向量。对于图像
I
1
I_1
I1的训练,我们将两张图像的键和值矩阵拼接起来,然后计算目标图像的查询与合并后的键-值对之间的注意力:
f
P
W
C
A
(
Q
1
,
K
c
,
V
c
)
=
s
o
f
t
m
a
x
(
Q
1
K
c
T
d
V
c
)
(
4
)
f_{PWCA}(Q_1,K_c,V_c)=softmax(\frac{Q_1{K_c}^T}{\sqrt{d}}V_c)\space\space\space(4)
fPWCA(Q1,Kc,Vc)=softmax(dQ1KcTVc) (4)
其中,
K
c
=
[
K
1
;
K
2
]
∈
R
(
2
N
+
2
)
×
d
K_c=[K_1;K_2]\in\mathbb{R}^{(2N+2)\times d}
Kc=[K1;K2]∈R(2N+2)×d,
V
c
=
[
V
1
;
V
2
]
∈
R
(
2
N
+
2
)
×
d
V_c=[V_1;V_2]\in\mathbb{R}^{(2N+2)\times d}
Vc=[V1;V2]∈R(2N+2)×d。对于来自
I
1
I_1
I1的特定查询,我们根据式4计算
N
+
1
N+1
N+1个与它自己的自注意力和
N
+
1
N+1
N+1个与
I
2
I_2
I2的交叉注意力。所有的
2
N
+
2
2N+2
2N+2个注意力得分由softmax进行统一的归一化处理,由此学得了目标图像
I
1
I_1
I1的受污染的注意力得分。对此有噪声的注意力输出进行优化增加了为了训练的难度,降低了对特定样本特征过拟合的风险。图1(b)展示了所提的PWCA方法,我们使用了
T
=
12
T=12
T=12个PWCA模块。请注意,PWCA只用于训练,在推理时将被删除,而不会消耗额外的计算成本。
4. Experiments
4.1. Experomental Setting
Datasets. 我们对两种细粒度识别任务:细粒度视觉分类(FGVC)和对象再识别(Re-ID)进行了大量的实验。对FGVC任务,我们使用三种标准数据集进行评估:CUB-200-2011,Stanford Cars,FGVC-Aircraft。对于Re-ID任务,我们使用四种标准数据集:Market1501,DukeMTMC-ReID,用于人类重识别的MSMT17和用于车辆重识别的VeRi-776。在所有实验中我们使用官方的训练和验证集划分进行评估。
Baselines. 我们使用DeiT和ViT作为自我注意力基准模型。其中,ViT主干网络是经过ImageNet-21k预训练的,DeiT主干网络是经过ImageNet-1k预训练的。我们使用多种具有L=12SA模块的 DeiTT/16, DeiT-S/16, DeiT-B/16, ViT-B/16, R50-ViT-B/16架构进行评估。
Implementation Details. 我们以多任务学习的形式来协调提出的两种类型的交叉注意和自我注意。我们建立L = 12 SA块,M = 1GLCA块和T = 12 PWCA块作为训练的整体架构。PWCA分支与SA分支共享权重,而GLCA不与SA共享权重。我们遵循[Fairmot, 2021]采用动态损失权值进行协同优化,避免了手工超参数搜索的累赘。PWCA分支与SA分支具有相同的GT目标,因为我们将另一幅图像作为干扰。
对于FGVC,我们将原始图像的大小调整为550×550,并随机裁剪为448×448进行训练。自注意基线的输入嵌入序列长度为
28 × 28 = 784。
。。。
4.2. Results on Fine-Grained Visual Categorization
使用三种标准数据集与最先进的方法进行对比,结果见表1.
Comparisons to Transformer-based Methods.
performs on par with recent Transformer variants on FGVC.
Comparisons to CNN-based Methods.
supasses
4.3. Results on Object Re-ID
Comparisons to Transformer-based Methods.
Comparisons to CNN-based Methods.
4.4. Ablation Study
Contributions from Algorithmic Components.
两种类型的交叉注意模块使用不同的vision Transformer基线的贡献见表3.
Ablation Study on GLCA.
Ablation Study on PWCA.
Amount of Cross-Attention Blocks.
4.5. Qualitative Analysis
4.6. Limitations
与自我注意学习基线相比,我们的方法进行了自我注意和提出的两种交叉注意的联合训练,网络收敛的时间可能更长.另一个局限性是,与自我注意基线相比,GLCA会增加较小的计算成本。
5. Conclusion
在这项工作中,我们引入了两种类型的交叉注意机制,以更好地学习用于识别细粒度对象的微妙特征嵌入。GLCA可以通过建模全局图像和局部区域之间的相互作用来增强空间上的判别线索。PWCA可以建立图像对之间的相互作用,可以看作是一种缓解过拟合的正则化策略。我们的交叉关注设计易于实现,并且与不同的视觉Transformer基线兼容。在七个基准上的大量实验证明了我们的方法在FGVC和Re-ID任务上的有效性。我们期望我们的方法能够为Transformer的自我注意学习机制提供新的见解。