Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)

摘要

         注意机制,尤其是自我注意,在视觉任务的深度特征表示中发挥了越来越重要的作用。自注意力通过使用所有位置的成对亲和力计算特征的加权和来更新每个位置的特征,以捕获单个样本中的长期依赖关系。然而,self-attention 具有二次复杂度,并且忽略了不同样本之间的潜在相关性。本文提出了一种新的注意力机制,我们称之为外部注意力,它基于两个外部的、小的、可学习的、共享的内存,只需使用两个级联的线性层和两个归一化层就可以轻松实现;它方便地取代了现有流行架构中的 self-attention。外部注意力具有线性复杂性,并隐含考虑所有数据样本之间的相关性。我们进一步将多头机制纳入外部注意,以提供用于图像分类的全 MLP 架构,外部注意 MLP (EAMLP)。在图像分类、对象检测、语义分割、实例分割、图像生成和点云分析方面的大量实验表明,我们的方法提供的结果与自我注意机制及其一些变体相当或更好,而且计算和内存成本要低得多.

1.引言

        由于self-attention 机制有助于提高在各种自然语言处理 [1]、[2] 和计算机视觉 [3]、[4] 任务中捕获远程依赖关系的能力。自注意力通过聚合单个样本中所有其他位置的特征来细化每个位置的表示,这导致样本中位置数量的二次计算复杂度。因此,一些变体试图以较低的计算成本来逼近 self-attention [5]、[6]、[7]、[8]。

        此外,自注意力集中在单个样本内不同位置之间的自亲和性上,而忽略了与其他样本的潜在相关性。很容易看出,合并不同样本之间的相关性有助于更好地表示特征。例如,属于同一类别但分布在不同样本中的特征应该在语义分割任务中得到一致的处理,类似的观察适用于图像分类和其他各种视觉任务。

        本文提出了一种新的轻量级注意力机制,我们称之为外部注意力(见图 1c))。如图 1a) 所示,计算自注意力需要首先通过计算自查询向量和自键向量之间的亲和度来计算注意力图,然后通过使用该注意力图对自值向量进行加权来生成新的特征图。外部注意力的作用不同。我们首先通过计算自查询向量和外部可学习键存储器之间的亲和力来计算注意力图,然后通过将此注意力图乘以另一个外部可学习值记忆产生一个定义的特征图。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第1张图片

 图1.自我关注与外部关注

        实际上,这两个存储器是用线性层实现的,因此可以通过端到端的反向传播来优化。它们独立于单个样本,在整个数据集中共享,起到很强的正则化作用,提高了注意力机制的泛化能力。外部注意力轻量级的关键在于内存中的元素数量远小于输入特征中的数量,从而产生与输入元素数量成线性关系的计算复杂度。外部存储器旨在学习整个数据集中最具辨别力的特征,捕获信息量最大的部分,并排除来自其他样本的干扰信息。在稀疏编码 [9] 或字典学习 [10] 中可以找到类似的想法。然而,与那些方法不同的是,我们既不尝试重建输入特征,也不对注意力图应用任何显式稀疏正则化。

        尽管提出的外部注意方法很简单,但它对各种视觉任务都很有效。由于其简单性,它可​​以很容易地整合到现有流行的基于自我注意的架构中,例如 DANet [4]、SAGAN [11] 和 T2T-Transformer [12]。图 3 展示了一个典型的架构,用我们的外部注意力代替自我注意力来完成图像语义分割任务。我们在分类、对象检测、语义分割、实例分割和生成等基本视觉任务上进行了广泛的实验,具有不同的输入模式(图像和点云)。结果表明,我们的方法取得了与原始的自我注意机制及其一些变体,计算成本要低得多。

        为了学习相同输入的不同方面,我们将多头机构结合到外部注意力以提升其能力。得益于提出的多头外部关注,我们设计了一种新颖的全MLP结构EAMLP,它可以与CNN和原始Transformers相媲美,用于图像分类任务。

        本文的主要贡献概括如下:

  • 一种新的注意机制--外部注意,其复杂性为O(N);它可以取代现有体系结构中的自我注意。它可以在整个数据集中挖掘潜在的关系,具有很强的规则化作用,并提高了注意机制的泛化能力。
  • 多头外部关注,这有利于我们构建一个全MLP架构;在ImageNet-1K数据集上实现了79.4%的TOP1准确率。
  • 利用外部注意力进行图像分类、对象检测、语义分割、实例分割、图像生成、点云分类和点云分割的大量实验。在必须保持较低计算工作量的情况下,它比原始的自我注意机制及其一些变体获得了更好的结果。

