Co-scale conv-attentional image transformer

文章地址:添加链接描述
文章提出了CoaT结构,使用了Co-scale和卷积-注意力机制。其中Co-scale可以使不同层的特征进行交互。通过串联的和并行的block来实现。卷积-注意力机制通过在factorized attention module实现相对位置编码来实现的。CoaT可以使transformer具有多尺度和上下文建模的能力。
接着作者对比了一下卷积和transformer,(1)卷积通过不断的下采样来增大感受域,注意力机制的感受野通过每一个token与其他所有token之间的计算就可以轻易地获得。(2)卷积的权重在训练中获得,transformer是在每一对token之间动态的获得。(3)transformer相比卷积更具有适用性和一般性。(3)transformer计算量庞大。
作者的发现:多尺度建模可以给表征学习带来巨大的提升,并且由于相对位置编码和卷积之间存在的内在联系,使得注意力设计的类似卷积成为可能。co-scale vs multi-scale :CoaT包含了一些高度模块化的串联和并联模块,使得精细到粗略,粗略到精细,跨尺度scale的注意力在tokenized表征上可以进行交互。conv-attention VS attention :我们使用factorized attention并结合逐深度卷积相对位置编码和卷积位置编码。
回顾传统的注意力,我们可以发现:
Co-scale conv-attentional image transformer_第1张图片
计算复杂度高,为了解决这个问题需要将图片进行分块,但是粗略的分块限制了每个patch的细节建模能力。为了解决这个问题,co-scale通过卷积-注意力模块,来提供增强了的多尺度图片特征。
Factorized Attention Mechanism:
将原始的softmax attention map分解为两个函数ϕ(·), ψ(·),那么新的计算公式为:
Co-scale conv-attentional image transformer_第2张图片
作者用identity来表示ϕ(·),用softmax来表示ψ(·)。新公式为:
Co-scale conv-attentional image transformer_第3张图片
空间复杂度为(NC’+NC+CC’),时间复杂度为(NCC’)。如何计算的呢?
K:NXC’ V:NXC
K转置:C’XN
softmax不会改变复杂度,K转置XV=C’XN 点乘 NXC = 复杂度为C’NC

Convolution as Position Encoding
尽管上述公式解决了计算压力,但是如果我们有两个q1和q2,他们相等且来自一个Q,那么如果没有一个位置编码的话,那么token的输出就独立于输入,那么局部相邻的特征就没有任何不同,比如蓝色的天空和大海就会分割成相同的种类。
Co-scale conv-attentional image transformer_第4张图片
Convolutional Relative Position Encoding.
我们可以通过结合相对位置编码和大小为M窗口,来生成相对注意力特征图EV。新的注意力计算公式:
Co-scale conv-attentional image transformer_第5张图片
注意力特征图可以计算为E:
在这里插入图片描述
Eij表示为在每一个窗口M,q和v的关系。EV聚合了关于query的所有值向量。公示来源
Co-scale conv-attentional image transformer_第6张图片
为了降低复杂度,我们简化EV,通过考虑query的每一个通道,位置编码和值向量作为内部头,每一个头可以用下面(8)公式表示,并且可以用逐深度卷积来计算EV。(8)代表的是一个通道,而(9)代表所有的通道。
Co-scale conv-attentional image transformer_第7张图片
VIT有两种类型的token,因此这里用2D逐深度卷积。然后和classtoken进行拼接。
Co-scale conv-attentional image transformer_第8张图片
卷积位置编码
我们在输入特征前插入位置关系去增强相对位置编码的影响。在输入X插入逐深度卷积,我们设置卷积的核为3,对于不同的注意力头产生的特征图我们将卷积核分别设置为3,5,7。
Co-scale conv-attentional image transformer_第9张图片
Co-scale conv-attentional image transformer_第10张图片

	**Co-Scale Conv-Attentional Transformers**
	引入了串联和并联的block。
	首先是串联结构:

Co-scale conv-attentional image transformer_第11张图片
首先通过patchembedding进行下采样,然后将图片展平为序列,然后和classtoken进行concat,然后使用多个卷积注意力模块,最终将classtoken和image分开,将图像reshape为2D,然后输送到下一个串联的模块。
接着是并行模块:
Co-scale conv-attentional image transformer_第12张图片
为了实现并行模块的交互,有两种策略:(1)直接进行层之间的注意力,(2)使用带有特征插值的注意力策略。这里我们使用带有特征插值的注意力策略。
第一种策略:对于相同层之间的注意力,我们使用卷积注意力模块,对于不同层之间的注意力,我们首先将key和value采样到和别的层一样的分辨率。然后我们实行跨注意力,query来自当前层,value来自其它层。最后我们将卷积注意力输出和交叉注意力结果相加。
第二种策略:输入图像特征被每个卷积注意力模块处理,然后使用线性采样使每一个尺度与其他尺度相匹配。属于同一尺度的特征相加,进一步传递给FFN。
模型结构
CoaT-Lite:
Co-scale conv-attentional image transformer_第13张图片
CoaT:我们将第2,3,4模块的输出和classtoken传递到三个分离的并行模块。将最后的三个classtoken进行聚合,
Co-scale conv-attentional image transformer_第14张图片
除此以外,作者还研究了其他尺寸的框架。
Co-scale conv-attentional image transformer_第15张图片
实验结果
图像分类:图片224x224,300epoch。作者将一般的模型结构分为ConvNets和ViTNets两类。
Co-scale conv-attentional image transformer_第16张图片
消融实验:
1:验证相对位置编码(CRPE)和位置编码(CPE)的有效性。
Co-scale conv-attentional image transformer_第17张图片
2;验证co-scale的有效性。
Co-scale conv-attentional image transformer_第18张图片
3;计算复杂度
Co-scale conv-attentional image transformer_第19张图片

你可能感兴趣的:(Transformer总结,paper总结)