【论文笔记_目标检测_2022】Neighborhood Attention Transformer

请添加图片描述

摘要

我们提出了邻域注意变换器(NAT),这是一个高效、准确和可扩展的分层变换器,在图像分类和下游视觉任务中都能很好地工作。它建立在邻域注意(NA)的基础上,这是一种简单而灵活的注意机制,它将每个查询的感受野定位到其最近的邻近像素。NA是一种自我注意的定位,并随着感受野大小的增加而接近自我注意。在相同的感受野大小下,它在FLOPs和内存使用方面也与Swin Transformer的移窗注意相当,而受限制较少。此外,NA还包括局部感应偏置,从而消除了对像素移位等额外操作的需要。在NAT上的实验结果是有竞争力的;NAT-Tiny在ImageNet上仅用4.3GFLOPs和28M参数就达到了83.2%的top-1精度,在MS-COCO上达到51.4%的mAP,在ADE20k上达到48.4%的mIoU。
我们将开源我们的检查点、训练脚本、配置和我们的CUDA内核:https://github.com/SHILabs/Neighborhood-Attention-Transformer。

1.介绍

请添加图片描述
图1:自我注意、移窗自我注意和我们的邻域注意的感受野的图示。自我注意对每个查询符号都有相同的最大感受野。移窗自我注意将输入分为子窗,并进行自我注意,之后是另一层,对输入进行移位,并对移位后的非原位像素进行注意屏蔽(灰色区域)。邻域注意自适应地将感受野定位到每个符号周围的邻域,引入局部的感应偏差,而不需要额外的操作。


在2020年底,Vision Transformer(ViT)[9]被提出,作为一个图像分类器,只使用一个在图像斑块的嵌入空间上运行的Transformer编码器,主要用于大规模训练。其他一些方法也随之而来,试图提高数据效率[27, 35, 10, 11],最终使这种类似Transformer的模型成为ImageNet-1k分类中的先进技术(无需在额外的大规模数据集如JFT-300M上进行预训练)。这些高性能的基于注意力的方法都是基于Transformer的,它最初是用于语言处理的。自我注意在嵌入维度方面具有线性复杂度(不包括线性投影),但在标记的数量方面具有二次复杂度。在视觉的范围内,标记的数量通常与图像分辨率呈线性相关。因此,在严格使用自我注意的模型中,更高的图像分辨率会导致复杂性和内存使用量的二次增长,如ViT。这一直是阻碍这类模型容易适用于下游视觉任务的问题之一,如物体检测和语义分割,其中图像分辨率通常比分类大得多。另一个问题是,卷积得益于归纳性偏差,如位置性、平移等价性和二维邻域结构,而点积自我注意从定义上讲是一个全局性的一维操作。虽然视觉变换器中的MLP层是局部和平移等价的,但其余的那些归纳偏向必须通过大量的数据[9]或先进的训练技术和增量来学习[27, 35, 11]。

因此,局部注意模块被应用来缓解这个问题。Swin[20]是第一个基于局部自我注意的分层视觉变换器之一。它的设计和移窗自我注意使它很容易适用于下游任务,因为它们使它在计算上是可行的,同时也通过注入的额外偏置提高了性能。HaloNet[29]也探索了一个局部注意块,并发现局部注意块和卷积的组合导致了最好的性能,这是由于在内存要求和平移等值之间的最佳权衡。

在本文中,我们提出了邻域注意(NA),并在此基础上建立了邻域注意转化器(NA T),在不同的视觉任务中取得了有竞争力的结果。NA是点积自我注意的局部化,将每个查询标记的接受领域限制在键值对中相应标记周围的一个固定大小的邻域。较小的邻域会产生更多的局部注意,而较大的邻域会产生更多的全局注意。这种设计能够以一种平衡平移不变性和等值性的方式来控制感受野。我们的努力受到了卷积物的局部性质的启发,以及它们如何创造出对视觉任务有益的更多的局部归纳偏置。它不同于被应用于局部窗口的自我注意(Swin),可以被认为是一个具有内容依赖性内核的卷积。
请添加图片描述
图2:邻域注意与自我注意的查询-键值结构图(对于单个像素)。自我注意允许每个标记关注所有其他的标记,而邻域注意将每个标记的感受野定位在自身周围的邻域。这与Swin[20]中现有的窗口注意机制不同,后者将自我注意分为子窗口。窗口自我注意和邻域注意在分辨率方面都有线性的计算成本和内存使用,而自我注意的成本和内存则是二次的。然而,邻域注意有一个额外的优势,即在没有额外计算成本的情况下将每个像素直接限制在其邻域,因此不需要额外的移位操作来引入跨窗口的相互作用。邻域注意也不像窗口注意那样,只限于对被窗口大小分割的输入进行处理。

