前言
论文:https://browse.arxiv.org/pdf/2303.15446.pdf
代码:https://github.com/Amshaker/SwiftFormer
一、Introduction
在各种视觉应用中,自注意力已经成为捕获全局上下文的一种事实上的选择。然而,它在图像分辨率方面的二次计算复杂性限制了它在实时应用程序中的使用,特别是在资源受限的移动设备上的部署。虽然已经提出了混合方法来结合卷积和自注意的优点,以获得更好的速度和精度权衡,但自注意中昂贵的矩阵乘法运算仍然是一个瓶颈。
1. 本文引入了一种新的有效的加性注意机制,该机制有效地用线性元素乘法取代了二次矩阵乘法运算。设计表明,键-值交互可以用线性层代替,而不会牺牲任何精度。加性注意力消除了对昂贵的矩阵乘法运算的需要,显著降低了模型的计算复杂性。
2. 与之前最先进的方法不同,本文提出高效注意力设计可用于网络的所有阶段,从而实现更有效的上下文信息捕获并实现卓越的速度-准确性权衡。
利用提出的高效加性注意力,构建了一系列名为“SwiftFormer”的模型,在准确性和移动推理速度方面都达到了最先进的性能。小版本在iPhone 14上实现了78.5%的顶级ImageNet- 1K精度,只有0.8 ms的延迟,比MobileViT-v2更准确,速度快2倍。
图1.延迟与准确度比较。与最近的EfficientFormer-L1 [20]相比,我们的SwiftFormer-L1在相同延迟的情况下,在前1精度方面实现了1.7%的绝对增益,并且不需要任何神经架构搜索。
二、Method
Motivation
在为资源受限的移动设备设计有效而准确的方法时要考虑的三个理想特征:
Efficient Global Context Modeling(高效的全局上下文建模)
如前所述,大多数现有方法要么采用标准MHSA,要么采用近似变体来学习全局上下文。然而,它们很难在资源受限的设备上像MobileNet一样快速运行。这可能是由于注意力计算期间的计算密集型乘法运算或这些方法中对高级整形和索引运算的依赖。例如,最近的MobileViT-v2比MobileNetv 2慢2倍。而不是使用矩阵乘法,我们认为编码全局上下文使用一个有效的加性注意设计可以减少操作相对于令牌的数量。这将有助于操作在相当的速度和模型大小,同时与MobileNets相比实现卓越准确性。
Rethinking key-value interactions(重新思考键值交互):
除了注意力计算过程中的乘法运算,最近在NLP领域中探索了加法注意力。但是,在标准形式中,它执行三步处理来建模查询、键和值交互。每一步都是后续步骤的一部分,因此需要顺序处理。在这里,我们重新考虑视觉任务的加性注意力,通过减轻计算键值之间的显式交互的需要。我们认为,消除键值的相互作用,并取代它们与一个简单的线性转换经验编码更好的上下文表示。我们的设计只对全局查询和关键交互进行编码,以学习全局上下文信息,然后进行线性变换来计算全局上下文感知注意力权重。
Consistent Hybrid Design(一致的混合设计):
大多数现有工作在最后阶段使用MHSA或近似变体,而避免在早期阶段使用它。这是因为MHSA的计算复杂度随着token的长度呈二次增长,使得在初始阶段合并变得不切实际。这种限制增加了设计的复杂性,并且需要仔细选择可以应用MHSA的阶段。相比之下,我们提出的SwiftFormer模块在令牌长度方面具有线性复杂性,并且可以在所有阶段中合并,以在每个尺度上学习一致的全局上下文。这种一致性提高了模型的性能,使其对高分辨率图像更具通用性和可扩展性。
1. Overview of Attention Modules
视觉Transformer模型建立在自我注意力的基础上(见图2(a)),它可以有效地对输入标记之间的交互进行建模。具体地说,自我注意力有x作为输入,其中x ∈ ,包括n个具有d维嵌入向量的令牌。使用三个矩阵 、 和 将输入x投影到query(Q)、key(K)和value(V)。每个自我关注层包括h个头部,这允许模型关注输入的不同视图。自我注意力可以描述为:
Q和K中每对标记之间的注意力分数使用点积运算来计算。接下来,这些分数被标准化,然后是Softmax来衡量令牌之间的交互。最后,使用点积运算将加权交互乘以V,以产生最终的加权输出。总的来说,自我注意的复杂度是O( ),其中n是令牌的数量,d是隐藏维度。随着令牌数量的增加, 的计算和内存需求呈二次方增长,导致推理速度慢和内存使用量高,使得长序列的实时运行变得不切实际。
为了缓解这个问题,[29]提出了转置自注意(见图2(b)),以将复杂度从二次降低到关于令牌数量的线性。在这里,点积运算是跨通道维度而不是空间维度应用的。这允许模型学习具有隐式上下文表示的特征图。注意事项可以描述为:
这种算法的复杂度为O( )。虽然这个复杂度与令牌的数量n成线性比例,但它相对于特征维度 d 保持二次关系。此外,在查询矩阵和键矩阵之间仍然使用点积运算。
可分离的自我注意机制(图2 (c))旨在解决标准自我注意的瓶颈。在这里,查询(Q)、键(K)和值(V)之间的交互使用面向元素的操作进行编码。首先,将查询矩阵Q投影成维度为n × 1的向量Q,然后将其输入Softmax以生成上下文评分,该评分捕获每个查询元素的重要性。然后,将上下文分数乘以关键矩阵K,并将其合用来计算上下文向量,该向量对上下文信息进行编码。最后,将上下文向量与值矩阵V按元素顺序相乘,以传播上下文信息并产生最终输出ˆx。可以总结为:
在这里,* 表示逐元素乘法运算。
2. Efficient Additive Attention
NLP中典型的加性注意力机制通过元素乘法而不是点积运算来利用令牌之间的成对交互来捕获全局上下文。它基于三个注意力分量(Q、K、V)的交互对输入序列的上下文信息的相关性得分进行编码。相比之下,我们表明可以在不牺牲性能的情况下删除键值交互,并且仅通过合并线性投影层来有效地编码查询键交互就足以学习令牌之间的关系(参见图2(d))。这种方法被称为有效的附加注意力,具有更快的推理速度,并产生更强大的上下文表示,正如我们在图像分类,对象检测和分割任务上的表现所证明的那样。
3. SwiftFormer Architecture
我们的SwiftFormer基于最近推出的EfficientFormer。EfficientFormer的主要思想是基于PoolFormer引入4D MetaBlocks来有效地学习局部表示,同时使用基于自注意的3D MetaBlocks来编码全局上下文。然而,EfficientFormer的性能受到两种设计选择的限制。首先,它使用了无效的令牌混合,其次,由于MHSA的二次复杂性,它只在最后一个阶段使用3D元块。这可能导致不一致和不充分的上下文表示。为了解决这些限制,我们的SwiftFormer通过使用简单而有效的Conv来改进令牌混合。编码器。此外,我们引入了有效的附加注意力模块。这导致了局部-全局表示的更一致的学习。值得一提的是,EfficientFormer采用延迟驱动的瘦身方法来为其模型变体获得最佳配置,从而最大限度地提高速度。相比之下,我们的SwiftFormer模型是在不使用任何神经架构搜索的情况下构建的。
图3示出了我们提出的架构的概述。主要内容有:(i)有效转化。编码器,和(ii)SwiftFormer编码器。与其他混合设计相比,所提出的架构是一致的,并具有Conv。在所有阶段中,编码器之后是SwiftFormer编码器。我们的体系结构在四个不同的规模在四个阶段提取层次特征。在网络的开始,大小为H×W×3的输入图像通过Patch Embedding层,用步长为2的两个3×3卷积实现,得到H4/×W/4 ×C1特征图。然后,输出特征图被馈送到第一阶段,该阶段从Conv开始。Encoder提取空间特征,接着SwiftFormer学习localglobal信息.在两个连续的阶段之间,有一个下采样层来增加通道维度并减少令牌长度。接下来,生成的特征映射随后被送入架构的第二、第三和第四阶段,分别生成H/8 ×W/8 ×C2、H/16×W/16×C3和H/32×W/32×C4维特征映射。因此,每个阶段学习输入图像不同尺度的局部-全局特征,这使得网络具有丰富的表示。
图3. Top Row:我们提出的架构的概述。输入图像被馈送到补丁嵌入层中,随后是四个不同尺度的分层阶段{14,18,116,132}。每个阶段是一致的,并组成Conv。编码器块后接SwiftFormer编码器。在两个连续的阶段之间,我们结合了下采样层,以将空间大小减少两倍并增加特征维度。Bottom Row:我们展示了Conv. Eencoder(左)和SwiftFormer Encoder(右)。Conv. Eencoder旨在学习有效的局部表示,由3×3深度卷积和两个点卷积组成,用于通道混合。SwiftFormer Encoder旨在学习丰富的局部-全局表示。它从局部卷积层开始提取局部特征,然后是高效的加性注意模块(见图2(d))和线性层。
Effective Conv. Encoder 基准的EfficientFormer使用3 × 3平均池化层作为本地token混合器,类似于PoolFormer。虽然PoolFormer层以其快速的推理速度而闻名,但用深度卷积代替它们并不会增加延迟。此外,它在不增加参数和延迟的情况下提高了性能。然后,将得到的特征与GeLU激活一起馈送到两个逐点卷积(Conv1)中。最后,我们合并了一个跳过连接,使信息能够在网络中流动。Conv. Encoder定义为:
其中 是指输入特征, 是指逐点卷积,然后是GeLU, 是指深度卷积,然后是批量归一化, 是指输出特征图。
SwiftFormer Encoder 该模块经过精心设计,可以在每个阶段有效地编码丰富的局部全局表示。如图3所示,SwiftFormer Encoder的初始块由3 × 3的深度卷积和3 × 3的点卷积组成,模块可以学习空间信息并对局部表示进行编码,然后,将得到的特征映射馈送到有效的加性注意块中,该块旨在学习输入大小的每个尺度上的上下文信息。最后,将输出的特征映射馈送到一个线性块中,该块由两个1×1逐点卷积层、批处理归一化和GeLU激活组成,以生成非线性特征。SwiftFormer编码器的描述如下:
其中, 表示批处理归一化,其次是,1×1 Conv层,其次是GeLU, QK表示有效的加性注意力。
二、Experiments
1. Image Classification
表2显示了我们提出的SwiftFormer模型(XS,S,L1和L3)与以前最先进的ConvNets,基于transformer的模型和混合模型的比较。我们表明,我们的模型设置了新的最先进的结果,并在所有模型变体中优于最近推出的EfficientFormer和MobileViT-v2。这一全面的评估显示了我们提出的模型在移动的设备上的准确性和延迟方面的优势。
2. Object Detection and Instance Segmentation
表3比较了具有不同轻量级主干的Mask-RCNN的对象检测和实例分割结果。
COCO的定性结果
SwiftFormer-L1骨干网实现了41.2 AP,比轻量级的ResNet18和PoolFormer-S12骨干网分别高出7.2和3.9个点。此外,它的性能比以前最先进的EfficientFormer-L1骨干网要好3.3 AP。
ADE20K的定性结果
在ADE20K验证集上进行语义分割的定性示例。上图:GT masks。下:语义分割结果。我们的模型可以准确地分割各种室内和室外场景。
Conclusion
Transformer由于能够有效地利用自注意计算,在视觉应用中得到了广泛的应用。然而,它们在移动视觉应用中的应用是具有挑战性的,因为自我注意的二次特性,在移动设备上是计算昂贵的。为了解决这一问题,人们提出了许多混合方法和自我注意的有效变体。在这项工作中,我们提出了一种新的有效的加法注意力,取代了昂贵的矩阵乘法运算与元素明智的乘法,并消除了显式键值的交互作用。我们提出的注意是线性相对于输入令牌,可以在网络的所有阶段使用。我们展示了最先进的图像分类、目标检测和分割基准测试结果。