论文笔记2:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers
文章链接:https://arxiv.org/abs/2012.15840
1 引言
传统的语义分割模型一般采用全卷积神经网络的设计,使用编解码结构。受限于CNN感受野过小,无法学习长程依赖信息,故而使用空洞卷积或者添加注意力模块的方法增大其感受野。但这在本质上并没有改变FCN的编码器模块下采样图像特征,解码器模块上采样输出分割特征图的结构。
文章提出了一种使用纯transformer作为编码器的网络结构,不包含下采样模块,transformer每一层都会捕获全局的上下文信息,为语义分割任务提供了新的视角。
实验证明,文章所提出的SETR在ADE20K(50.28% mIoU)和Pascal Context(55.83% mIoU)数据集上达到SOTA,并在Cityscapes数据集上取得有竞争力的结果。
2 模型

2.1 Image to sequence
将图像拆分成小块,然后经过一个线性层映射为patch embedding,再加上一个可学习的position embedding,得到最终transformer层的输入。
2.2 Transformer
本文所使用的transformer结构遵循原始的transformer encoder设计,作者用它代替FCN中的下采样编码器模块,这意味着每一个transformer层都可以捕获全局的上下文信息。
2.3 Decoder
在文中作者给出了三种decoder设计:
- Naive upsampling(Naive)
Naive版本首先使用两层的网络结构(1×1 conv + sync batch norm (w/ ReLU) + 1×1 conv)将transformer的输出维度映射为分类类别的数量,然后通过双线性上采样还原到原始图像的尺寸,最后经过一个分类层输出。
- Progressive UPsampling(PUP)
考虑到一次上采样可能会引入噪声,PUP采用渐进上采样的方式,并限制一次上采样的尺寸为原来的两倍,在本文中总共使用了四次上采样操作。
- Multi-Level feature Aggregation(MLA)
多层特征聚合的Decoder设计,其灵感来源于特征金字塔网络,通过将transformer各层的输出均分成M等份,称为“流”然后在每个流中取一个特征向量,交给Decoder处理。具体的操作步骤为:先将transformer的二维输出转化为三维特征,然后通过一个三层的网络结构(kernel size 1 × 1,3 × 3,,and 3 × 3)在第一层和第三层分别使特征通道减半,之后再经过四次双线性上采样恢复原始图像尺寸。为了加强流间的特征交流,在第一个卷积层之后采用了自上而下的元素级累加,经过第三层网络之后再将不同流进行拼接,这样便使得不同特征之间进行了充分混合。
3 总结
文章总体还是采用encoder-decoder架构,只是在encoder部分抛弃了传统的卷积下采样,改用transformer代替,但是其结构基本遵循ViT模型,就模型本身而言并没有太大的创新。

浙公网安备 33010602011771号