本文的主要贡献如下
1.提出邻域注意(NA)。一个简单而灵活的视觉注意机制,它将每个标记的感受野定位在其附近。我们将这个模块的复杂性和内存使用情况与自我注意、窗口自我注意和卷积相比较。
2.介绍邻域注意转化器(NAT),这是一个新的高效、准确和可扩展的分层转化器,由各级邻域注意层组成。每一层之后都有一个下采样操作,将空间大小减少一半。类似的设计可以在最近许多基于注意力的模型中看到,如Swin[20]和Focal Transformer[20]。与这些模型不同的是,NAT利用小核重叠卷积进行嵌入和下采样,而不是非重叠卷积。与Swin等先前的工作相比,NAT还引入了一套更有效的架构配置。
3.证明了NAT在图像分类和下游视觉任务上的有效性,包括物体检测和语义分割。我们观察到,NAT不仅可以超越Swin Transformer,还可以超越新的卷积竞争者[21]。我们的NAT-Tiny模型在ImageNet上仅用4.3GFLOPs和28M的参数就能达到83.2%的top-1准确率,在MS-COCO上达到51.4%的边界盒mAP,在ADE20k上达到48.4%的多尺度mIoU,这为这种简单和小规模的变换器模型创造了新的先进水平。

2.相关工作

在本节中,我们简要回顾了多头自我注意(MHSA)机制[30],并回顾了一些著名的视觉变换器和类似变换器的架构,以及一些引人注目的基于局部注意力的视觉变换器[20, 29, 18],还有最近的CNN,它为基于注意力的模型提供了一个最新的基线。
请添加图片描述
图3:ImageNet-1k分类性能与计算量的关系,气泡大小代表参数数量。在较少的FLOPs和类似的参数数量下,NAT的分类性能超过了Swin和ConvNeXt。

2.1多头自注意力
Vaswani等人[30]将 “缩放点积关注 “定义为对一个查询和一组键值对的操作。查询和键的点积被计算和缩放。Softmax被应用于输出,以使注意力权重正常化,然后被应用于值。它可以表达如下:
请添加图片描述
其中dk是关键维度。V aswani等人[30]也提出了多头自我关注,这相当于用不同的嵌入多次应用点积关注函数,从而形成 “关注头”。根据定义,自我关注吸收了一个输入序列,并将其作为查询和键值对。

对于一个输入X∈RM×D,其中M是标记的数量,D是嵌入维度,该操作的复杂度为O(M2D),注意力权重的空间复杂度为O(M2)。

2.2视觉转换器
Dosovitskiy等人[9]提出了一个基于Transformer的图像分类器,它仅仅由Transformer编码器[30]和图像标记器组成,被命名为Vision Transformer。以前的工作,如DETR[3],探讨了CNN和Transformer模型的混合检测。另一方面,ViT提出了一个只依靠单个非重叠卷积层的模型(修补和嵌入)。ViT主要在私人的JFT-300M数据集上进行预训练,并在许多基准上显示出优于最先进的CNN的性能。然而,也有人补充说,当ViT在中等规模的数据集,如ImageNet-1k和ImageNet-21k上进行预训练时,它不再取得有竞争力的结果。这归因于CNN缺乏固有的归纳偏置,作者认为这一点被大规模训练所取代。虽然这有效地证明了ViT在中等规模训练中的劣势,但它提供了经验性的证据,证明基于Transformer的模型在更大的规模上优于CNN。ViT为更多的视觉转化器和基于注意力的模型铺平了道路,并将其转移到中等规模的学习中[27],甚至在更小的数据集上进行小规模的学习[11]。

Touvron等人[27]通过探索数据效率扩展了对视觉变换器的研究。他们的数据效率图像变换器模型在很少的架构变化下,通过使用先进的增强和训练技术,表现明显优于ViT。他们通过引入蒸馏token,和硬蒸馏损失,探索了通过注意力的知识转移[14]。至于教师模型的选择,他们探索了基于Transformer的模型,以及CNNs。结果表明,卷积教师模型可以更明显地提高性能,因为它可以说是转移了DeiT所缺乏的归纳偏见。他们的实验强调了基于Transformer的图像分类器在中等规模数据体系中的真正潜力,同时也激发了更多人利用其训练技术。

