基于深度学习的图像语义分割算法:SETR(使用Transformer的语义分割)
字数 2413 2025-11-04 00:21:09
基于深度学习的图像语义分割算法:SETR(使用Transformer的语义分割)
题目描述
SETR是一种开创性的图像语义分割方法,它首次将标准的Vision Transformer架构直接应用于语义分割任务。在SETR之前,语义分割网络主要基于卷积神经网络。SETR的核心思想是将图像分割视为一个序列到序列的预测问题,利用Transformer强大的全局上下文信息建模能力,来替代CNN中通过堆叠卷积层和池化层来扩大感受野的方式。
解题过程
-
问题分析与核心思路
- 传统CNN分割的局限:基于CNN的分割网络(如FCN、U-Net)依赖于局部卷积操作,需要深层网络和特殊模块(如空洞卷积、金字塔池化)来捕获长距离依赖关系,这可能导致细节信息丢失或计算复杂。
- SETR的创新点:SETR摒弃了CNN的主干网络。它将输入图像分割成一系列固定大小的图像块,并将这些图像块线性映射为一维序列,作为Transformer编码器的输入。通过Transformer的自注意力机制,模型能够直接计算图像中任意两个位置(图像块)之间的关系,从而在网络的早期阶段就捕获全局上下文信息。
- 核心任务:设计一个基于纯Transformer编码器的架构,并解决如何将Transformer输出的序列特征重新转换为二维空间特征图,以供分割解码器使用。
-
图像序列化(Image to Sequence)
- 步骤1:图像分块:给定一张高分辨率输入图像 \(X \in \mathbb{R}^{H \times W \times C}\)(H为高,W为宽,C为通道数,通常C=3),将其分割成一系列规则的、不重叠的图像块。每个图像块的尺寸为 \(P \times P\)。
- 步骤2:块展平与线性投影:将每个图像块展平为一个长度为 \(P \times P \times C\) 的向量。然后,通过一个可训练的线性投影层(全连接层)将每个展平后的向量映射到一个D维的嵌入空间。这个线性投影的作用类似于CNN中的卷积,用于提取块的底层特征。
- 步骤3:添加位置编码:由于Transformer本身不包含位置信息,必须为每个图像块嵌入添加一个位置编码向量,以保留其在原始图像中的空间位置信息。通常使用可学习的一维位置编码。
- 步骤4:构建输入序列:经过上述处理,我们得到了一个长度为 \(N = (H \times W) / P^2\) 的序列 \(Z_0 \in \mathbb{R}^{N \times D}\),作为Transformer编码器的输入。
-
Transformer编码器
- 结构:SETR使用标准的Transformer编码器,由L个相同的层堆叠而成。每一层都包含一个多头自注意力模块和一个前馈神经网络,每个子层后面都应用了层归一化和残差连接。
- 多头自注意力:这是核心组件。它允许模型同时关注来自不同位置的不同表示子空间的信息。对于序列中的每一个元素(图像块),自注意力机制能够计算出它与其他所有图像块之间的关联权重,从而聚合全局信息。
- 输出:经过L层Transformer编码器处理后,我们得到一个富含全局上下文信息的特征序列 \(Z_L \in \mathbb{R}^{N \times D}\)。这个序列中的每个向量都包含了来自图像所有区域的上下文信息。
-
解码器设计:从序列恢复到空间图
- 挑战:解码器的任务是将Transformer输出的序列 \(Z_L\) 重新转换为一个二维的特征图 \(F \in \mathbb{R}^{(H/P) \times (W/P) \times D}\),并最终上采样到原图分辨率 \(H \times W\) 进行像素级分类。
- SETR提出了两种解码器:
- 朴素上采样(Naive Upsampling, Naive):
- 序列到空间重塑:首先,将输出序列 \(Z_L\) 重塑(reshape)成一个二维特征图,尺寸为 \((H/P) \times (W/P) \times D\)。
- 卷积细化:使用一个或多个3x3卷积层对特征图进行微调,融合局部信息。
- 上采样:使用双线性插值或转置卷积,将特征图上采样回原图尺寸 \(H \times W\),同时将通道数调整为类别数K。
- 像素分类:对每个像素位置应用Softmax函数,得到每个像素属于各个类别的概率分布。
- 渐进式上采样(Progressive UPsampling, PUP):
- 多阶段上采样:这是一种更精细的解码策略。它不是一步到位地上采样到原图大小,而是通过多个阶段逐步上采样(例如,先2倍,再2倍...)。
- 卷积融合:在每一个上采样阶段后,都使用卷积层来平滑上采样可能带来的伪影并融合特征。
- 优点:这种渐进式的方法通常能产生更光滑、细节保留更好的分割结果。
- 朴素上采样(Naive Upsampling, Naive):
-
损失函数与训练
- 损失函数:SETR使用标准的像素级交叉熵损失函数。对于每个像素,计算其预测的概率分布与真实标签的one-hot向量之间的交叉熵,然后对所有像素的损失求平均。
- 训练过程:模型使用随机梯度下降或其变体进行端到端训练。由于Transformer模型参数较多,通常需要在大型数据集(如ImageNet)上进行预训练,然后在目标分割数据集(如Cityscapes, ADE20K)上进行微调。
总结
SETR算法通过将图像视为序列,并利用Transformer编码器强大的全局建模能力,为语义分割提供了一种全新的、非CNN的解决方案。其关键步骤在于图像序列化、Transformer编码和序列到空间图的解码。虽然SETR在捕获长距离依赖上优势明显,但其计算量随图像分辨率平方增长,且缺乏CNN固有的平移不变性等归纳偏置,这也是后续研究(如Swin Transformer)试图改进的方向。