基于Transformer的图像分类算法:PVT(Pyramid Vision Transformer)
1. 题目描述
PVT是一种将Transformer引入密集预测任务(如分类、检测、分割)的骨干网络。传统的Vision Transformer(如ViT)将图像分割为固定大小的图像块(patches),然后通过自注意力机制处理这些块序列,但这种方法存在两个主要问题:
- 计算复杂度高:自注意力机制的计算量与序列长度(即图像块的数量)的平方成正比,导致高分辨率图像的计算成本巨大。
- 缺乏多尺度特征:ViT输出的单一尺度特征图难以直接适用于检测、分割等需要多尺度特征的任务。
PVT通过构建金字塔结构,在不同阶段逐步降低特征图的空间分辨率并增加通道维度,同时引入空间缩减注意力(Spatial Reduction Attention, SRA) 来降低计算开销,使得Transformer能够高效处理高分辨率图像,并输出多尺度特征图。
2. 解题过程循序渐进讲解
步骤1:图像分块与线性嵌入
- 输入图像大小为 \(H \times W \times 3\)。
- 与ViT类似,首先将图像划分为 \(4 \times 4\) 的非重叠图像块(patch),每个块大小为 \(4 \times 4\) 像素,因此总块数为 \(\frac{H}{4} \times \frac{W}{4}\)。
- 每个块展平为长度为16的向量,并通过线性投影嵌入到 \(C_1\) 维的隐空间,得到嵌入序列 \(F_1 \in \mathbb{R}^{\frac{H}{4} \times \frac{W}{4} \times C_1}\)。
- 添加可学习的位置编码,以保留空间信息。
步骤2:金字塔结构的阶段设计
PVT包含4个阶段(Stage 1~4),每个阶段逐步降低空间分辨率并增加通道维度,形成特征金字塔:
- Stage 1:输入 \(F_1\)(尺寸为 \(\frac{H}{4} \times \frac{W}{4}\),通道为 \(C_1\))。
- Stage 2:通过块合并(Patch Merging)将相邻2×2的图像块拼接并线性投影,空间尺寸减半(变为 \(\frac{H}{8} \times \frac{W}{8}\)),通道数加倍(变为 \(C_2\))。
- Stage 3和4:重复此过程,最终得到特征图尺寸分别为 \(\frac{H}{16} \times \frac{W}{16}\)(通道 \(C_3\))和 \(\frac{H}{32} \times \frac{W}{32}\)(通道 \(C_4\))。
这种设计模仿了CNN中特征图尺寸递减的金字塔结构,使模型能够捕捉多尺度信息。
步骤3:空间缩减注意力(SRA)
传统多头自注意力(MSA)的计算复杂度为 \(O(n^2)\),其中 \(n\) 为序列长度(即特征图像素数量)。PVT在每个Transformer编码器中用SRA替换MSA,以降低复杂度:
- 给定输入特征 \(X \in \mathbb{R}^{n \times C}\)(\(n = h \times w\) 为空间像素数)。
- 在计算注意力前,先对键(K)和值(V)进行空间缩减:将K和V的尺寸从 \(h \times w \times C\) 重塑为 \(\frac{h}{R} \times \frac{w}{R} \times (R^2 C)\),然后通过线性投影降维回 \(C\) 维。这里 \(R\) 为缩减比例(如Stage 1中 \(R=4\))。
- 缩减后,K和V的序列长度从 \(n\) 降为 \(\frac{n}{R^2}\),使注意力复杂度从 \(O(n^2)\) 降为 \(O\left(\frac{n^2}{R^2}\right)\),大幅节省计算量。
- 注意力公式为:
\[ \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V \]
其中 \(Q\) 保持原尺寸,\(K, V\) 为缩减后的序列。
步骤4:前馈网络(FFN)与整体编码器
每个PVT阶段包含多个编码器层,每层由SRA和FFN组成,并添加残差连接与层归一化:
- 输入 \(X\) 经过SRA得到 \(X'\):
\[ X' = \text{SRA}(\text{LN}(X)) + X \]
- 再经过FFN(两层MLP+GELU激活):
\[ Y = \text{FFN}(\text{LN}(X')) + X' \]
- 多个编码器层堆叠,形成单个阶段。不同阶段的编码器层数逐渐增加(如PVT-Small为[3,4,6,3]),以加深网络深度。
步骤5:输出与下游任务适配
- PVT输出4个阶段的多尺度特征图 \(\{F_1, F_2, F_3, F_4\}\),尺寸分别为输入图像的 \(\frac{1}{4}, \frac{1}{8}, \frac{1}{16}, \frac{1}{32}\)。
- 对于图像分类:对最后一阶段特征图进行全局平均池化,接全连接层分类。
- 对于检测/分割:将多尺度特征输入FPN等颈部网络,进一步融合后用于预测。
3. 关键创新与优势
- 金字塔结构:首次在纯Transformer中实现多尺度特征,无需卷积操作。
- 空间缩减注意力:降低计算复杂度,使Transformer能处理高分辨率特征图。
- 灵活性:可直接替换CNN骨干网络(如ResNet),在检测、分割任务上表现优异。
4. 与ViT的对比
- ViT输出单一尺度特征,且需固定输入尺寸(如224×224)。
- PVT支持任意输入尺寸,输出多尺度特征,更适合密集预测任务,同时计算更高效。
通过以上步骤,PVT成功将Transformer扩展为通用视觉骨干网络,为后续的视觉任务奠定了重要基础。