2.相关工作

由于对注意机制的全面回顾超出了本文的范围,我们只讨论视觉领域中最密切相关的文献。

2.1 视觉任务中的注意机制

        注意机制可以被视为一种根据激活的重要性重新分配资源的机制。它在人类视觉系统中扮演着重要的角色。在过去十年中,这一领域得到了蓬勃发展[3]、[13]、[14]、[15]、[16]、[17]、[18]。Hu等人提出了SENET[15],证明了注意力机制可以减少噪声,提高分类性能。随后,许多其他论文将其应用于视觉任务。Wang等人提出了用于视频理解的非本地网络[3],Hu等人[19]将注意力用于目标检测,Fu等人提出了用于语义切分的Danet[4],Zhang等人[11]证明了注意机制在图像生成中的有效性,以及谢等人的研究成果提出了用于点云处理的A-SCN[20]。

2.2 视觉任务中的自我注意

        自我注意是注意力的一种特殊情况,许多文献[3]、[4]、[11]、[17]、[21]都研究了视觉的自我注意机制。自我注意的核心思想是计算特征之间的亲和度,以获取长期依赖关系。然而,随着特征图大小的增加,计算和内存开销呈二次曲线增加。为了降低计算和内存成本,Huang等[5]提出了CRISP交叉关注,它依次考虑行关注和列关注来捕捉全局环境。Li等[6]采用期望最大化(EM)聚类来优化自我关注。Yuan等[7]提出使用对象-情境向量来处理注意力;然而,它依赖于语义标签。耿爽等人[8]表明在语义分割和图像生成中,矩阵分解是对全局上下文建模的一种更好的方法。其他工作[22]、[23]也探索了通过使用自我注意机制来提取局部信息。

        与自我注意不同,自我注意通过计算自我查询和自我关键字之间的亲和度来获得注意图,而我们的外部注意计算自我查询和更小的可学习关键字记忆之间的关系,后者捕获数据集的全局上下文。外部注意力不依赖于语义信息,可以通过端到端的反向传播算法进行优化,而不需要迭代算法。

2.3 视觉任务中的transformer

        基于transformer的模型在自然语言处理方面取得了巨大的成功[1]、[2]、[16]、[24]、[25]、[26]、[27]。最近,它们还展示了视觉任务的巨大潜力。Carion等人[28]提出了一种端到端的检测transformer,以CNN特征为输入,利用transformer生成包围盒。Dosovitski[18]提出了基于补丁编码和transformer的VIT,表明在有足够的训练数据的情况下,transformer提供了比传统CNN更好的性能。Chen等人[29]提出了一种基于transformer的IGPT图像生成方法。

        随后,transformer方法已成功地应用于许多视觉任务,包括图像分类[12]、[30]、[31]、[32]、对象检测[33]、低级视觉[34]、语义分割[35]、跟踪[36]、视频实例分割[37]、图像生成[38]、多模式学习[39]、对象重新识别[40]、图像字幕[41]、点云学习[42]和自监督学习[43]。读者可以参考最近的调查[44],[45],以更全面地回顾视觉任务中transformer方法的使用。

3.方法

        在这一部分中,我们从分析最初的自我注意机制入手。然后,我们详细介绍了我们定义注意力的新颖方式:外部关注。如后面的算法1所示,只需使用两个线性层和两个归一化层就可以很容易地实现它。

