基于Transformer的图像语义分割算法:SegFormer
字数 1043 2025-11-17 03:47:35
基于Transformer的图像语义分割算法:SegFormer
题目描述
SegFormer是一种结合Transformer与轻量级解码器的语义分割模型。它摒弃了Vision Transformer(ViT)中计算复杂的位置编码,采用分层设计的Transformer编码器提取多尺度特征,并通过仅由MLP(多层感知机)构成的解码器融合这些特征,实现高效精确的像素级分类。其核心挑战在于如何利用Transformer捕获全局上下文,同时避免计算冗余。
解题过程
-
问题分析
- 传统CNN在语义分割中感受野有限,难以建模全局依赖。
- ViT虽能捕获全局信息,但需固定尺寸的位置编码,且计算量大。
- 目标:设计轻量级架构,融合多尺度特征并保留局部细节。
-
编码器设计:分层Transformer
- 分层结构:
输入图像分块(patch size可变),通过4个阶段逐步下采样,得到1/4、1/8、1/16、1/32分辨率的特征图(如输入224×224,输出4个尺度特征图)。 - 高效自注意力:
每个阶段使用重叠分块(overlapped patch merging)减少边界信息损失,并引入序列缩减的注意力机制(如Effiicient Self-Attention),降低计算复杂度。 - 位置编码替代:
采用零填充的3×3卷积隐式学习位置信息,避免ViT中固定尺寸位置编码的泛化问题。
- 分层结构:
-
解码器设计:纯MLP融合
- 多尺度特征输入:
将编码器输出的4个尺度特征上采样至1/4原图大小,拼接后通过卷积统一通道数。 - 轻量级MLP层:
使用多层感知机(含卷积、LayerNorm、激活函数)融合特征,直接预测分割图。 - 优势:
仅需少量参数即可融合局部与全局信息,避免复杂设计(如FPN中的跨层连接)。
- 多尺度特征输入:
-
损失函数与训练
- 结合交叉熵损失与Dice损失解决类别不平衡:
\(L = \lambda_{ce} L_{ce} + \lambda_{dice} L_{dice}\) - 使用AdamW优化器,配合线性学习率衰减与数据增强(随机缩放、翻转)。
- 结合交叉熵损失与Dice损失解决类别不平衡:
-
性能优化技巧
- 分层特征交互:解码器中通过MLP增强跨尺度语义一致性。
- 重叠分块策略:编码器输入时通过重叠切分保留边缘信息。
- 消融实验:验证无需位置编码时,卷积隐含位置信息的有效性。
关键创新
- 分层编码器实现多尺度特征提取,适应不同大小目标。
- 简化解码器仅用MLP,在ADE20K和Cityscapes数据集上达到SOTA,兼顾精度与速度。