2.3使用局部注意力的模型
移窗(Swin)注意[20]是由Liu等人提出的,是最早的基于窗的自我注意机制之一。这种机制对输入特征图进行分割,并对每个分割区分别应用自我注意。这种操作具有更有利的复杂性,而且可以并行化。在这些所谓的窗口关注之后是移位窗口关注,它应用相同的操作,但在窗口划分阶段之前对像素进行了移位,以便在提取的窗口中引入连接,同时仍然保持效率。此外,在注意力权重中加入了相对位置偏差,以替代之前模型使用的一次性位置嵌入。此外,提议的模型Swin Transformer产生了金字塔状的特征图,在增加深度的同时降低了空间维度。这种结构多年来在CNN中普遍使用,这也是为什么Swin可以很容易地与其他网络集成,应用于下游任务,如检测和分割。在ImageNet-1k分类中,Swin的表现超过了带有卷积老师的DeiT。此外,Swin Transformer是MSCOCO测试集上最先进的物体检测方法,并且直到最近还是ADE20K上最先进的语义分割方法。

Vaswani等人[29]提出了阻断式局部注意,它包括3个阶段:阻断、光晕和注意。输入的特征图被封锁成不重叠的子集,作为查询。随后,提取大小相同的相邻块(晕轮),作为键和值。提取的查询和键值对然后通过自我关注被发送。这种关注机制被内置到HaloNet中,并被证明能有效地降低成本和提高性能,特别是当与网络中更多的卷积层结合使用时。作者认为,根据定义,自我注意保留了平移的等值性,他们的局部注意通过放松这种等值性而改善了速度-记忆的权衡,同时没有大大减少接受域。

Yang等人[34]提出了Focal Attention,这是一种基于窗口的机制,将细粒度的注意力限制在lo cally周围的标记上,而将粗粒度的注意力应用于更远的标记。与Swin一样,Focal Transformer也利用了一个分层结构,可以与检测和分割头无缝连接。

2.4最近的卷积模型
Liu等人[21]最近提出了一个受Swin等模型影响的新CNN架构,被称为ConvNeXt。这些模型不是基于注意力的,并设法在不同的视觉任务中胜过Swin。这项工作后来成为新的CNN基线,用于公平比较卷积模型和基于注意力的模型。

我们提出了邻域注意,通过设计将感受野定位到每个查询周围的窗口,因此不需要额外的技术,如Swin使用的循环转移。我们引入了一个具有这种注意机制的分层变换器模型,称为邻域注意变换器,并展示了它与Swin在图像分类、物体检测和语义分割上的性能比较。

3.方法

在这一节中,我们介绍了邻域注意,这是一种考虑到视觉数据结构的自我注意的局部化(见公式1)。与自我注意相比,这不仅降低了计算成本,而且还引入了局部的归纳偏差,类似于卷积的情况。这个操作的邻域大小为L,当达到最小值时,每个像素只关注自己周围1个像素的邻域(创建一个3×3的方形窗口)。我们还表明,当邻域大小达到最大时(即输入的大小),这个定义等于自我注意。因此,如果邻域大小超过或符合特征图的大小,那么在相同的输入下,邻域注意和自我注意将有相等的输出。然后,我们介绍了我们的模型–邻域注意转化器(NAT),它使用这个新机制来代替自我注意。此外,NAT采用了多级分层设计,类似于Swin[20],这意味着特征图在各层之间被降频,而不是一次性降频。然而,与Swin不同的是,NAT使用重叠卷积对特征图进行降采样,而不是使用非重叠(修补)的特征图。这造成了计算和参数的轻微增加,我们通过提出计算成本较低的新配置来弥补这一缺陷。
3.1邻域注意力
受卷积法引入邻域偏差和定位的启发,我们引入了邻域关注(Neighborhood Attention)。这一机制旨在让特征图中的每个像素只关注其邻近的像素。由于邻域取决于大小,我们的新机制也将如此。

请添加图片描述
图4:我们的模型NAT的分层设计概述。该模型从卷积下采样器开始,然后进入4个连续的层次,每个层次由多个NAT块组成,它们是类似变压器的编码器层。每层由多头邻域注意(NA)、多层感知器(MLP)、每个模块前的层规范(LN)和跳过连接组成。在各层之间,特征图被降频为其空间大小的一半,而其深度则增加一倍。这简化了后面几层的计算,并允许通过特征金字塔更容易转移到下游任务。至于分类,我们只需在最后一层的高度和宽度上应用平均池化。