3.1 自注意力与外部注意力

        我们首先回顾一下自我注意机制(见图1a)。给定输入特征映射F∈RN×d,其中N是元素(或图像中的像素)的数量,d是特征维度的数量,自关注将输入线性地投影到查询矩阵Q∈RN×d0、关键字矩阵K∈RN×d0和值矩阵V∈RN×d[16]。那么,自我关注可以用以下公式来表示:

 其中 A∈RN×N 是注意矩阵,αi;j 是第 i 个和第 j 个元素之间(相似度)的成对相似度。

        自注意力的一个常见简化变体(图 1b))直接从输入特征 F 计算注意力图,使用:

 这里,注意力图是通过计算特征空间中的像素级相似度得到的,输出是输入的细化特征表示。

        然而,即使在简化时,O(dN2) 的高计算复杂度也给使用自注意力带来了明显的缺点。输入像素数量的二次复杂性使得将自注意力直接应用于图像是不可行的。因此,以前的工作 [18] 利用补丁而不是像素上的自注意力来减少计算工作量。

        自注意力可以被视为使用自我值的线性组合来细化输入特征。然而,在这种线性组合中,我们真的需要 N × N 自注意力矩阵和一个 N 元素自值矩阵,这一点远非显而易见。此外,self-attention 只考虑数据样本中元素之间的关系,而忽略了不同样本中元素之间的潜在关系,这可能会限制 self-attention 的能力和灵活性

        因此,我们提出了一个新的注意力模块,称为外部注意力,它通过以下方式计算输入像素和外部存储单元 M∈RS×d 之间的注意力:

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第2张图片

         与self-attention不同,式(5)中的αi,j是M的第i个像素和第j行的相似度,其中M是一个独立于输入的可学习参数,充当整体的记忆训练数据集。 A 是从这个学习到的数据集级先验知识推断出的注意力图;它以类似于自我注意的方式进行归一化(参见第 3.2 节)。最后,我们通过 A 中的相似性来更新 M 中的输入特征。

        在实践中,我们使用两个不同的内存单元 Mk 和 Mv 作为键和值,以增加网络的能力。这稍微改变了外部注意力的计算

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第3张图片

         外部注意力的计算复杂度是O(dSN);由于 d 和 S 是超参数,所提出的算法在像素数上是线性的。事实上,我们发现一个小 S,例如64,在实验中效果很好。因此,外部注意力比自我注意力更有效,可以直接应用于大规模输入。我们还注意到,外部注意力的计算负载大致相当于一个 1×1 的卷积。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第4张图片

 3.2 归一化

        在 self-attention 中使用 Softmax 对注意力图进行归一化,使得 Pj αi;j = 1。然而,注意力图是通过矩阵乘法计算的。与余弦相似度不同,注意力图对输入特征的规模敏感。为了避免这个问题,我们选择了[42]中提出的双重归一化,分别归一化列和行。这种双重归一化被表述为:

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第5张图片

         算法 1 中列出了用于外部注意力的 python 样式的伪代码。

3.3 多头外部注意力

        在 Transformer [16] 中,self-attention 在不同的输入通道上计算多次,称为多头注意力。多头注意力可以捕获令牌之间的不同关系,从而提高单头注意力的能力。我们对多头外部注意力使用类似的方法,如算法 2 和图 2 所示。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第6张图片

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第7张图片

 图 2. 多头 self-attention 和 multi-head external-attention

        多头外部注意力可以写成:

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第8张图片

 其中hi是第i个头,H是头的数量,Wo是一个线性变换矩阵,使输入和输出的维度保持一致。Mk∈RS×d 和 Mv∈RS×d 是不同头的共享内存单元。

        这种架构的灵活性使我们能够在共享存储单元中在头部 H 的数量和元素 S 的数量之间取得平衡。例如,我们可以将 H 乘以 k,同时将 S 除以 k。

4.实验

        我们已经对图像分类、对象检测、语义分割、实例分割、图像生成、点云分类和点云分割任务进行了实验,以评估我们提出的外部注意方法的有效性。所有实验均使用 Jittor [86] 和/或 Pytorch [87] 深度学习框架实现。

4.1 消融实验

        为了在我们的完整模型中验证提出的模块,我们在 PASCAL VOC 分割数据集 [88] 上进行了实验。图 3 描绘了用于消融研究的架构,它以 FCN [46] 作为特征主干。批量大小和总迭代次数分别设置为 12 和 30,000。我们关注记忆单元的数量、自我关注与外部关注、主干、归一化方法和主干的输出步幅。如表 1 所示,我们可以观察到在 Pascal VOC 数据集上,外部注意力比自我注意力提供了更好的准确度。选择合适数量的内存单元对结果质量很重要。归一化方法可以对外部注意力产生巨大的积极影响,并改善自我注意力。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第9张图片

 图 3. 使用我们提出的外部注意力进行语义分割的 EANet 架构

