论文地址:https://openaccess.thecvf.com/content/ICCV2021/papers/Xu_Co-Scale_Conv-Attentional_Image_Transformers_ICCV_2021_paper.pdf
代码地址:https://github.com/mlpc-ucsd/CoaT
作者提出了共尺度的共注意图像CoaT,一种基于transformer的图像分类器,具有共尺度和conv-attentional机制。首先,共尺度机制在单个尺度上保持transformer编码器分支的完整性,同时允许在不同尺度上特征进行融合;作者设计了一系列串行和并行块来实现共尺度机制。其次,采用在分解注意模块中实现相对位置embedding方法,实现了conv-attentional 机制。CoaT具有丰富的多尺度和上下文建模能力。
transformer具备很多优点,虽然卷积和自注意操作都执行加权和,但它们的权值计算方式不同:在cnn中,权值在训练中学习,但在测试中固定;在自注意机制中,权值是基于每对标记之间的相似性或亲和性动态计算的。因此,自注意机制中的自相似性操作提供了可能比卷积操作更具有自适应性和通用性的建模手段。此外,位置编码和embeding[31]的引入为transformer提供了额外的灵活性,以建模固定输入结构之外的空间配置。
但是transformer也具备缺点,第一,transformer计算量大,尤其是对于分辨率大的图像而言。第二,在transformer中,一个输入图像被划分为一个固定的patch大小的单一网格。
作者的贡献如下:
作者引入了一种共尺度机制的transformer,通过保持编码器分支在不同的尺度,同时跨尺度吸引注意力。开发了两种类型的构建块,即串行块和并行块,实现了细到粗、粗到细和跨尺度的图像建模。
作者设计了一个conv-attention模块,在分解注意模块中实现具有卷积的相对位置embeding,与普通的transformer自注意层相比,显著提高了计算效率。
ViT [9]演示了从头开始构建基于transformer的图像分类器的可行性,但如果不包含额外的训练数据,其在ImageNet [23]上的性能无法实现;DeiT [30]通过使用有效的训练策略和模型蒸馏,消除了[9]中的数据需求,获得了与基于卷积的分类器相当的结果。然而,ViT [9]和DeiT [30]都是基于固定patch大小的单一图像网格
CoaT的发展是基于两个观察结果: (1)多尺度建模通常会增强表示学习[11,22,32]的能力;(2)相对位置编码和卷积之间的内在联系使得使用类共注意操作进行有效的自我注意成为可能。因此,实验中显示的CoaT模型的优越性能来自于我们在变形金刚中的两种新设计: (1)允许跨尺度交互的共尺度机制;(2)协同注意模块,实现有效的自注意操作。
传统的注意力机制:
公式1经典的注意力机制具有O(N^2)空间复杂度和O(N^2C)时间复杂度。作者通过使用两个函数来分解它来近似softmax attention map,并得到新的注意力机制的计算:
分解后,transformer的空间复杂度为: (包括的中间结果)以及的时间复杂度。都是与序列长度而不是序列长度的平方成正比,但对通道数C有较大的成本。有研究证明
是可以近似的。Efficient-Attention对ϕ和ψ都应用了softmax功能,这是有效的,但在作者的实验中会导致视觉任务的性能显著下降。根据LambdaNets,作者使用了以下的注意力机制,,以ϕ作为身份函数,ψ作为softmax:
其中,softmax(·)以元素级的方式在序列中的标记中应用,而投射通道C‘=C。在[1]中,缩放因子1/√C隐式地包含在权重初始化中,而分解注意力显式地应用了比例因子。这种分解的注意力需要O(NC + C^2)空间复杂度和O(NC^2)时间复杂度。值得注意的是,这种因子分解注意并不是缩放点积注意的直接近似,但它仍然可以看作是一种使用查询、键和值向量建模特征交互的广义注意机制。
分解注意模块减轻了原来比例点积注意的计算负担。然而,因为我们计算首先,L汇集了全局信息,
这表明如果我们有两个query向量从q和q1 = q2,那么他们相应的自我注意输出将是相同的:
如果没有位置编码,transformer只由线性层和自注意模块组成。因此,embeding的输出依赖于相应的输入,而没有意识到其局部附近特征的任何差异。这一特性不利于视觉任务,如语义分割(例如,天空和海洋中相同的蓝色斑块被分割为相同的类别)。由此提出卷积相对位置编码。
卷积相对位置编码. 为了适应串联结构特征图的变换,不同与VIT和DeiT的绝对位置编码,作者使用卷积相对位置编码。与窗口大小为M进行整合,得到相对注意图在注意公式中,如果tokens被视为一个一维序列:
其中是一个指示器函数。每个元素Eij表示从查询qi到窗口M内的值vj的关系,并且(EV)_i聚合了关于查询qi的所有相关的值向量。但是,EV项仍然需要O(N^2)空间复杂度和O(N^2C)时间复杂度。在CoaT中,作者将queries中的每个通道、位置编码和值向量视为internal heads,将EV项简化为。因此,对于每个internal headsl,有:
在实践中,可以使用一维深度卷积来计算:
其中◦是阿达玛积。值得注意的是,在Vision Transformer中,有两种类型的token,类(CLS)token和图像token。因此,作者使用二维深度卷积(窗口大小为M×M和卷积核权值P),并将其仅应用于重塑后的图像token(即):
根据推导,深度可分离卷积可以看作是相对位置编码的一种特殊情况。
通常引用的相对位置编码[24]在标准比例的点积注意设置中工作,因为编码矩阵E与注意映射中的softmax对数相结合,这在作者的分解注意中没有实现原始LambdaNets [1]使用三维卷积直接计算EV和减少queries的通道数和keys CK
Convolutional Position Encoding. 然后,作者将卷积相对位置编码的思想扩展到一般的卷积位置编码的情况下。卷积相对位置编码模型是queries和values之间基于位置的局部关系。作者在输入特征X中插入一个深度卷积,并按照标准的绝对位置编码方案将得到的位置感知特征添加到输入特征中,这类似于CPVT [6]中条件位置编码的实现。
CoaT和CoaT-Lite在同一尺度内共享串行和并行模块的卷积位置编码权值和卷积相对位置编码权值。对于卷积位置编码,设置卷积核大小为3。对于来自不同注意头的图像特征,将卷积核大小设置为3、5和7。
Conv-Attentional Mechanism 最后的转换注意模块如图2所示:对来自输入的图像embeding应用第一个卷积位置编码。然后,我们将其输入ConvAtt(·),包括因子分解的注意力和卷积相对位置编码。所得到的特征图将用于后续的前馈网络。
所提出的共尺度机制旨在将细到粗、从粗到细和跨尺度的信息引入到图像transformer中。CoaT体系结构中存在两种类型的构建块,即串行块和并行块,以建模多个尺度并实现协同尺度机制。
CoaT Serial Block. 一个串行块(如图4所示)以一个降低的分辨率建模图像表示。在一个典型的串行块中,首先使用patch embeding层按一定比例对输入特征映射进行下采样,然后将简化后的特征映射平化为一系列图像token序列。然后,将图像token与一个额外的CLS token连接起来,这是一个用于执行图像分类的专门向量,并应用第4节所述的多个注意模块来学习图像token和CLS token之间的内部关系。最后,将CLS token从图像token中分离出来,并将图像 token重塑为下一个串行块的二维特征映射。
CoaT Parallel Block. 作者实现了每个并行组中并行块之间的共尺度机制(如图5所示)。在一个典型的并行组中,有来自具有不同尺度的串行块的输入特征序列(图像token和CLS token)。为了在平行组中实现精细到粗、粗到细和跨尺度的交互,作者开发了两种策略: (1)直接的跨层注意;(2)具有特征插值的注意。在本文中,采用特征插值法来提高更好的经验性能。
Direct cross-layer attention. 在直接的跨层注意中,从每个尺度的输入特征中形成query、key和value向量。对于在同一层内的注意力机制,使用连续注意(图2)来处理来自当前规模的成query、key和value向量。对于不同层的注意力机制,对keys和value向量进行下采样或上采样,以匹配其他尺度的分辨率,从而实现细到粗和粗到细的交互。然后,执行cross-attention,这扩展了从当前尺度的query与来自另一个尺度的keys和values。最后,将conv attention和cross-attention的输出求和,并应用共享前馈层。在直接的跨层注意下,跨尺度信息以cross-attention的方式融合。
Attention with feature interpolation. 不是直接进行跨层注意,而是用特征插值来表示注意力。首先,对不同的尺度输入图像特征进行处理。然后,使用双线性插值法对每个尺度的图像特征进行降采样或上采样,以匹配其他尺度的维度,或对其自身的尺度保持不变。将属于相同尺度的特征汇总为并行组,并将它们进一步传递到共享前馈层。这样,下一步的注意模块可以基于当前步骤中的特征插值学习跨尺度信息。
CoaT-Lite. CoaT-Lite,图3(左),处理具有一系列遵循细到粗的金字塔结构的一系列串行块的输入图像。给定一个输入图像,每个串行块将图像特征采样到较低分辨率,得到四种分辨率序列:。在CoaT-Lite中,我们在最后一个串行块中获得CLS token,并通过基于CLS token的线性投影层进行图像分类。
CoaT. CoaT模型,如图3(右)所示,由串行块和并行块组成。一旦从串行块中获得多尺度特征映射{F1、F2、F3、F4},我们就将F2、F3、F4和相应的CLS token传递到具有三个独立并行块的并行组中。为了使用CoaT进行分类,使用所有三个量表的CLS token。
Model Variants 在论文中,作者探讨了CoaT和CoaTLite与几种不同的模型尺寸,即Tiny, Mini, Small and Medium。架构细节如表1所示。例如,小模型代表那些具有5M参数预算约束的模型。具体来说,这些小模型有四个串行块,每个都有两个注意模块。在CoaT-Lite小架构中,注意层的隐藏维度在后面的block中增加。CoaT Tiny将平行组中注意层的隐藏维度设置为相等,并在6个平行组内执行共尺度机制。Tiny、Small和Medium模型遵循相同的架构设计,但增加了embeding尺寸,增加了block内conv-attentional模块的数量。
Image Classification.
Object Detection and Instance Segmentation.
位置编码的有效性。我们研究了表6中卷积相对位置编码(CRPE)和卷积位置编码(CPE)组合中的有效性。CoaT-Lite没有任何位置编码,导致性能较差,这表明位置编码对视觉transformer是必不可少的。实验观察到CRPE或CPE的CoaT-Lite变体有很大的改进,CRPE和CPE的组合导致最佳性能(77.5%的前1精度),使两种位置编码方案互补而不是冲突。
计算成本。我们在表8中报告了flop、FPS、延迟和GPU内存的使用情况。总之,CoaT模型比类似尺寸的Swin transformer获得更高的精度,但CoaT模型通常具有更大的延迟/Flops。目前CoaT中的并行组对计算的要求更高,可以通过减少高分辨率并行块和在未来的工作中在协同尺度机制中重用它们的特征映射来缓解这个问题。CoaT中的延迟开销可能是因为操作(例如图层、位置编码、上采样/下采样)没有并行运行。