基于Transformer的图像语义分割算法:SETR(使用Transformer的语义分割)
字数 1470 2025-11-24 08:25:53
基于Transformer的图像语义分割算法:SETR(使用Transformer的语义分割)
题目描述
SETR(Segmentation Transformer)是首个完全摒弃卷积结构、仅用Transformer架构解决图像语义分割任务的开创性算法。传统分割网络依赖CNN提取局部特征,但感受野有限,难以建模长距离依赖。SETR将输入图像切分为固定大小的图像块(patches),通过Transformer编码器获取全局上下文信息,最后通过解码器重建分割结果。核心挑战在于如何将二维图像适配Transformer序列处理范式,并设计有效的解码策略。
解题过程
1. 图像序列化处理
- 步骤:将输入图像(H×W×3)划分为N个大小为16×16的图像块(N=H×W/256),每个图像块展平为256×3=768维向量。
- 原理:Transformer原生处理一维序列,需将空间结构转换为序列数据。通过线性投影将每个图像块映射为D维嵌入向量(D=1024),并添加可学习的位置编码(Position Encoding)保留空间信息。
- 关键点:位置编码采用可学习参数,而非正弦函数,因图像块空间关系需灵活学习。
2. Transformer编码器设计
- 结构:由L层(如L=24)标准Transformer编码器堆叠,每层包含多头自注意力(MSA)和前馈网络(FFN)。
- 自注意力机制:计算每个图像块与所有图像块的关联权重,公式为:
\(\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V\)
其中Q、K、V由图像块嵌入线性变换得到,\(\sqrt{d_k}\)为缩放因子。 - 作用:通过多层自注意力,模型逐步聚合全局上下文,例如远端物体形状信息可直接影响当前区域分类。
3. 解码器设计
SETR提供三种解码器方案:
- 朴素上采样(Naive upsampling):
直接对编码器输出序列重塑为2D特征图(H/16×W/16×D),通过2层卷积+双线性插值上采样至原图分辨率。 - 渐进上采样(Progressive upsampling, PUP):
通过多阶段卷积层逐步上采样(如4×→2×→2×),减少棋盘伪影,公式为:
\(F_{out} = \text{Conv}_{3×3}(\text{Upsample}(F_{in}))\) - 特征金字塔(Feature Pyramid Fusion, FPF):
融合不同Transformer层的多尺度特征,增强细节恢复能力。
4. 损失函数与训练
- 损失函数:采用交叉熵损失,对每个像素计算预测类别与真实标签的误差:
\(\mathcal{L} = -\sum_{i=1}^{H×W} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c})\)
其中C为类别数,\(y_{i,c}\)为one-hot标签,\(\hat{y}_{i,c}\)为预测概率。 - 训练技巧:使用预训练ViT权重初始化编码器,解码器随机初始化,采用多项式学习率调度。
5. 创新与局限
- 创新:
- 证明纯Transformer在分割任务中的可行性,突破CNN局部性限制。
- 全局上下文建模提升复杂场景分割精度(如Cityscapes数据集mIoU达81.1%)。
- 局限:
- 计算复杂度随图像尺寸平方增长,需大量显存。
- 缺乏CNN的平移不变性,需更多数据训练。