paper:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
official implementation:https://github.com/fudan-zvg/SETR
third-party implementation:https://github.com/open-mmlab/mmsegmentation/tree/main/configs/setr
背景
现有的大多数语义分割方法采用基于全卷积网络(FCN)的编码器-解码器架构。编码器逐渐减少空间分辨率并学习更抽象的视觉概念。尽管这种方法在图像理解中表现良好,但在处理长距离依赖信息方面存在局限性。
出发点
作者认为现有的基于FCN的架构在处理长距离依赖信息时存在局限性,这是因为感受野仍然有限。为了克服这一限制,作者提出将语义分割视为序列到序列的预测任务,并使用纯Transformer(不包含卷积和分辨率降低)来编码图像。
解决了什么问题
该方法解决了传统FCN编码器在长距离依赖信息建模方面的局限性。通过使用全局自注意力机制,Transformer编码器能够在每一层对全局上下文进行建模,提供更优的特征表示。
创新点
其实就是将backbone换成了ViT,其它没了!
- 模型设计:提出了纯Transformer编码器替代传统卷积层,重新定义了图像语义分割问题,将其视为序列到序列学习问题。
- 特征表示:通过将图像分解为固定大小的patch,并将其转换为特征嵌入序列,利用Transformer框架实现全注意力特征表示编码。
- 解码器设计:介绍了三种不同复杂度的解码器设计,进一步验证了自注意力特征表示的效果。
方法介绍
网络的整体结构如图1所示,编码器部分就是Vision Transformer(具体介绍见https://blog.csdn.net/ooooocj/article/details/139183309,其中包括一个patch merging层,然后是多个Transformer block,每个block中包含一个self-attention和一个feed-forward network,FFN由一个两层MLP构成,此外还有residual connection和Layer Normalization)。
整个encoder部分除了patch merging层将输入分辨率从 \(H\times W\) 变成 \(\frac{H}{16}\times \frac{W}{16}\),剩余部分都保持分辨率不变。
然后作者设计了三种不同复杂度的decoder,Naive、PUP、MLA。
Naive Upsampling(Naive)就是一个简单的两层网络将特征图的分辨率还原为原始输入分辨率:1x1 conv + BN + ReLU + 1x1 conv,然后通过双线性插值上采样还原原始输入分辨率。最后是一个classification layer(也是一个1x1卷积输出通道为类别数)和交叉熵损失。
Progressive UPsampling(PUP)和Naive一步将分辨率还原回去的方式不同,PUP是通过渐进式的上采样还原输入分辨率,其中每次上采样比率为2,因此对于 \(\frac{H}{16}\times \frac{W}{16}\) 的特征图需要进行4次上采样。
Multi-Level feature Aggregation(MLA)是一种多层级的特征聚合方法,和特征金字塔类似,具体来说就是将编码器部分不同stage的输出特征图拼接起来,然后上采样得到原始输入分辨率大小的特征图。
实验结果
作者首先进行了三种decoder的消融实验,结果如表2所示,其中PUP的精度最高。其中MLA将只是将不同阶段的特征图拼接得到最终的特征图,上采样还是Naive一步到位的方式,如果采用PUP的上采样方式,效果应该会更好。
和其它SOTA模型在ADE20K、Pascal Context、Cityscapes三个数据集上的性能对比如表4、5、6所示