©作者 | 小欣
Abstract.
这篇文章提出了一个有效的多尺度视觉Transformer,称为ResT,可以作为图像分类的主干网络,大多Transformer模型使用标准的Transformer block,只能处理固定尺寸的图像。
相比之下,ResT主要有三个优点:
第一,构建了一个减小内存消耗的多头自注意力模块,通过深度卷积来减小内存开销。
第二,改变了ViT中的位置编码,提出了一种简单但是有效的空间注意力模块称之为PA(pixel-attention),使用深度卷积得到像素之间的注意力权重,更加灵活,能够处理任意大小的输入图片。
第三,没有像ViT那样直接将原图划分成固定大小的patch再通过线性映射得到token embedding,而是通过有重叠的卷积获得token embedding。
ResT是一个十分有效的主干网络,在图像分类等下游任务中表现很好。
02 Introduction
计算机视觉领域的网络大多数都是通过堆叠block获得图像特征信息,CNN block通常是一个bottleneck结构,包含1×1,3×3,1×1卷积层,1×1卷积用于减小和增加通道数,使得经过3×3的通道数减小,从而减小计算量。
CNN速度快一部分原因是其参数共享特性,然而由于CNN的感受野通常较小,无法捕获全局信息。
为了解决CNN的缺点,Transformer结构因为其全局感受野应用到计算机视觉中,Transformer首先将图片划分成许多patch,经过映射得到token embedding,再通过和位置信息加和去表示空间信息,网络通过堆叠Transformer block捕获图像特征。
尽管Transformer在感受野方面比CNN要好,但也有一些缺点:
第一,Transformer很难捕获低级特征,因为其将图片划分成了许多patch。
第二,MSA(Multihead self attention)的内存和计算量随着图片大小或者通道数的增加而增加,通常是成二次方比例。
第三,多头自注意力层的每个头只负责计算embedding维度的一个子层,可能会损害网络的表现。
第四,输入的token和位置编码在现在的Transformer主干网络中是固定尺度的。
这篇文章中提出了一种有效的主干网络称为ResT,可以解决上面提到的问题,和ResNet相似,使用一个stem模块提取低级特征,之后有四个阶段构造分层特征图,每个stage包括patch embedding 和 positional embedding模块和多层Transformer block。
不像传统的方法只能够处理固定大小的图片,ResT可以处理任意大小的图片。
为了提高多头自注意力的效率,构建了一个有效的多头自注意力层,即EMSA(efficient multi-head self-attention),通过深度卷积有效减小计算量。
02 ResT
ResT通过一个stem 模块提取低级特征,四个stage阶段捕获多尺度特征图,每个stage又包含三个部分,分别是patch embedding模块用于减小特征图的尺寸和增加通道数,PE(positional embedding)模块用于引入位置信息,和L个Efficient Transformer Block。
2.1 Rethinking of Transformer Block
标准的Transformer block包含两个子模块,分别是MSA(多头自注意力层)和FFN(全连接层),每个子层之间有残差连接,在MSA和FFN之前,有Layer normalization,输入token为x,则每个Transformer模块的输出是:
MSA. MSA首先获得query Q,key K,和value V,通过三个矩阵映射得到,如果head数量为1,MSA变为单头的SA,其公式可以表示为:
FFN. 全连接层用于特征变换和非线性变换,包括两个线性层和一个非线性激活函数,第一层扩大embedding的维度,第二层减小维度:
2.2 Efficient Transformer Block
根据上述分析,MSA有两个缺点,第一,计算量随着token的数量或者维度成二次方比例,第二,多头自注意力的每个头只负责embedding维度的一个子层,这可能会损害网络的性能,特别是token embedding维度小的时候。
为了解决MSA的缺点,提出了Efficient Multi-head self-attention module,接下来对这个模块进行解释:
(1) 和MSA相似,EMSA首先通过映射获得query Q
(2) 为了压缩内存,首先将2D token 变换成3维,然后通过深度卷积操作减小尺寸
(3) 经过尺寸减小的特征图重新变换成2维,然后经过映射得到K和V
(4) 然后计算注意力
这里的Conv是标准的1×1卷积操作,最终,每个头的注意力权重是根据所有的key 和query得到的,弥补了MSA只根据子集计算权重的缺点。
(5)最后,每个头的输出拼接在一起,通过线性映射形成最后的输出,每个Efficient Transformer block的输出是:
2.3 Patch Embedding
标准的Transformer模块将一系列token embedding作为输入,这样不能够捕获低级特征,并且ViT中token的长度在不同的block中是固定不变的的,不能很好应用在物体检测和实例分割这种需要多尺度特征图的任务中。
我们提出的ResT中,经过每个阶段之后,token map的通道数不断增加,分辨率不断减小。
2.4 Positional Encoding
位置编码能提供patch的位置信息,ViT中位置编码是可以学习的参数,然后和embedding直接相加,但是这存在一个缺点,位置编码的长度和token embedding的长度一致,限制了应用场景。
为了解决这个问题,需要使用不同长度的位置编码,位置编码可以通过spatial attention获得,spatial attention 可以有很多种,如果使用的是pixel attention,那么可以称之为PA(pixel-attention)模块,因为PA可以被任意spatial attention 模块替代,使得ResT的位置编码更加灵活。
2.5 Classification Head
分类部分是让最后的特征图经过全局平均池化层,这个模型主要包含四个不同变体,分别是ResT-Lite, ResT-Small and ResT-Base and ResT-Large, 就是通过改变卷积层个数,卷积核的大小,输出通道数和步长得到的不同大小的模型,分别在ResNet-18, ResNet-18, ResNet-50, and ResNet-101的基础上构成。
03 Experiments
主要在ImageNet-1K 上进行分类实验,MS COCO2017上进行物体检测和实例分割实验,首先比较了ResT和之前的一些SOTA方法进行比较,采用消融实验去验证ResT的各个部分。
3.1 Image Classification on Imageet-1k
3.2 在COCO数据集上进行物体检测和实例分割
3.3 Ablation Study
为了验证各个模块的作用,只使用了最简单的数据增强和超参数设置,在ImageNet-1k中进行消融实验。
不同的stem模块. PVT中使用4×4,步长为4的卷积操作,ResNet中使用一个7×7的卷积层,步长为2,padding为3,之后有一个3×3的池化操作,ResT中使用三个3×3的卷积层(padding为1),步长分别为2,1,2.
MHSA模块的消融实验. MHSA模块使用深度卷积减少MSA的计算量,实验中表明平均池化比深度卷积准确率稍微低一点,但是因为不需要参数,所以可以作为MHSA模块的替代。
不同类别的位置编码. 比较了三种不同的位置编码,分别是最初的固定长度的并且可以学习参数的LE(Learnable parameters),GL(Group linear),PA(Pixel-attention)对于准确率的提升都有效果。
可视化.
04 Conclusion
这篇文章提出的ResT是一种比较新的一种多尺度Transformer,产生分层特征表示进行密集的预测,减小标准MSA的内存占用,在保持多头的多样性的同时,建模了多头之间的相互作用,为了处理不同大小的图片,重新设计了位置编码,使用spatial attention的位置编码,使得位置编码的长度更加灵活,以适应不同大小的图片,实验结果表明,ResT是一种强有力的主干网络。
私信我领取目标检测与R-CNN/数据分析的应用/电商数据分析/数据分析在医疗领域的应用/NLP学员项目展示/中文NLP的介绍与实际应用/NLP系列直播课/NLP前沿模型训练营等干货学习资源。