我们用ρ(i, j)表示一个像素在(i, j)的邻域,它是一个固定长度的离(i, j)最近的像素的索引集。对于一个大小为L×L的邻域,||ρ(i, j)|| = L2。因此,对单个像素的邻域关注可以定义如下:
请添加图片描述
其中Q、K、V是X的线性投影,类似于公式1。Bi,j表示相对位置偏差,它是根据每个注意力权重的相对位置来添加的。这个操作可以进一步扩展到所有的像素(i,j),这就形成了一种本地化的注意力。然而,如果函数ρ将每个像素映射到所有像素(L2等于特征图大小),这将等同于自我注意(有额外的位置偏置)。这是因为当邻域边界超出输入大小时,ρ(i,j)将包括所有可能的像素。因此,K ρ(i,j)=K,V ρ(i,j)=V,通过去除偏置项,公式1得到了。邻域关注在计算上是廉价的。它的复杂性与分辨率呈线性关系,与自我注意不同,它是二次的。此外,它的复杂性也与邻域大小成线性关系。 ρ,将一个像素映射到一组相邻的像素,可以很容易地通过光栅扫描的滑动窗口操作产生,类似于卷积。每个像素都被简单地映射到一组相邻的像素和自身。图2展示了这一操作的说明。这个操作对特征图中的每个像素都要重复。对于不能居中的角落像素,邻域被扩大以保持感受野的大小。这是一个关键的设计选择,它允许NA在邻域大小向特征图的分辨率增长时泛化为自我注意。扩大的邻域是通过简单地继续挑选与原始像素最近的L2邻域来实现的。例如,对于L=3,每个查询最终会有9个键值像素围绕着它(一个3×3的网格,查询定位在中心)。对于一个角落的像素,其周围是另一个3×3的网格,但查询不在中心位置。图6展示了这一想法的说明。

3.2复杂性分析
邻域注意与基于窗口的自我注意机制(如Swin[20])具有相同数量的FLOPs。我们在本小节中提出了一个复杂性分析,并讨论了它们的内存使用情况。我们还提出了一个复杂度分析,将邻域注意与卷积相比较,表明它涉及的操作较少,但使用的内存较多。为了简单起见,我们排除了注意力的头,而用单头注意力来工作。请注意,我们用L表示邻域和窗口大小,以避免与其他符号混淆。
给定形状为H×W×C的输入特征图,其中C为通道数,H和W分别为特征图的高度和宽度,QKV线性投影的成本将为O(3HWC2),这对于自我注意、Swin的窗口自我注意和邻域注意都是一样的。

Swin将查询、键和值划分为形状为L×L×C的H/L×W/L窗口,然后在每个窗口上应用自我关注,这将花费O( H/L W/L CL4),简化为O(HW CL2) 注意力权重的内存消耗,其形状为H/L × W/L × L2× L2,因此是O(HW CL2)。

在NA中,每个查询标记Qi,j都有键Kρ(i,j)和值Vρ(i,j),大小都是L×L×C,这意味着计算注意力权重的成本是O HW CL2,与Swin类似。注意力权重的形状也将是H×W×L2

4.实验

我们通过在不同的视觉任务中进行实验,如图像分类、物体检测和语义分割,来证明NA T的适用性和有效性。我们还以Swin为基线,对邻域注意和NAT进行了消融实验。
4.1图像分类
我们在ImageNet-1k[7]上训练我们的变体,以便与其他基于变换器和卷积的图像分类器进行比较。这个数据集仍然是中等规模图像分类的少数基准之一,大约包含128万张训练图像、5万张验证图像和10万张测试图像,被分为1000个类别。我们使用常用的timm包[32]训练我们的模型,并使用类似作品[27, 28, 15, 35, 20, 11, 10]中常用的增强和训练技术,如CutMix[37], Mixup[38], RandAugment[6], 和随机擦除[40]。我们遵循Swin[20]的精确训练配置(学习率、迭代余弦计划和其他超参数)。按照惯例,我们对模型进行了300个历时的训练,其中20个历时对学习率进行预热,其余的则根据调度器进行衰减,最后再做10个冷却历时[27]。

5.结论

基于变换器的视觉模型得到了计算机视觉研究界的极大关注,特别是自从ViT[9]的引入。一些作品专注于数据效率,在结构上有微小的变化[27, 35, 11, 28, 10],而其他作品则专注于效率和对下游任务的可转移性[20, 36, 29, 10]。在本文中,我们引入了另一种自我关注数据结构的定位方式,为每个标记动态地计算键值对,同时对模型进行更有效的数据配置。这有助于创建一个既能利用注意力的力量,又能利用卷积的效率和归纳偏见的模型。我们已经展示了这种模型在图像分类中的威力,它的表现明显优于Swin Transformer和ConvNeXt。此外,我们还证明了它可以无缝地应用于下游任务,在这些任务中它也优于或竞争于那些现有方法。我们将在未来的版本中对更大的NAT变体以及ImageNet-21k预训练进行实验。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月13日
下一篇 2022年5月13日

相关推荐