Pyramid Vision Transformer论文解读

简介

(1):  PVT(Pyramid Vision Transformer:)可以输出高分辨率特征图,也可以使用渐进式收缩金字塔来减少计算;

(2):  引入金字塔结构到Transformer中,使得它可以像CNN网络那样无缝接入到各种下游任务中(如:物体检测,语义分割),同时也取得了非常不错的效果;

(3):  RetinaNet+PVT 取得40.4 AP 在MS COCO数据集,超过RetinNet+ResNet50 (36.3 AP) 4.1AP;

(4):  代码开源:https://github.com/whai362/PVT

算法

PVT整体结构图

整体结构就是特征金字塔+Transformer+Attention+堆叠:

(1):  模型整体包含4个Stage,每个Stage包含Patch Embedding和Transformer Encoder;

(2):  Patch Embedding用于编码图像信息,Transformer Encoder用于解码和丰富特征信息;

(3):  特征金字塔结构被引入来降低特征图分辨率并得到多尺度特征图;

(4):  在Multi-Head Attention中提出Spatical Reduction,将key(K)和value(V)的长和宽分别缩小到之前的1/Pi;

(5):  堆叠对个阶段的输出特征图,可取代之前盛行的特征提取网络(CNN),应用于目标检测、分割等上游计算机视觉任务。

在第一个阶段,给定尺寸为HxWx3的输入图像,我们按照如下流程进行处理:

(1):  首先,将其划分为块(这里是为了与ResNet对标,最大输出特征的尺寸为原始分辨率的1/4),每个块的大小为4x4x3

(2):  然后,将展开后块送入到线性投影得到尺寸为HW/16xC1的嵌入块;

(3):  其次,将前述嵌入块与位置嵌入信息送入到Transformer的Encoder,其输出将reshape为H/4xW/4xC1

(4): 后续采取这样的方式得到金字塔特征层

代码

整体部分太多较多,接下来我们分段描述:

MLP基础模块层:包含两个线性层

MLP基础模块层

Patch Embedding:编码图像块特征信息,得到特征响应图和当前特征图的长宽,对应上图中Patch Embedding位置(包含Linear和Norm操作)

Pattch Embedding

Attention:对应于上图中Patch Embedding到Multi-Head Attention之间的操作模块,其采取自注意机制(以q,k和v的形式自关注)来增强与丰富目标特征。

Attention

Block:包含整个Transformer Encoder的所有内容,两次融合(原始特征图与Attention特征图、Attention特征图与MLP特征图)

Block

至此一个Stage中的内容以全部呈现,主体函数PyramidVisionTransformer就是融合多阶段的特征金字塔特征图,作者模型包含五个基础模型:PVT-Tiny, PVT-Small, PVT-Medium, PVT-Large和PVT-Small-F4,其中前四个可根据下图参数得到,PVT-Small-F4是仅得到最顶层特征图的输出结果图。

PVT模型参数

Pi:第i个阶段中patch个数

Ci:第i个阶段中输出特征图的通道个数

Ri:第i个阶段中Spatical Reduction Attention中长宽缩短比例

Ni:第i个阶段中Spatical Reduction Attention中Transformer Head个数

Ei:第i个阶段中Transformer Encoder的Fead Forward中通道扩张比例

结果

在同一个基准模型RetinaNet下,使用PVT替换ResNet,从下图可发现,PVT在保持与ResNet参数相当的条件下,其检测准确率普遍高于基于ResNet的RetinaNet。

检测结果在MS COCO 2017验证集  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容