PVT
论文链接: https://arxiv.org/abs/2102.12122
PVT v2 论文笔记链接
提出一个类似于CNN中的pyramid 结构,使得Transformer结构适用于多种dense prediction task。
先来看看整体的结构:
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} Pi2Hi−1Wi−1patches,因此特征图的大小为 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}} Fi−1∈RHi−1×Wi−1×Ci−1。然后把每个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 PiHi−1×PiWi−1×Ci。这样的话,高度和宽度都是 P i P_i Pi倍小于输入。所以,通过改变patch size的大小,可以灵活地调节每个阶段feature maps的大小。
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} WjQ∈RCi×dhead,WjK∈RCi×dhead,WjV∈RCi×dhead,Wo∈RCi×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} x∈RHiWi×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} WS∈R(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(dheadqkT)v
通过对比,计算量会比传统的MHA少 R i 2 R^2_i Ri2倍。
其中 R i R_i Ri是SRA中的reduction ratio。 N i N_i Ni是SRA中head的数量。 E i E_i Ei是feed-forward层中的expansion ratio。
纯粹的transformer backbone,用于下游的一些任务,比如目标检测,语义分割等等。不需要dense anchors和NMS操作,较为简洁,表现SOTA。