摘要
现有的语义分割模型都是基于Encoder-Decoder结构的FCN,包括一些使用空洞卷积或者注意力模块的语义分割模型。而SETR将Encoder看作为一个seq2seq(序列到序列),seq2seq问题使用transformer。
FCN编码器使用CNN提取特征,即增加特征图深度、牺牲分辨率的方式提取特征。而SETR使用的transformer即不增加特征图深度、也不牺牲分辨率。
论文:https://arxiv.org/abs/2012.15840
代码:https://github.com/fudan-zvg/SETR
相关阅读:更多
1. 导论
1.1. Encoder
从FCN开始,Encoder(编码器)使用CNNs(卷积神经网络)。
CNNs通过降低空间分辨率从局部到全局逐步学习图像特征。它有两个优点:平移不变性和局部性。平移不变性使得网络具有一定的泛化能力,而局部性通过参数共享降低了模型复杂度。
从局部到全局难以学习局部信息之间的长期依赖关系,而这种关系对语义分割至关重要。
一些研究者为了解决这个问题:
- 修改卷积:更大的卷积核、空洞卷积、图像/特征金字塔等;
- 引入注意力模块,对特征图中各个像素进行全局上下文信息建模。
作者为了解决这个问题:
- 使用transformer作为Encoder
使用注意力捕获全局上下文。
1.2. Decoder
为了广泛地研究自注意力(self-attentive)关注特性的介绍,我们进一步介绍了三种不同的Decoder设计,它们具有不同的复杂性。
2. 相关工作
通过去除全连接层,全卷积网络(FCN)能够实现像素级预测。虽然FCN的预测是相对粗糙的,几种基于CRF/MRF(条件随机场/马尔可夫随机场)的方法可用于细化粗糙的预测。为了解决语义和位置之间的内在紧张关系,需要为Encoder和Decoder聚合粗层和细层。这就导致了多层特征融合的Encoder-Decoder结构的不同变体。
一些研究者为解决FCN中有限的感受野/上下文建模问题。
对于扩大感受野:
- DeepLab和dilation使用了更大的卷积核。
对于上下文建模
- PSPNet提出了PPM模块来获取不同区域的上下文信息。
- DeepLabV2开发了采用不同膨胀率的金字塔膨胀卷积的ASPP模块。分解的大内核也用于上下文捕获。
- PSANet开发了逐点空间注意模块,用于动态捕获长期上下文。
- DANet同时嵌入了 spatial 注意力 和 channel 注意力 。
- CCNet的另一个重点是通过充分的空间关注来节省大量的计算预算。
- DGMN为场景建模构建了动态图消息传递网络,可显著降低计算复杂度。
这些方法都是基于FCN架构,其中特征编码和提取部分基于CNN,如VGG和ResNet。
transformer和自注意模型已经彻底改变了机器翻译和自然语言处理。近年来,对transformer结构在图像识别中的应用也进行了一些探索。
- Non-local network将transformer的attention附加到卷积主干上。
- AANet混合了卷积和self-ateention用于主干的训练。
- LRNet和stand- alone networks探索局部自注意,以避免全局自注意带来的繁重计算。
- SAN探索了两种self-attention模块。Axial-Attention 将全局空间注意分解为两个单独的axial attentions ,从而大大减少了计算量。
- cnn -transformer混合模型。
- DETR和以下变形版本利用transformer进行目标检测,transformer被附加在检测头内。
- STTR和LSTR分别采用transformer进行视差估计和车道形状预测。
- ViT是第一个证明纯transformer图像分类模型可以达到最先进水平的工作。它为在语义分割模型中开发基于纯transformer的编码器设计提供了直接的启发。
Axial-Attention也利用注意力进行图像分割。但是他们的模型仍然遵循传统的FCN设计,即采用特征图的空间分辨率逐渐降低的编码方式。而SETR始终保持相同的空间分辨率。
3. 方法
3.1. 基于 FCN 的语义分割
FCN编码器由一系列顺序连接的卷积层组成。
- 第一层为输入图像,表示为 H × W × 3 H×W ×3 H×W×3, H × W H×W H×W 为图像大小。
- 后续第 i i i层的输入是一个三维张量大小 h × w × d h×w ×d h×w×d,其中 h h h 和 w w w 是特征图大小, d d d 是特征或通道的维度。
- 在卷积运算中,对于相同大小的特征图,小核(核:卷积核)比大核需要平移更多的步数,因此,小核的长期依赖更严重,所以为了避免长期依赖问题,应该使用更大的卷积核,但是,大的卷积核意味着更大的计算量(详细请参考AlexNet、VGG、GoogLeNet)。陷入了两难的问题,这就是FCN架构的局限性。
近年来,一些最先进的研究方法表明,将FCN与注意机制结合是一种更有效的长期语境信息学习策略。这些方法仅将注意力学习限制在较高的层次和较小的输入规模上。这意味着缺乏对低级特征张量的依赖性学习,导致次优表示学习。为了克服这一限制,我们提出了一种纯粹的基于自注意力的Encoder,称为segmentation transformer(SETR)。
3.2. SETR
图像到序列。将二维图像 H × W H×W H×W 转为一维序列 L L L。如图1(a)所示,transformer接受特征嵌入 Z ∈ R L × C Z∈\mathbb{R}^{L×C} Z∈RL×C 的一维序列作为输入, L L L 为序列长度, C C C 为隐藏通道大小。因此需要对输入图像 x ∈ R H × W × 3 x∈\mathbb{R}^{H×W×3} x∈RH×W×3 转换为 Z Z Z 进行图像序列化。
图像序列化方法
- 将图像像素变为一维向量。 对于480×480×3的典型图像,得到的向量长度为691200。考虑到Transformer的 self-attention 具有二次模型复杂性,这种高维向量不可能同时在空间和时间上处理。因此,标记每一个像素作为transformer的输入是不可能的。
- 切分图像(图(a)右下)。由于典型的语义分割编码器会将2D图像经过4次下采样,将特征图的高和宽降低16倍( 2 4 2^4 24),因此,将图像切分为与特征图大小一致的图像块,即 H 16 × W 16 = H W 256 \frac{H}{16}×\frac{W}{16}= \frac{HW}{256} 16H×16W=256HW