基于Transformer的图像分类算法:PVT(Pyramid Vision Transformer)
字数 2541 2025-12-14 11:14:15

基于Transformer的图像分类算法:PVT(Pyramid Vision Transformer)

1. 题目描述
PVT是一种将Transformer引入密集预测任务(如分类、检测、分割)的骨干网络。传统的Vision Transformer(如ViT)将图像分割为固定大小的图像块(patches),然后通过自注意力机制处理这些块序列,但这种方法存在两个主要问题:

  1. 计算复杂度高:自注意力机制的计算量与序列长度(即图像块的数量)的平方成正比,导致高分辨率图像的计算成本巨大。
  2. 缺乏多尺度特征: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. 关键创新与优势

  1. 金字塔结构:首次在纯Transformer中实现多尺度特征,无需卷积操作。
  2. 空间缩减注意力:降低计算复杂度,使Transformer能处理高分辨率特征图。
  3. 灵活性:可直接替换CNN骨干网络(如ResNet),在检测、分割任务上表现优异。

4. 与ViT的对比

  • ViT输出单一尺度特征,且需固定输入尺寸(如224×224)。
  • PVT支持任意输入尺寸,输出多尺度特征,更适合密集预测任务,同时计算更高效。

通过以上步骤,PVT成功将Transformer扩展为通用视觉骨干网络,为后续的视觉任务奠定了重要基础。

基于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扩展为通用视觉骨干网络,为后续的视觉任务奠定了重要基础。