摘要
视觉转换器(Vision Transformers,ViTs)的出现标志着计算机视觉领域的一次重大范式转变。ViTs通过自注意力模块捕获图像的全局信息,这些模块在图像块化的标记之间进行点积计算。虽然自注意力模块使ViTs能够捕获长距离依赖关系,但其计算复杂度与标记数量呈二次方增长,这严重阻碍了ViTs的实际应用。此外,深层ViTs中的自注意力机制也容易受到注意力饱和问题的影响。因此,我们反对在每一层中计算注意力分数的必要性,并提出了少注意力视觉转换器(Less-Attention Vision Transformer,LaViT),该转换器在每个阶段仅计算少量注意力操作,并通过利用先前计算的注意力分数进行注意力变换,在其他层中计算后续的特征对齐。这种新颖的方法可以缓解传统自注意力模块面临的两个主要问题:计算负担重和注意力饱和。我们提出的架构具有卓越的效率和易于实现的优点,仅需要当代深度学习框架中高度优化的矩阵乘法。此外,我们的架构在各种视觉任务中均表现出色,包括分类、检测和分割。
- 引言
近年来,计算机视觉领域经历了快速的增长和发展,这主要得益于深度学习技术的进步和大型数据集的可用性。在众多突出的深度学习技术中,卷积神经网络(Convolutional Neural Networks, CNNs)[8]已被证明特别有效,在包括图像分类[8,28]、目标检测[5,22]和语义分割[1,23]在内的广泛应用中展示了卓越的性能。
受Transformers [27]在自然语言处理领域取得巨大成功的启发,视觉转换器(Vision Transformers,ViTs)[4]将每张图像分割成一组标记(tokens)。然后对这些标记进行编码,以生成一个注意力矩阵,该矩阵是自注意力机制的基本组成部分。自注意力机制的计算复杂度与标记的数量呈二次方增长,而高分辨率图像的计算负担会更重。一些研究人员试图通过动态选择[9, 21]或标记剪枝[33]来减少标记冗余,以减轻注意力计算的计算负担。这些方法已证明与标准ViT具有相当的性能。然而,涉及标记减少和剪枝的方法需要精心设计标记选择模块,并可能导致意外丢失关键标记。在本文中,我们探索了一个不同的方向,并重新思考了自注意力机制。在[38]中提出的注意力饱和问题中,随着ViTs层数的逐渐加深,注意力矩阵往往保持基本不变,这与前面层中观察到的权重分配相似。考虑到这些因素,我们不禁要问:
在整个网络从开始到结束的每个阶段中,始终如一地应用自注意力机制真的是必要的吗?
在本文中,我们提出了通过引入少注意力视觉转换器(Less-Attention Vision Transformer,LaViT)来修改标准ViT的基本架构。如图1所示,我们的框架由普通注意力(Vanilla Attention,VA)层和我们提出的少注意力(Less Attention,LA)层组成,以捕获长距离关系。在每个阶段中,我们仅计算传统的自注意力,并将注意力分数存储在少数初始的普通注意力(VA)层中。在后续层中,我们利用先前计算的注意力矩阵高效地生成注意力分数,从而减轻了与自注意力机制相关的二次计算开销。此外,我们在不同阶段的下采样过程中在注意力层内集成了残差连接,以便在通过其他路径传输全局上下文信息的同时,保留在较早阶段学习的关键语义信息。最后,我们精心设计了一种新颖的损失函数,以在转换过程中保持注意力矩阵的对角线特性。这些关键组件使我们的ViT模型能够降低计算复杂性和注意力饱和,最终通过减少每秒浮点运算次数(FLOPs)和显著提高吞吐量来实现显著的性能提升。
为了验证我们提出方法的有效性,我们在各种基准数据集上进行了全面的实验,将我们的模型性能与现有的最先进的ViT变体(也包括最近的高效ViT)进行了比较。实验结果表明,我们的方法在解决注意力饱和问题并在视觉识别任务中实现卓越性能方面是有效的。
我们的主要贡献总结如下:
- 我们提出了一种新的ViT架构,该架构通过重新参数化先前层计算的注意力矩阵来生成注意力分数。这种方法解决了注意力饱和问题及其相关的计算负担。
- 此外,我们提出了一种新的损失函数,该损失函数在注意力重新参数化的过程中努力保持注意力矩阵的对角线特性。我们认为这对于维护注意力的语义完整性至关重要,确保了注意力矩阵能够准确反映输入标记之间的相对重要性。
- 在各种视觉任务(包括分类、检测和分割)中,我们的架构在保持相似甚至降低计算复杂性和内存消耗的同时,始终优于几种最先进的ViT。
- 相关工作
2.1. 视觉转换器
Transformer架构最初是为机器翻译而引入的[27],随后通过ViT[4]的发展被应用于计算机视觉任务。ViT的关键创新在于其能够通过融入自注意力机制来捕获图像中远距离区域之间的长距离依赖关系。
基于ViT的成功,涌现出大量变体模型,每个模型都旨在改善原始架构固有的特定限制。例如,DeiT[25]通过引入蒸馏标记来提高训练过程中的数据效率。此外,CvT[32]和CeiT[36]将卷积结构集成到ViT框架中,以结合CNN(空间不变性)和ViT(长距离依赖建模)的优势。这些进展凸显了基于Transformer的架构在计算机视觉领域中的持续发展。
2.2. 高效视觉转换器
尽管ViT非常有效,但它面临着巨大的计算负担。关于高效视觉转换器的研究通过引入分层下采样操作[17,29,30]、标记减少[9,21,33]或轻量级架构设计[18,19]来解决自注意力操作的二次成本问题。分层下采样操作通过在不同阶段逐渐减少标记数量来解决自注意力的二次计算问题[17,18,29,30],使ViT能够学习分层结构。另一个研究方向是引入标记选择模块来消除意义最小的标记并减轻计算负担。例如,[9,21,33]通过保留信息量大的图像标记并丢弃关注较少的标记来重新组织图像标记,以加快后续MHSA和FFN的计算。
2.3. 注意力机制
ViT的关键组成部分是注意力机制,它计算所有块之间的成对相互作用,导致与输入大小相关的二次复杂度。这个问题导致了繁重的推理计算,阻碍了ViT在现实世界中的实际应用。一些研究表明,通过利用稀疏注意力机制可以减轻计算负担,稀疏注意力机制基于块的相关性或邻近性选择性地关注子集。一个值得注意的方法是自适应稀疏标记剪枝框架[31],它诱导出稀疏注意力矩阵,有效地解决了计算效率问题。此外,采用结构化稀疏模式等技术[3,6,21]可以进一步降低计算复杂度,从而提高ViT的整体效率。另一个亟待解决的问题是注意力饱和问题,即随着层数的增加,注意力矩阵的变化变得有限。在DeepViT[38]和CaiT[26]等研究中已经认识到这个问题,这些研究指出注意力饱和阻碍了深层ViT捕获额外语义信息的能力,甚至可能降低训练的稳定性。因此,必须仔细设计ViT中的自注意力机制,以避免次优解。
3. 方法论
在本节中,我们首先回顾了分层视觉转换器的基本设计。然后,我们讨论了其注意力机制的两大主要弱点,并提出在每个阶段可以用较少的注意力来掌握自注意力。我们通过利用前一层的存储注意力矩阵来动态地重新参数化注意力分数,从而有效地缓解了注意力饱和的问题。此外,我们集成了残差连接,以便从早期阶段传递全局关系。最后但同样重要的是,我们引入了一种新的损失,即对角保持损失,以保持变换后的注意力中的基本属性(即表示标记之间的关系)。
3.1. 视觉转换器
设 x ∈ R H × W × C \mathbf{x} \in \mathbb{R}^{H \times W \times C} x∈RH×W×C 表示一个输入图像,其中 H × W H \times W H×W 表示空间分辨率, C C C 表示通道数。我们首先将图像分割成 N = H W / p 2 N=HW / p^{2} N=HW/p2 个块,每个块 P i ∈ R p × p × C ( i ∈ { 1 , … , N } ) P_{i} \in \mathbb{R}^{p \times p \times C}(i \in\{1, \ldots, N\}) Pi∈Rp×p×C(i∈{1,…,N}) 的大小为 p × p p \times p p×p 像素,具有 C C C 个通道。块大小 p p p 是一个超参数,决定了标记的粒度。可以通过使用步长和内核大小等于块大小的卷积运算符来提取块嵌入。然后,每个块通过非重叠卷积投影到嵌入空间 Z ∈ R N × D \boldsymbol{Z} \in \mathbb{R}^{N \times D} Z∈RN×D,其中 D D D 表示每个块的维度。
多头自注意力。我们首先简要概述处理嵌入块并在多头自注意力块(MHSA)框架内工作的原始自注意力机制。在第 l l l 个MHSA块中,输入 Z l − 1 , l ∈ { 1 , ⋯ , L } \boldsymbol{Z}_{l-1}, l \in\{1, \cdots, L\} Zl−1,l∈{1,⋯,L} 被投影成三个可学习的嵌入 { Q , K , V } ∈ R N × D \{\mathbf{Q}, \mathbf{K}, \mathbf{V}\} \in \mathbb{R}^{N \times D} {Q,K,V}∈RN×D。多头注意力旨在从不同视角捕获注意力;为了简单起见,我们选择 H H H 个头,每个头是一个维度为 N × D H N \times \frac{D}{H} N×HD 的矩阵。第 h h h 个头的注意力矩阵 A h \mathbf{A}_{h} Ah 可以通过以下方式计算:
A h = Softmax ( Q h K h ⊤ d ) ∈ R N × N \mathbf{A}_{h}=\operatorname{Softmax}\left(\frac{\mathbf{Q}_{h} \mathbf{K}_{h}^{\top}}{\sqrt{d}}\right) \in \mathbb{R}^{N \times N} Ah=Softmax(dQhKh⊤)∈RN×N
其中,
A
h
\mathbf{A}_{h}
Ah、
Q
h
\mathbf{Q}_{h}
Qh 和
K
h
\mathbf{K}_{h}
Kh 分别是第
h
h
h 个头的注意力矩阵、查询和键。我们还将值
V
\mathbf{V}
V 分割成
H
H
H 个头。为避免由概率分布的锐度引起的梯度消失问题,我们将
Q
h
\mathbf{Q}_{h}
Qh 和
K
h
\mathbf{K}_{h}
Kh 的内积除以
d
(
d
=
D
/
H
)
\sqrt{d}(d=D / H)
d(d=D/H)。将注意力矩阵连接为:
A
=
Concat
(
A
1
,
⋯
,
A
h
,
⋯
,
A
H
)
V
=
Concat
(
V
1
,
⋯
,
V
h
,
⋯
,
V
H
)
\begin{array}{l} \mathbf{A}=\operatorname{Concat}\left(\mathbf{A}_{1}, \cdots, \mathbf{A}_{h}, \cdots, \mathbf{A}_{H}\right) \\ \mathbf{V}=\operatorname{Concat}\left(\mathbf{V}_{1}, \cdots, \mathbf{V}_{h}, \cdots, \mathbf{V}_{H}\right) \end{array}
A=Concat(A1,⋯,Ah,⋯,AH)V=Concat(V1,⋯,Vh,⋯,VH)
在空间分割的标记之间计算得到的注意力可以引导模型关注视觉数据中最有价值的标记。随后,对相应的值 V \mathbf{V} V 应用加权线性聚合:
Z M H S A = A V ∈ R N × D \boldsymbol{Z}^{\mathrm{MHSA}}=\mathbf{A V} \in \mathbb{R}^{N \times D} ZMHSA=AV∈RN×D
下采样操作。受卷积神经网络(CNN)中分层结构成功的启发,一些研究已经将分层结构融入到视觉转换器(ViTs)中。这些工作将转换器块划分为
M
M
M 个阶段,并在每个转换器阶段之前应用下采样操作,从而缩短序列长度。在我们的研究中,我们使用了一个卷积层来进行下采样操作,其中卷积核大小和步长都设置为2。这种方法允许在每个阶段灵活调整特征图的尺度,从而建立一个反映人类视觉系统组织的转换器分层结构。
3.2. 低注意力框架
我们的网络架构的总体框架如图1所示。在每个阶段,我们分两个阶段提取特征表示。在最初的几个普通注意力(VA)层中,我们执行标准的MHSA操作来捕获整体的长距离依赖关系。随后,我们模拟注意力矩阵,通过对存储的注意力分数应用线性变换,来减轻二次计算量并解决后续低注意力(LA)层中的注意力饱和问题。在这里,我们将第 m m m阶段第 l l l个VA层中Softmax函数之前的注意力分数表示为 A m V A , l \mathbf{A}_{m}^{\mathrm{VA}, l} AmVA,l,它是通过以下标准过程计算的:
A m V A , l = Q m l ( K m l ) ⊤ d , l ≤ L m V A \mathbf{A}_{m}^{\mathrm{VA}, l}=\frac{\mathbf{Q}_{m}^{l}\left(\mathbf{K}_{m}^{l}\right)^{\top}}{\sqrt{d}}, l \leq L_{m}^{\mathrm{VA}} AmVA,l=dQml(Kml)⊤,l≤LmVA
其中, Q m l \mathbf{Q}_{m}^{l} Qml和 K m l \mathbf{K}_{m}^{l} Kml分别表示第 m m m阶段第 l l l层的查询和键,它们是从前一阶段下采样得到的。 L m V A L_{m}^{\mathrm{VA}} LmVA用于表示VA层的数量。在初始的普通注意力阶段之后,我们放弃了传统的二次MHSA操作,并对 A m V A \mathbf{A}_{m}^{\mathrm{VA}} AmVA应用变换,以减少注意力计算量。此过程涉及两次线性变换,并在中间进行一次矩阵转置操作。为了说明,我们考虑阶段中第 l l l个( l > L m V A l>L_{m}^{\mathrm{VA}} l>LmVA)层(LA层)的注意力矩阵:
A m l = Ψ ( Θ ( A m l − 1 ) ⊤ ) ⊤ , L m V A < l ≤ L m Z L A , l = Softmax ( A m l ) V l \begin{array}{l} \mathbf{A}_{m}^{l}=\Psi\left(\Theta\left(\mathbf{A}_{m}^{l-1}\right)^{\top}\right)^{\top}, \quad L_{m}^{\mathrm{VA}}<l \leq L_{m} \\ \mathbf{Z}^{\mathrm{LA}, l}=\operatorname{Softmax}\left(\mathbf{A}_{m}^{l}\right) \mathbf{V}^{l} \end{array} Aml=Ψ(Θ(Aml−1)⊤)⊤,LmVA<l≤LmZLA,l=Softmax(Aml)Vl
在此上下文中,由 Ψ \Psi Ψ和 Θ \Theta Θ表示的变换指的是维度为 R N × N \mathbb{R}^{N \times N} RN×N的线性变换层。这里, L m L_{m} Lm和 L m V A L_{m}^{\mathrm{VA}} LmVA分别表示第 m m m阶段中的层数和VA层数。在这两个线性层之间插入转置操作是为了保持矩阵的相似性行为。这一步至关重要,因为单层线性变换是按行进行变换的,这可能会导致对角线特性的丢失。
3.3. 基于残差的注意力下采样
当计算遍历分层ViTs中的各个阶段时,通常会对特征图进行下采样操作。虽然这种技术减少了标记的数量,但可能会导致重要上下文信息的丢失。因此,我们认为从前一阶段学习到的注意力亲和力对于当前阶段捕获更复杂的全局关系可能是有利的。受ResNet[7]的启发,ResNet通过引入快捷连接来缓解特征饱和问题,我们采用了类似的概念并将其融入到我们架构中的下采样注意力计算中。通过引入快捷连接,我们可以将固有偏差引入当前的MHSA块。这使得前一阶段的注意力矩阵能够有效地指导当前阶段的注意力计算,从而保留关键的上下文信息。
然而,在这种情况下,直接将快捷连接应用于注意力矩阵可能会带来挑战,这主要是由于当前阶段和前一阶段之间注意力维度的差异。在这里,我们设计了一个注意力残差(AR)模块,该模块由深度卷积(DWConv)和一个 C o n v 1 × 1 Conv_{1 \times 1} Conv1×1层组成,用于对前一阶段的注意力图进行下采样,同时保持语义信息。我们将前一阶段(即第 m − 1 m-1 m−1阶段)的最后一个注意力矩阵(位于 L m − 1 L_{m-1} Lm−1层)表示为 A m − 1 last \mathbf{A}_{m-1}^{\text {last }} Am−1last ,将当前阶段(即第 m m m阶段)的下采样初始注意力矩阵表示为 A m init \mathbf{A}_{m}^{\text {init }} Aminit 。 A m − 1 last \mathbf{A}_{m-1}^{\text {last }} Am−1last 的维度为 R B × H × N m − 1 × N m − 1 \mathbb{R}^{B \times H \times N_{m-1} \times N_{m-1}} RB×H×Nm−1×Nm−1(其中 N m − 1 N_{m-1} Nm−1表示第 m − 1 m-1 m−1阶段的标记数量)。我们将多头维度 H H H视为常规图像空间中的通道维度,因此,通过DWConv算子(步长 = 2 =2 =2,核大小 = 2 =2 =2),我们可以在注意力下采样过程中捕获标记之间的空间依赖性。DWConv变换后的输出矩阵符合当前阶段注意力矩阵的大小,即 R B × H × N m × N m \mathbb{R}^{B \times H \times N_{m} \times N_{m}} RB×H×Nm×Nm(在我们的情况下, N m = N m − 1 / 2 N_{m}=N_{m-1} / 2 Nm=Nm−1/2)。对注意力矩阵进行深度卷积后,我们再执行 C o n v 1 × 1 Conv_{1 \times 1} Conv1×1来交换不同头之间的信息。我们的注意力下采样过程如图2所示,从 A m − 1 last \mathbf{A}_{m-1}^{\text {last }} Am−1last 到 A m init \mathbf{A}_{m}^{\text {init }} Aminit 的变换可以表示为:
A m init = Conv 1 × 1 ( Norm ( DWConv ( A m − 1 last ) ) ) A m V A ← A m V A + LS ( A m init ) \begin{array}{l} \mathbf{A}_{m}^{\text {init }}=\operatorname{Conv}_{1 \times 1}\left(\operatorname{Norm}\left(\operatorname{DWConv}\left(\mathbf{A}_{m-1}^{\text {last }}\right)\right)\right) \\ \mathbf{A}_{m}^{\mathrm{VA}} \leftarrow \mathbf{A}_{m}^{\mathrm{VA}}+\operatorname{LS}\left(\mathbf{A}_{m}^{\text {init }}\right) \end{array} Aminit =Conv1×1(Norm(DWConv(Am−1last )))AmVA←AmVA+LS(Aminit )
其中LS是[26]中引入的层缩放算子,用于缓解注意力饱和问题。 A m V A \mathbf{A}_{m}^{\mathrm{VA}} AmVA是第 m m m阶段第一层的注意力分数,它是通过将标准MHSA(使用等式4)与等式6计算的残差相加来计算的。
我们的注意力下采样模块遵循两个基本设计原则。首先,我们利用深度卷积(DWConv)在下采样过程中捕获空间局部关系,从而有效地压缩注意力关系。其次,利用 C o n v 1 × 1 Conv_{1 \times 1} Conv1×1操作来跨头交换注意力信息。这一设计至关重要,因为它促进了注意力从前一阶段到后一阶段的有效传播。将残差注意力机制纳入其中通常只需要对现有ViT主干网络进行少量调整,通常涉及添加几行代码。值得强调的是,这种技术可以无缝地应用于Transformer架构的各种版本。唯一的前提是存储前一层的注意力分数,并相应地建立到这一层的跳跃连接。这一模块的重要性将通过全面的消融研究进一步阐明。
3.4 对角线保持损失
我们通过结合注意力变换算子精心设计了Transformer模块,旨在缓解计算成本和注意力饱和的问题。然而,仍面临一个紧迫的挑战,即确保变换后的注意力能够保持标记间的关系。众所周知,对注意力矩阵进行变换可能会损害其捕获相似性的能力,这主要是由于线性变换以逐行的方式处理注意力矩阵。因此,我们设计了一种替代方法,以确保变换后的注意力矩阵保留传达标记间关联所需的基本属性。传统的注意力矩阵应具备以下两个属性,即对角性和对称性:
\begin{aligned}
\mathbf{A}{i j} & =\mathbf{A}{j i} \
\mathbf{A}{i i} & >\mathbf{A}{i j}, \forall j \neq i
\end{aligned}
因此,我们设计了第 l l l层的对角线保持损失,以保持这两个基本属性:
\begin{aligned}
\mathcal{L}{\mathrm{DP}, l} & =\sum{i=1}^{N} \sum_{j=1}^{N}\left|\mathbf{A}{i j}-\mathbf{A}{j i}\right| \
& +\sum_{i=1}^{N}\left((N-1) \mathbf{A}{i i}-\sum{j \neq i} \mathbf{A}_{ij}\right)
\end{aligned}
在这里, L DP \mathcal{L}_{\text {DP }} LDP 是对角线保持损失,旨在保持等式8中注意力矩阵的属性。我们在所有变换层上添加了我们的对角线保持损失和原始的交叉熵(CE)损失[4],因此训练中的总损失可以表示为:
L total = L C E + ∑ m = 1 M ∑ l = 1 L m L D P , l L C E = cross − entropy ( Z C l s , y ) \begin{aligned} \mathcal{L}_{\text {total }} & =\mathcal{L}_{\mathrm{CE}}+\sum_{m=1}^{M} \sum_{l=1}^{L_{m}} \mathcal{L}_{\mathrm{DP}, l} \\ \mathcal{L}_{\mathrm{CE}} & =\operatorname{cross}-\operatorname{entropy}\left(Z_{\mathrm{Cls}}, y\right) \end{aligned} Ltotal LCE=LCE+m=1∑Ml=1∑LmLDP,l=cross−entropy(ZCls,y)
其中 Z C l s Z_{\mathrm{Cls}} ZCls是最后一层表示中的分类标记。
3.5 复杂度分析
我们的架构由四个阶段组成,每个阶段包含 L m L_{m} Lm层。每个连续阶段之间应用下采样层。因此,传统自注意力的计算复杂度为 O ( N m 2 D ) \mathcal{O}\left(N_{m}^{2} D\right) O(Nm2D),而相关的K-Q-V变换引起的复杂度为 O ( 3 N m D 2 ) \mathcal{O}\left(3 N_{m} D^{2}\right) O(3NmD2)。相比之下,我们的方法在变换层内利用了一个 N m × N m N_{m} \times N_{m} Nm×Nm的线性变换,从而避免了计算内积的需要。因此,我们变换层中注意力机制的计算复杂度降低到了 O ( N m 2 ) \mathcal{O}\left(N_{m}^{2}\right) O(Nm2),降低了 D D D倍的复杂度。此外,由于我们的方法仅在低注意力层内计算查询嵌入,因此我们的K-Q-V变换复杂度也降低了3倍。
在连续阶段之间的下采样层中,以2为下采样率为例,注意力下采样层中的DWConv的计算复杂度可以计算为复杂度 = 2 × 2 × N m 2 × N m 2 × D = O ( N m 2 D ) 2 \times 2 \times \frac{N_{m}}{2} \times \frac{N_{m}}{2} \times D = \mathcal{O}\left(N_{m}^{2} D\right) 2×2×2Nm×2Nm×D=O(Nm2D)。类似地,注意力残差模块中的 Conv 1 × 1 \operatorname{Conv}_{1 \times 1} Conv1×1操作的复杂度也是 O ( N m 2 D ) \mathcal{O}\left(N_{m}^{2} D\right) O(Nm2D)。然而,重要的是要注意到注意力下采样在每个阶段中仅发生一次。因此,与低注意力层实现的复杂度降低相比,这些操作引入的额外复杂度是可以忽略不计的。
- 实验
在本节中,我们在两个基准数据集上评估了我们模型的性能:用于分类的ImageNet-1K [8]、用于检测的COCO2017 [10]和用于分割的ADE20K [37]。我们将我们的模型与这些数据集上的其他最先进工作进行了比较,以展示其有效性和效率。此外,我们还进行了消融研究,以调查所提出模型中每个组件的必要性和贡献。这一分析为每个部分的作用提供了有价值的见解,并有助于确立我们方法的有效性。
4.1. 架构变体
为确保与其他模型进行公平比较的同时保持相似的计算复杂度水平,我们建立了三个模型:LaViT-T、LaViT-S和LaViT-B。表1提供了详细的配置信息,我们遵循与PVT [29,30]相同的网络结构,但引入了低注意力Transformer编码器和跳接注意力下采样。块的数量、通道数和头数会影响计算成本。
4.2. 基线
我们通过将我们提出的方法与各种卷积神经网络(CNNs)、视觉Transformer(ViTs)和分层ViTs进行比较,来对其进行彻底的实验评估。具体来说,使用了以下基线:
- CNNs:ResNet [7]、RegNet [20]和EfficientNet [24]。
- ViTs:ViT [4]、DeiT [25]、CvT [36]、DeepViT [38]、FocalViT [35]和SwinTransformer [13]。
- 高效ViTs:HVT [17]、PVT [29]、DynamicViT [21]、EViT [9]、LiT [19]、EfficientViT [2]和PPT [33]。
4.3. ImageNet-1K 上的图像分类
设置。图像分类实验在ImageNet-1K数据集上进行。我们的实验协议遵循DeiT [25]中概述的程序,但模型本身除外。具体来说,我们应用了DeiT中使用的相同数据增强和正则化技术。我们使用AdamW优化器[16]从头开始训练我们的模型,共300个周期(含5个周期的预热)。初始学习率设置为0.005,并根据余弦调度器进行调整。全局批量大小设置为1024,分布在4个GTX-3090 GPU上。在验证集上进行测试时,首先将输入图像的大小调整为256像素,然后进行中心裁剪,裁剪尺寸为224x224像素,以评估分类准确率。
结果。我们在表2中展示了ImageNet1K上的分类结果。根据计算复杂度,将模型分为三组:tiny(约2G)、small(约4G)和base(约9G)。与最先进的ViT相比,我们的方法在计算要求显著降低的情况下实现了具有竞争力的性能。具体来说,在tiny和small模型集群中,我们的方法分别至少超过了其他所有现有模型0.2%和0.5%,同时保持了明显更低的计算成本,这是我们关注的主要问题。在base大小的模型中,我们的架构采用了PVT的基础结构,但包含了低注意力组件,其性能优于两个基于PVT的模型(PVT-M和PVT-L)。此外,我们还将我们的架构与几种高效的ViT设计(DynamicViT、EViT、LiT、efficientViT和PPT)进行了比较。我们观察到,我们的结果在有效性和效率之间实现了更好的平衡。值得注意的是,由于我们采用了资源高效的低注意力机制,我们的设计降低了计算成本,这使得我们的轻量级模块成为在移动平台上实现ViT的极具吸引力的选择。
4.4. 在COCO2017上的目标检测
设置。我们在COCO 2017 [10] 数据集上进行检测实验。我们在RetinaNet [12]上测试了模型的有效性。我们遵循常用做法,使用从ImageNet-1K获得的预训练权重初始化骨干网络。此外,我们使用AdamW [16]优化器,并在8个GPU上以批量大小为16训练网络。
结果。我们在表3中展示了目标检测的结果。显然,我们的LaViT模型在与其卷积神经网络(CNN)和Transformer对手的比较中表现出显著优势。具体来说,在
1
×
1 \times
1×计划下,我们的微型版本LaViT-T在可比设置下相对于ResNet实现了9.9-12.5的
A
P
b
\mathrm{AP}^{b}
APb,而小型版本LaViT-S则比其CNN对手高出8.1-10.3的
A
P
b
\mathrm{AP}^{b}
APb。在
3
×
3 \times
3×计划下,这一趋势仍然存在,因为我们的LaViT始终展现出具有竞争力的性能。特别值得注意的是,我们的架构在检测性能上能够持续超越Swin Transformer,同时施加了更小的训练负担。因此,COCO2017上的结果再次证实了我们的断言,即我们精心设计的LaViT模型通过减少计算开销来增强特征提取。
4.5. 在ADE20K上的语义分割
设置。我们使用ADE20K数据集进行语义分割实验,该数据集包含150个类别,其中20,000张图像用于训练,2,000张图像用于验证。我们用于分割的骨干网络是Semantic FPN [11]和UperNet [34]。我们遵循[13]中建立的训练设置,并将图像大小调整为 512 × 512 512 \times 512 512×512进行训练。我们对UperNet进行了160k次迭代训练,对SemanticFPN进行了80k次迭代训练。初始学习率设置为 6 × 1 0 − 5 6 \times 10^{-5} 6×10−5,采用多项式调度器进行学习率衰减。实验在4个GTX3090 GPU上进行,批量大小为16。
结果。表4提供了分割结果的概述。我们的模型在Swin Transformer上表现出优越性,使用Semantic FPN时mIoU提高了+2.6,使用UperNet时提高了+2.7。在Semantic FPN测试中,与基线(PVT-S)相比,我们的LaViT-S实现了相对温和的+0.9 mIoU增长,但值得注意的是,其计算量显著减少。当集成到UperNet架构中时,与各种主流模型相比,LaViT实现了显著的改进,分别为+2.7 mIoU、+1.0 mIoU和+1.4 mIoU。即使在采用测试时间增强的情况下,这些竞争性的结果也得以保持。特别是,LaViT-S在mIoU上比Focal-T高出+1.4,在MS mIOU上高出+2.5。这些发现强调了LaViT在其计算高效的注意力机制框架内产生高质量语义分割输出的能力。
4.6. 消融研究
注意力饱和。为了证明我们的“少注意力”模块在解决注意力饱和问题上的有效性,我们在图3中展示了注意力相似度比率(通过当前层及其前一层的注意力图计算的余弦相似度)。我们使用两种骨干网络进行比较,即ViT和PVT。在图3a中,我们选择了具有25层且没有层次结构的ViT架构。在图3b中,我们使用PVT-M作为基线,并评估了第3阶段的注意力相似度,该阶段包含18层。两组结果都清楚地表明,原始架构遇到了严重的注意力饱和问题。然而,通过引入我们的模块,这一现象得到了有效缓解,使得深层注意力能够发挥其应有的作用。
“少注意力”模块的可扩展性。我们将“少注意力”模块扩展到各种ViT架构中,并在表5中报告了结果。将LessAttention层融入任何基础Transformer架构中,都能够在提高准确性的同时降低计算需求。值得注意的是,将模块融入原始的ViT/DeiT架构时观察到的改进最为显著。这可能是因为原始的ViT/DeiT没有层次结构,因此会遇到严重的注意力饱和问题。此外,当将我们的方法集成到DeepViT中时,我们观察到计算资源的减少最为显著。这些发现共同强调了我们的方法的可扩展性,表明LA模块的应用可以使现有的ViT架构更加实用和可行。
每个组件的重要性。我们在ImageNet-1k数据集上对提出的模块进行了消融研究,结果如表6所示。在两个网络(即tiny和small)上,我们提出的模块都证明对于Transformer训练来说是不可或缺的。基线模型将Less-Attention层替换为MHSA,这与PVT模型完全相同,但与我们的模型相比,预测精度分别下降了 0.5 % 0.5\% 0.5%和 0.6 % 0.6\% 0.6%。此外,移除注意力残差模块(标记为“w/o AR”)导致预测精度分别下降了 0.2 % 0.2\% 0.2%和 0.4 % 0.4\% 0.4%。最后也是最重要的是,我们断言,为了有效理解视觉数据中的语义信息,保留对角相关性的额外损失函数至关重要。当仅依赖交叉熵(CE)损失时,模型的预测会恶化。这可能是因为仅依赖注意力矩阵的变换可能会损害其表达标记之间相关性的能力。所有这些实验发现共同强调了我们模型架构中每个组件的贡献。
Less-Attention的选择。在深度ViT中,仔细选择Less-Attention的起始层至关重要。因此,我们设计了实验来选择网络架构中Less-Attention的起始层,结果如表7所示。如表所示,直接从阶段的第二层使用Less-Attention层会导致模型性能下降。这可能是因为过度依赖第一层MHSA层的语义信息。因此,在阶段中的更深层利用Less-Attention层可能缓解这一问题。此外,虽然在相对更深的层使用Less-Attention层对模型性能影响不大,但可能会导致计算成本增加。这与我们架构的设计目标——减少计算开销相矛盾。
- 结论
为了降低昂贵的自注意力计算成本,我们提出了一种新的模型,称为少注意力视觉Transformer(LaViT)。LaViT利用多头自注意力(MHSA)块中计算出的依赖性,并通过重用之前MSA块的注意力来绕过注意力计算。此外,我们还引入了一个简单的对角保持损失,旨在促进注意力矩阵在表示标记之间关系时的预期行为。值得注意的是,我们的Transformer架构有效地捕获了跨标记的关联,在保持参数数量和每秒浮点运算次数(FLOPs)计算效率的同时,超越了基线模型的性能。全面的实验已经证实了我们模型作为多个下游任务基础架构的有效性。具体而言,所提出的模型在分类和分割任务中表现出了优于先前Transformer架构的性能,达到了最先进的水平。