[论文评析] ArXiv-2021,Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convo

Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions


论文名称:Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions
作者单位
1 Nanjing University
2 The University of Hong Kong
3 Nanjing University of Science and Technology
4 IIAI
5 SenseTime Research

基础知识

1.常见的CNN arch. vs. vision transformer (ViT) arch. vs. pyramid ViT.
在这里插入图片描述如图(a), 经典的CNN arch通过stack CNN 层来学习一个层次化的feature representations, 并且随着层数的增加, 感受野越来越大, channel数越来越大, feature map尺寸越来越小,然后后边连接一到多个特定的任务网络来执行具体的任务;
如图(b), 经典的ViT是一个柱式结构,实际上就是stack transformer block, 为了把NLP中的Transformer用到Vision中, 惯用做法是通过网格化把figure转化为sequence of patches, 每个patches的尺寸一般为32 x 32, ViT目前主要用于image classification等image-levely预测任务;
如图©, 即为所提出的Pyramid Vision Transformer (PVT), 也是首先把figure 转化为Sequence of patches, 从结构来说也是学习一个层次化的representation,只不过基本的building block 已经由 Conv. 替换为 Attention module.
2.
Image-level prediction task: 图像级别的预测任务, 如 image classification;
Pixel-level dense prediction task: 像素级别的密集预测任务, 如 instance/semantic segmentation, object detection/recogniton;

动机

尽管目前ViT已经普遍应用到 image classification 等预测任务, 但是将其应用到像素级别的密集预测任务上依然很难, 原因在于:
(1) ViT输出的Feature map 为单一尺度,且分辨率低;
注:尺度单一指的是其尺度没有变化, 不像CNN arch那样可以学到层次化的representation, CNN stride也可以控制scale
(2) 直接应用的话memory consumption和computation cost 都是不可接受的;

贡献

1.提出了所谓的Pyramid Vision Transformer (PVT), PVT可以作为各种密集预测任务的backbone。进一步将PVT个DETR结合可以构建端到端的目标检测系统, 无需Conv. operation, 无需dense anchors和non-maximum supression 等人工设计成分;
2.在PVT设计中,提出渐进收缩的特征金字塔pyramid结构和所谓的 spatial reduction attention (SRA)使其成功应用于密集预测任务,这两个部件保证PVT可以输出多尺度的高分辨率feature map;
3.作者展示了几种不同配置的PVT, 在各种预测任务上都取得了优于当前最好的结果, 如下图
在这里插入图片描述

PVT architecture

在这里插入图片描述
如上图所示, PVT由多个Stage { S t a g e i } i = 1 4 \{Stage_{i}\}_{i=1}^{4} {Stagei}i=14堆砌组成,每个Stage 由一个Patch embedding层和多个building blocks (即图中的Transformer Encoder)组成, 其中:

Patch embedding的作用是将上一个Stage的输出转化为Sequence of tokens以为后面的attention做准备, 每个tokens实际上对应一个patch, 直观地看是见笑了spatial size。
每个building block (即attention module) 实际上就是在sequence of tokens上计算全局global的attention, 而CNN 总是在提取局部local的pattern.

与Transformer类似, 每个building block由一个attention module (即SRA)和一个Feed Forward层组成。

假设输入 X ∈ R H x W x 3 X \in R^{H {\rm x} W {\rm x} 3} XRHxWx3, 经过第一个Stage的输出为 F 1 ∈ R H 4 x W 4 x C 1 F_{1} \in R^{\frac{H}{4} {\rm x} \frac{W}{4} {\rm x} C_{1}} F1R4Hx4WxC1, 经过第二,三,四个Stage的分别 F 2 ∈ R H 8 x W 8 x C 2 F_{2} \in R^{\frac{H}{8} {\rm x} \frac{W}{8} {\rm x} C_{2}} F2R8Hx8WxC2, F 3 ∈ R H 16 x W 16 x C 3 F_{3} \in R^{\frac{H}{16} {\rm x} \frac{W}{16} {\rm x} C_{3}} F3R16Hx16WxC3, F 4 ∈ R H 32 x W 32 x C 4 F_{4} \in R^{\frac{H}{32} {\rm x} \frac{W}{32} {\rm x} C_{4}} F4R32Hx32WxC4, 这样一来, { F i } 1 4 \{F_{i}\}_{1}^{4} {Fi}14就形成了一个层次化的feature representation,

下面介绍PVT中的几个关键部分:

Patch Embedding

PVT实际上就是在利用Patch Embedding来控制feature map的尺度, 通过在每个Stage中加上一层Patch Embedding 从而渐进式地得到一个层次化的多尺度Feature map.