表 1 PASCAL VOC val 集的消融研究。Norm:注意力中的归一化方法。 #S:内存单元中的元素数。 OS:主干的输出步幅。 FCN [46]:全卷积网络。 SA:自我关注。 EA:外部注意力。 DoubleNorm:归一化描述为等式 9

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第10张图片

 4.2 视觉分析

        使用外部注意力进行分割的注意力图(见图3),和多头外部注意力进行分类(见4.3节)分别如图4图5所示。我们从层中的存储单元 Mk 中随机选择一行 Mki。然后通过计算 Mi k 对输入特征的注意力来描述注意力图。我们观察到学习的注意力图集中在有意义的对象或背景上,如图 4 所示。图 5 中的最后两行表明 Mk 的不同行关注不同的区域。多头external attention的每个head都可以不同程度地激活感兴趣区域,如图5所示,提高了表示外在注意的能力。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第11张图片

 图 4 Pascal VOC 测试集上的注意力图和分割结果。从左到右:输入图像,注意力图 w.r.t.在外部存储器中选择三个条目,分割结果。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第12张图片

 图 5. ImageNet 验证集上 EAMLP-14 最后一层的多头注意力图。左:输入图像 其他:EAMLP-14 最后一层的 24 个头部注意力图,用于 ImageNet 验证集。最后两行:注意两行不同的 Mk 到图像块

4.3 图像分类

        ImageNet-1K [89] 是一个广泛使用的图像分类数据集。我们用外部注意和多头外部注意替换了 T2T-ViT [12] 中的Performer [90] 和多头自我注意块。为了公平起见,其他超参数设置与 T2T-ViT 相同。表 2 中的实验结果表明,external attention 比 Performer [90] 取得了更好的结果,并且比 multi-head attention 的结果低了约 2%。我们发现多头机制对自我关注和外部关注都是必要的。我们还尝试了 MoCo V3 [43] 提出的策略,在 T2T-ViT 主干的 MLP 块(不是外部注意力块)中用 BatchNorm(BN) [92] 替换 LayerNorm(LN) [91]。我们观察到我们的 EAMLP-7 提高了 1%。
但是,它在我们的大型模型 EAMLP-14 和 EAMLP-19 中产生了失败的案例。

表 2 ImageNet 上的实验。 Top1:top1 精度。 EA:外部注意力。 MEA:多头外部注意力。 EAMLP:提出了所有的 MLP 架构。Failed:无法收敛。 EAMLP-BN:在 T2T-ViT 主干的 MLP 块(不是外部注意力块)中用 BN 替换 LN。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第13张图片

 4.4 目标检测和实例分割

        MS COCO 数据集 [93] 是对象检测和实例分割的流行基准。它包含来自 80 个类别的超过 200,000 张图像和超过 500,000 个带注释的对象实例。

        MMDetection [47] 是一个广泛使用的对象检测和实例分割工具包。我们使用带有 RestNet-50 主干的 MMDetection 进行了对象检测和实例分割实验,应用于 COCO 数据集。我们只在 Resnet 第 4 阶段结束时添加了外部关注。结果在表 3 和表4 表明,外部注意力为对象检测和实例分割任务带来了 1% 的准确性提高。

表 3 COCO 对象检测数据集的实验。引用的结果来自[47]。盒子 AP:盒子平均精度

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第14张图片

表 4 COCO 实例分割数据集的实验。引用的结果来自[47]。掩码 AP:掩码平均精度

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第15张图片

 4.5 语义分割

        在本实验中,我们采用图 3 中的语义分割架构,将其称为 EANet,并将其应用于 Pascal VOC [88]、ADE20K [94] 和 cityscapes [95] 数据集。

        Pascal VOC 包含 10,582 张用于训练的图像、1,449 张用于验证的图像和 1,456 张用于测试的图像。它有 20 个前景对象类和一个用于分割的背景类。对于所有比较的方法,我们使用输出步幅为 8 的扩张 ResNet-101 作为主干;它在 ImageNet-1K 上进行了预训练。训练期间采用了多学习率策略。初始学习率、批量大小和输入大小设置为 0.009、16 和 513 × 513。我们首先在训练集上训练 45k 次迭代,然后在 trainval 集上微调 15k 次迭代。最后,我们在测试集上使用了多尺度和翻转测试。视觉结果如图 4 所示,定量结果在表 5 中给出:我们的方法可以达到与最先进的方法相当的性能。

