1简介
计算机视觉中的Transformer最近取得了令人鼓舞的进展。在这项工作中,作者通过添加3个改进设计来改进原始金字塔视觉Transformer(PVTv1),其中包括:
- 具有卷积的局部连续特征;
- 具有zero paddings的位置编码,
- 具有平均汇集。
通过这些简单的修改,PVTv2在分类、检测和分割方面显著优于PVTv1。此外,PVTv2在ImageNet-1K预训练下取得了比近期作品(包括 Swin Transformer)更好的性能。
2Transformer Backbones
ViT将每个图像作为固定长度的token(patches)序列,然后将它们提供给多个Transformer层进行分类。这是第一次证明纯Transformer在训练数据充足时(例如,ImageNet-22k JFT-300M)也可以在图像分类方面表现出最先进的性能。
DeiT进一步探讨了一种数据高效的ViT训练策略和一种蒸馏方法。
为了提高图像分类性能,一些最新的方法对ViT进行了定制化的改进。
T2T-ViT将重叠滑动窗口中的token逐步连接到一个token中。
TNT利用内部和外部的Transformer block分别生成pixel emebding和patch embedding。
CPVT用条件位置编码取代了ViT中嵌入的固定尺寸位置,使其更容易处理任意分辨率的图像。
Cross-ViT通过双支路Transformer处理不同尺寸的图像patch。
Local-ViT将深度卷积融合到vision Transformers中,以提高特征的局部连续性。
为了适应密集的预测任务,如目标检测、实例和语义分割,也有一些方法将CNN中的金字塔结构引入到Transformer主干的设计中。
PVT-v1是第一个金字塔结构的Transformer,它提出了一个有4个阶段的分层Transformer,表明纯Transformer主干可以像CNN对等体一样多用途,并在检测和分割任务中表现更好。
在此基础上,对特征的局部连续性进行了改进,消除了固定尺寸的位置嵌入。例如,Swin Transformer用相对位置偏差替换固定大小的位置嵌入,并限制移动窗口内的自注意。
CvT、CoaT和LeViT将类似卷积的操作引入vision Transformers。Twins结合局部注意和全局注意机制获得更强的特征表示。
3金字塔ViT的改进点
与ViT类似,PVT-v1将图像看作是一系列不重叠的patch,在一定程度上失去了图像的局部连续性。此外,PVT-v1中的位置编码是固定大小的,对于处理任意大小的图像是不灵活的。这些问题限制了PVT-v1在视觉任务中的表现。
为了解决这些问题,本文提出了PVT-v2,它通过以下设计改进了PVT-v1的性能:
3.1 Overlapping Patch Embedding
作者利用重叠的patch嵌入来标记图像。如图1(a)所示,对patch窗口进行放大,使相邻窗口的面积重叠一半,并在feature map上填充0以保持分辨率。在这项工作中,作者使用0 padding卷积来实现重叠的patch嵌入。
具体来说,给定一个大小为h×w×c的输入,将其输入到一个步长为S、卷积核大小为2S−1、padding大小为S−1、卷积核数目为的卷积中。输出大小为。
3.2 卷积的前向传播
这里删除固定大小位置编码,并引入0 padding位置编码进pvt如图1所示(b),在前馈网络中的FC层与GELU之间添加一个3×3的depth-wise卷积。
3.3 Linear Spatial Reduction Attention
为了进一步降低PVT的计算成本,作者提出Linear Spatial Reduction Attention(SRA),如图所示。与SRA不同,线性SRA具有像卷积层一样的线性计算和存储成本。具体来说,给定输入规模为h×w×c, SRA的复杂度和线性SRA是:
式中R为SRA的空间压缩比。P为线性SRA的pool size,默认为7。
结合这3种改进,PVTv2可以:
- 获得更多的图像和特征图的局部连续性;
- 变分辨率输入更加灵活;
- 具有和CNN一样的线性复杂度。