Pyramid Vision Transformer 论文笔记

Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions

PVT

论文链接: https://arxiv.org/abs/2102.12122

PVT v2 论文笔记链接

一、 Problem Statement

提出一个类似于CNN中的pyramid 结构,使得Transformer结构适用于多种dense prediction task。

二、 Direction

  1. 采用4x4大小的image patch作为输入
  2. 引入一个progressive shrinking pyramid,随着网络加深,减少transformer序列长度
  3. 采用一个spatial-reduction attention(SRA)层,当学习high-resolution特征的时候,进一步减少资源消耗

三、 Method

先来看看整体的结构:

1. Feature Pyramid for Transformer

PVT使用的是progressive shrinking strategy来控制feature maps的大小。假设patch size在 i t h i_{th} ith stage为 P i P_i Pi。在stage i i i的最开始阶段,把输入特征图平均分为 H i − 1 W i − 1 P i 2 \frac{H_{i-1}W_{i-1}}{P_i^2} Pi2Hi1Wi1patches,因此特征图的大小为 F i − 1 ∈ R H i − 1 × W i − 1 × C i − 1 F_{i-1} \in \R^{H_{i-1}\times W_{i-1}\times C_{i-1}} Fi1RHi1×Wi1×Ci1。然后把每个path flatten,变成 C i C_i Ci维度的embedding。通过线性变化之后,embedded patches的大小为 H i − 1 P i × W i − 1 P i × C i \frac{H_{i-1}}{P_i} \times \frac{W_{i-1}}{P_i}\times C_i PiHi1×PiWi1×Ci这样的话,高度和宽度都是 P i P_i Pi倍小于输入。所以,通过改变patch size的大小,可以灵活地调节每个阶段feature maps的大小。

2. Spatial-reduction Attention

Transformer包括两个部分:attention layer和feed-forward layer。作者提出了spatial-reduction attention(SRA) layer 来取代传统的multi-head attention(MHA) layer。

SRA层也是接收Q, K, V作为输入。区别是在SRA在attention operation之前,降低了K和V的空间尺度,极大地减少了计算和存储资源消耗。

SRA ( Q , K , V ) = Concat ( head 0 , . . . , head N i ) W o head j = Attention ( Q W j Q , S R ( K ) W j K , S R ( V ) W j V ) \text{SRA}(Q,K,V) = \text{Concat}(\text{head}_0,...,\text{head}_{N_i})W^o \\ \text{head}_j = \text{Attention}(QW_j^Q, SR(K)W_j^K,SR(V)W_j^V) SRA(Q,K,V)=Concat(head0,...,headNi)Woheadj=Attention(QWjQ,SR(K)WjK,SR(V)WjV)
其中 W j Q ∈ R C i × d h e a d , W j K ∈ R C i × d h e a d , W j V ∈ R C i × d h e a d , W o ∈ R C i × C i W_j^Q \in \R^{C_i \times d_{head}}, W_j^K \in \R^{C_i \times d_{head}},W_j^V \in \R^{C_i \times d_{head}}, W^o\in \R^{C_i\times C_i} WjQRCi×dhead,WjKRCi×dhead,WjVRCi×dhead,WoRCi×Ci 都是线性变换的参数。 N i N_i Ni是attention layer中head的数量。因此,每个head的维度 d h e a d d_{head} dhead就是 C i N i \frac{C_i}{N_i} NiCi S R ( ⋅ ) SR(\cdot) SR()是降低spatial dimension的操作:
S R ( x ) = Norm ( Reshape ( x , R i ) W S ) SR(x) = \text{Norm}(\text{Reshape}(x,R_i)W^S) SR(x)=Norm(Reshape(x,Ri)WS)

其中 x ∈ R H i W i × C i x \in \R^{H_iW_i\times C_i} xRHiWi×Ci代表输入, R i R_i Ri表示reduction ratio。 Reshape ( x , R i ) \text{Reshape}(x, R_i) Reshape(x,Ri)表示把输入序列 x x x reshap成大小为 H i W i R i 2 × ( R i 2 C i ) \frac{H_iW_i}{R^2_i}\times(R^2_iC_i) Ri2HiWi×(Ri2Ci)的序列。 W S ∈ R ( R i 2 C i ) × C i W^S \in \R^{(R_i^2C_i)\times C_i} WSR(Ri2Ci)×Ci是线性变化,用来减少输入序列的维度到 C i C_i Ci Norm ( ⋅ ) \text{\text{Norm}}(\cdot) Norm()表示layer normalization。Attention操作为:
Attention ( q , k , v ) = Softmax ( q k T d h e a d ) v \text{Attention}(q, k, v)=\text{Softmax}(\frac{qk^T}{\sqrt{d_{head}}})v Attention(q,k,v)=Softmax(dhead qkT)v

通过对比,计算量会比传统的MHA少 R i 2 R^2_i Ri2倍。

3. PVT 结构

其中 R i R_i Ri是SRA中的reduction ratio。 N i N_i Ni是SRA中head的数量。 E i E_i Ei是feed-forward层中的expansion ratio。

四、 Conclusion

纯粹的transformer backbone,用于下游的一些任务,比如目标检测,语义分割等等。不需要dense anchors和NMS操作,较为简洁,表现SOTA。

Reference

  1. https://zhuanlan.zhihu.com/p/80226180

你可能感兴趣的:(Transformer,论文笔记,网络Backbone,transformer,深度学习,机器学习)