表 5 与无 COCO 预训练的 PASCAL VOC 测试集上最先进方法的比较。

Beyond Self-attention: External Attention usingTwo Linear Layers for Visual Tasks(论文翻译)_第16张图片

         ADE20K 是一个更具挑战性的数据集,包含 150 个类别,以及分别用于训练、验证和测试的 20K、2K 和 3K 图像。我们采用输出步幅为 8 的扩张 ResNet-101 作为主干。实验配置与 mmsegmentation [60] 相同,训练 ADE20K 进行 160k 次迭代。表 6 中的结果表明,我们的方法在 ADE20K 验证集上优于其他方法。

        Cityscapes 包含 19 个语义类别中的 5,000 个高质量像素级精细注释标签,用于城市场景理解。每张图像为 1024×2048 像素。它分为 2975、500 和 1525 张图像用于训练、验证和测试。 (它还包含 20,000 张粗略注释的图像,我们没有在实验中使用)。我们采用输出步幅为 8 的扩张 ResNet-101 作为所有方法的主干。实验配置再次与 mmsegmentation 相同,以 80k 次迭代训练城市景观。表 7 中的结果表明,我们的方法在城市景观验证集上取得了与最先进的方法(即 DANet [4])相当的结果。

4.6 图像生成

        自注意力通常用于图像生成,其中一种代表性方法是 SAGAN [11]。我们用生成器和鉴别器中的外部注意方法替换了 SAGAN 中的自我注意机制,以获得我们的 EAGAN 模型。所有实验均基于流行的 PyTorch-StudioGAN 存储库 [96]。超参数使用 SAGAN 的默认配置。我们使用 Frechet 初始距离 (FID) [97] 和初始分数 (IS) [98] 作为我们的评估指标。一些生成的图像如图 6 所示,定量结果在选项卡中给出。 8 和 9:外部注意力提供了比 SAGAN 和其他一些 GAN 更好的结果。

4.7 点云分类

        ModelNet40 [99] 是一个流行的 3D 形状分类基准,包含 40 个类别的 12,311 个 CAD 模型。
它有 9,843 个训练样本和 2,468 个测试样本。我们的 EAT 模型替换了 PCT [42] 中的所有自注意力模块。我们在每个形状上采样了 1024 个点,并按照 PCT [42] 通过随机平移、各向异性缩放和 dropout 来增强输入。表 11 表明我们的方法优于所有其他方法,包括其他基于注意力的方法,如 PCT。我们提出的方法为 2D 和 3D 视觉提供了出色的骨干。

4.8 点云分割

        我们在 ShapeNet 零件数据集 [100] 上进行了点云分割实验。它在训练集中有 14,006 个 3D 模型,在评估集中有 2,874 个。每个形状都被分割成部分,共有 16 个对象类别和 50 个部分标签。我们遵循 PCT [42] 中的实验设置。 EAT 在这个数据集上取得了最好的结果,如表 10 所示。

4.9 计算要求

        相对于输入大小的线性复杂度在效率方面带来了显着优势。我们在输入大小为 1 × 512 × 128 × 128 的参数数量和推理操作方面,将外部注意 (EA) 模块与标准自我注意 (SA) [16] 及其几个变体进行了比较,结果如表 12 所示。外部注意力只需要自我注意力所需参数的一半,而且速度快 32 倍。与最佳变体相比,外部注意力仍然快两倍左右。

5.结论

        本文介绍了外部注意,这是一种新颖的轻量级但有效的注意机制,可用于各种视觉任务。外部注意力中采用的两个外部存储单元可以看作是整个数据集的字典,能够为输入学习更多具有代表性的特征,同时降低计算成本。我们希望外部关注能够激发实际应用和研究其在 NLP 等其他领域的应用

你可能感兴趣的:(目标跟踪论文翻译,算法,人工智能,计算机视觉)