Patch Embedding操作首先把figure分割为多个patches ,然后对每个Patch进行Linear Projection即可。 形式化定义
假设第 i i i个Stage的的patch size 为 P i P_{i} Pi, 对于输入 F i − 1 ∈ R H i − 1 x W i − 1 x C i − 1 F_{i-1} \in R^{H_{i-1} {\rm x} W_{i-1} {\rm x} C_{i-1}} Fi1RHi1xWi1xCi1,
F ^ i − 1 = R e s h a p e ( F i − 1 ) \hat{F}_{i-1}=Reshape(F_{i-1}) F^i1=Reshape(Fi1)
P E = L P ( F ^ i − 1 ) PE=LP(\hat{F}_{i-1}) PE=LP(F^i1)
其中 F ^ i − 1 ∈ R H i − 1 W i − 1 P i 2 ⋅ ( P i P i x C i − 1 ) \hat{F}_{i-1} \in R^{\frac{H_{i-1}W_{i-1}}{P_{i}^{2}} \cdot (P_{i} {\rm} P_{i} {\rm x} C_{i-1} )} F^i1RPi2Hi1Wi1(PiPixCi1), P E ∈ R H i − 1 W i − 1 P i 2 x C i PE \in R^{\frac{H_{i-1}W_{i-1}}{P_{i}^{2}} {\rm x} C_{i}} PERPi2Hi1Wi1xCi
Reshape表示网格化figure为patches, LP表示逐Patch的Linear projection。

Spatial reduction attention (SRA)

所谓的SRA实际上就是在计算Attention之前对Flatten之前的Key和Value进行一个所谓的Spatial Reduciton以减小Spatial size, 如下图所示:
在这里插入图片描述
形式化定义
S R A ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d N i ) W o SRA(Q, K, V)=Concat(head_{1}, ..., head_{N_{i}})W^{o} SRA(Q,K,V)=Concat(head1,...,headNi)Wo
h e a d j = A t t e n t i o n ( Q W j Q , S R ( K ) W j K , S R ( V ) W j V ) head_{j}=Attention(QW_{j}^{Q}, SR(K)W_{j}^{K}, SR(V)W_{j}^{V}) headj=Attention(QWjQ,SR(K)WjK,SR(V)WjV)
A t t e n t i o n ( X , Y , Z ) = S o f t m a x ( X Y d m o d e l ) Z Attention(X, Y, Z)=Softmax(\frac{X^{Y}}{\sqrt{d_{model}}})Z Attention(X,Y,Z)=Softmax(dmodel XY)Z
其中, W j Q , W j K , W j V ∈ R C i x d m o d e l W_{j}^{Q},W_{j}^{K},W_{j}^{V} \in R^{C_{i} {\rm x} d_{model}} WjQ,WjK,WjVRCixdmodel,

S R ( X ) = N o r m ( R e s h a p e ( X , R i ) W s ) SR(X)=Norm(Reshape(X, R_{i})W^{s}) SR(X)=Norm(Reshape(X,Ri)Ws)

可以看到SRA与Multi-head Attention (MHA)相比, 唯一区别在于对Key和Value进行了SR操作,
时间复杂度分析
SR操作将Key和Value flatten之后的Vector长度减小为原来的 1 R i 2 \frac{1}{R_{i}^{2}} Ri21, 由于只对Key和Value进行了SR操作,没有对Q进行SR操作,因此最终时间复杂度减小为原来的 1 R i 2 \frac{1}{R_{i}^{2}} Ri21.

下面介绍SR的具体实现
输入 X ∈ R ( H i W i ) x C i X \in R^{(H_{i} {W_{i}) {\rm x} C_{i}}} XR(HiWi)xCi表示已经在Spatial 方向进行了Flatten操作, Reshape操作之后的尺寸为 R H i W i R i 2 x R i 2 C i R^{\frac{H_{i}W_{i}}{R_{i}^{2}} {\rm x} R_{i}^{2}C_{i} } RRi2HiWixRi2Ci, 然后再经过一个Linear Projection, transform matrix为 W s ∈ R ( R i 2 C i ) x C i W^{s} \in R^{(R_{i}^{2}C_{i}) {\rm x} C_{i}} WsR(Ri2Ci)xCi, 因此最终 S R ( X ) ∈ R H i W i R i 2 x C i SR(X) \in R^{\frac{H_{i}W_{i}}{R_{i}^{2}} {\rm x} C_{i} } SR(X)RRi2HiWixCi. 从最终的效果看,有点类似Pooling操作。

Over.

点评

怎么说呢,
1.Feature Pyramid architecture 这个东西早就已经设Vision Transformer这块的标准配置了,就像空气一样,例如Focal self-attentionCross Former 等等,不在此一一列举, 不清楚的人还以为是这篇论文的首创。
2. SRA模块
仅仅只是对MHA输入参数Key和Value的尺寸进行了缩减, 仅此而已。

总结

Reference

1.ArXiv, 2021, Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MasterQKK 被注册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值