【SETR】Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers论文记录

SETR:Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers文章记录

原文链接: https://arxiv.org/pdf/2012.15840

官方代码:https://fudan-zvg.github.io/SETR

简单不看版:本文提出了一种的基于transformer从序列到序列的角度重新思考语义分割。本文网络结构中使用VIT中的Transformer Encoder来提取特征,并分别匹配了三种不同结构的Decoder来实现恢复原图大小。我们称之为SEgmentation TRansformer (SETR)。作者提出动机来源于这三篇文章(Ccnet: Criss-cross attention for semantic segmentation. In ICCV, 2019;Dual graph convolutional network for semantic segmentation. In BMVC, 2019;Dynamic graph message passing networks. In CVPR, 2020;)表明将FCN与注意机制相结合是学习long-range contextual information的一种更有效的策略,但是这几篇文章中提到的的注意力机制都是在较高层次学习较低的分辨率feature map。这意味着缺少一些底层的较大分辨率的feature map的学习,为了解决这个限制,所以作者提出了SETR。

目录

一、介绍

二、相关工作

语义分割:

Transformer:

三、METHON

3.1基础的FCN语义分割

3.2. Segmentation transformers (SETR)

3.3. Decoder Design

摘要

最近一些语义分割的模都是基于FCN这种解码编码的结构发展的:编码器使用大的感受野降低空间分辨率,学习更多的语义信息。在语义分割中上下文模型也是重要的,最近的一些文章都聚焦在提升感受野,比如通过空洞卷积等,或者聚焦在插入注意力模块。然而像FCN这种编码解码的结构仍然还没有改变。本文中,我们提出一种可以代替编码解码的观点,把语义分割当做是一种序列到序列的预测任务。我们使用了一个纯的transformer(不含有卷积层和降低分辨率)将image编码成patch的序列。在每一层transformer中使用上下文模型,这个编码器可以结合一些比较简单的decoder,产生一个有力的预测模型,我们称之为SEgmentation TRansformer (SETR)。Extensive experiments show that SETR achieves new state of the art on ADE20K (50.28% mIoU), Pascal Context (55.83% mIoU) and competitive results on Cityscapes. Particularly, we achieve the first position in the highly competitive ADE20K test server leaderboard on the day of submission.

一、介绍

FCN自从发表以来,现有的语义分割模型都是以FCN为思路改进的。FCN主要有编码解码结构构成:编码器主要是用来提取特征,解码器主要用来给像素进行分类。有些文章论证了编码器的重要性。编码器,是用在图像理解里面的CNN,主要是又一些卷积层堆叠而成。考虑到计算成本的问题,feature map的分辨率在逐渐的下降,因此编码器能够利用逐渐增加的感受域来学习更多的抽象的语义信息。这种设计由于有translation equivariance and locality这两种优势而流行。前者translation equivariance很好地考虑了成像过程[56]的性质,它支撑了对不可见图像数据的模型泛化能力。后者locality则通过跨空间共享参数来控制模型的复杂性,然而他还有一个基础的局限性,就是学习长期依赖信息,这对无约束场景图像中的语义分割至关重要[1,48],由于感受野仍然有限,学习长期依赖信息变得具有挑战性。

为了克服上述限制,最近引入了一些方法。一种方法是直接操作卷积运算。像采用大的卷积核、空洞卷积、图像金字塔等。另一种是在FCN的模型中插入注意力机制。当应用于语义分割[24,28]时,一种常见的设计是将注意力模块与FCN架构相结合,注意层位于顶层。无论采用哪种方法,标准的编码器-解码器FCN模型体系结构都没有改变。最近开始企图去除卷积层,并直接采用注意力模块来代替。但是,即使没有卷积,它们也不会改变FCN模型结构的性质:编码器降低输入的空间分辨率,学习用来区分语义分割的低级特征,解码器对特征进行上采样,形成全分辨率分割图。

本文旨在对语义分割模型的设计进行反思,并提出一种新的解决方案。我们提出用一个纯transformer代替基于堆叠卷积层的编码器,用来降低空间分辨率命名为SETR。这种编码器通过学习patch embedding把输入的图像处理成一个patch的序列,然后用全局自注意力模型对序列进行转换,用于判别特征表示学习。具体地说,我们首先将一幅图像分解成一个由固定大小的patch组成的网格,形成一个patch序列。将Patch首先做展平操作,再加上一个linear embedding,然后我们就可以得到一个可以输入transformer的feature embedding 的向量序列。如下图红框中的操作。将transformer编码器学习到的特征输出到decoder中,decoder就可以将其恢复到原始图像分辨率。这个模型的全新观点就在于Encoder不在将空间分辨率进行下采样操作,而是将向量序列输入到transformerEncoder中通过每一层的global context modeling。

这种纯transformer设计的灵感来自于它在NLP取得的巨大成就。最近,纯视觉转换器或ViT[15]已被证明是有效的图像分类任务。因此,ViT提供了直接的证据,即传统的堆叠卷积层(即CNN)设计是可以改变的,图像特征不一定非要通过降低空间分辨率从局部逐步学习到全局。然而,将一个纯粹的Transformer从图像分类扩展到一个对空间位置敏感的语义分割任务是不容易的。我们的经验表明,SETR不仅提供了模型设计的新视角,而且在一些基准上达到了SOTA。

本文贡献如下:The following contributions are made in this paper: (1)We reformulate the image semantic segmentation problem from a sequence-to-sequence learning perspective, offering an alternative to the dominating encoder-decoder FCN model design. (2) As an instantiation, we exploit the transformer framework to implement our fully attentive feature representation encoder by sequentializing images. (3) To extensively examine the self-attentive feature presentations,we further introduce three different decoder designs with varying complexities. Extensive experiments show that our SETR models can learn superior feature representations as compared to different FCNs with and without attention modules, yielding new state of the art on ADE20K (50.28%), Pascal Context (55.83%) and competitive results on Cityscapes. Particularly, our entry is ranked the    1st place in the highly competitive ADE20K test server leaderboard.

二、相关工作

语义分割:

最近的一些研究都是基于FCN的感受野限制和上下文模型的问题。前者比如Deeplabv系列和Dilation引进了空洞卷积。上下文模型的改进有PSPNet和Deeplabv2,前者提出了PPM模块来获取不同区域的背景信息,后者开发了ASPP模块,采用不同扩张速率的金字塔扩张卷积。近年来,基于注意力的模型在获取远程上下文信息方面很受欢迎,比如PSANet[59]开发了动态捕捉远程上下文的点态空间注意模块,DANet嵌入了空间注意和通道注意。DGMN[55]为场景建模建立了一个动态的图消息传递网络,大大降低了计算复杂度。但是注意到这些结构还是基于FCN的,且其中的编码器和特征提取网络都是基于VGG、Resnet等经典的卷积网络。在这项工作中,我们从不同的角度重新思考语义分割任务。

Transformer:

transformer和自我注意模型彻底改变了机器翻译和自然语言处理[12,13,44,49]。近年来,transforme结构在图像识别中的应用也有一些探索。Non-local network[47]将转换器样式的关注附加到卷积主干上。

最相关的是这篇文章(Axial-deeplab: Standalone axial-attention for panoptic segmentation. In ECCV,2020),该文章也利用注意力机制进行分割。但是和本文还是有几项不同的项。首先,尽管在我们的SETR中[46]完全消除了卷积,但他们的模型仍然遵循传统的fcn设计,即空间分辨率逐步减少。相反,我们的序列到序列的预测模型始终保持相同的空间分辨率,从而代表了模型设计中的step-change。其次,为了最大限度地提高现代硬件加速器的可扩展性和便于使用,我们坚持使用标准的self-attention设计。相反,[46]采用了一个特殊的axial-attention [该篇论文中Axial attention in multidimensional transformers. arXiv preprint, 2019],它对标准计算设施的效率较差。

Figure 4. Qualitative results on Cityscapes: SETR (right column) vs. dilated FCN baseline (left column) in each pair. Best viewed in color and zoom in.

三、METHON

3.1基础的FCN语义分割

FCN介绍可以查看往期博文。

最近,一些最先进的方法[24,54,55]表明将FCN与注意机制相结合是学习long-range contextual information的一种更有效的策略。这些模型将注意力机制限制在输入较小的高层上。这是因为它的二次复杂性与特征张量的像素数有关。 这意味着缺乏对低层特征张量的依赖性学习,从而导致次优的表征学习。为了解决这个限制,我们提出了基于纯self-attention的Encoder,称之为SETR。

3.2. Segmentation transformers (SETR)

Image to sequence:SETR遵循与NLP中相同的输入- 输出结构,输入要求是多通道的一维向量。具体点transformer需要将二维图像转换为一维序列,如ViT中196*768,是将14*14*768的二维image转换为196长度的序列,一共有768维度个196长度的序列。

还有一种简单粗暴的图像序列化方法,即将H*W*3的图像直接展开成一个序列,比如221*224*3的image直接展平成224*224*3=150528长度的序列。考虑到Transformer模型计算复杂性,这样高维度向量不可能在空间和时间上同时被处理,因此这种操作不可行。

考虑到典型的语义分割Encoder是将H*W*3的2D图片降采样为X=H/16 * W/16 * C大小,因此我们决定将transformer的输入序列长度L设计为H/16 * W/16=(H*W)/256。这样我们可以将transformer的输出序列轻易的变形到和典型Encoder一样的尺寸(因为SETR的decoder是传统CNN的decoder,要满足decoder的输入,所以在这个地方就要限制transformer的输出尺寸)。  

为了得到(H*W)/256的输出序列,我们将H*W*3的image统一划分成了H/16 * W/16的patch,(比如224*224*3的图片划分成了14*14大小的patch,一共划分了16组,所以展成一维向量就是(14*14)*(16*16*3)=196*768)然后将划分好的patch进行排序。然后通过Linear project函数将每个向量化的patch进一步映射到一个C维的嵌入空间,对于图像X,我们得到一个一维的patch嵌入序列。然后为了编码patch的空间信息,我们学习了一种特殊的向量P,将该向量和通过linear project输出的向量进行相加,尽管transformer具有无序的self-attention特性,但是加上位置编码PE之后仍然能保持空间信息。

Transformer:将一个一维的序列E作为输入,一个纯的transformer的Encoder被用来学习这个序列的特征。这意味着每一层的transformer都有全局的感受野,解决了存在于FCN和之前模型中感受也受到限制的问题。transformer Encoder由L层mult-head Self-attention(MSA)和Multilayer Perceptron(MLP)Blocks(这篇文章中提到MLP,Graph attention networks. In ICLR, 2018)组成。每一层的self-attention的输入都是由前一层输入计算得到的一个三元组,原式如下图所示。

其三个linear projection层的参数Wq,Wk,Wv都是可学习,其中d是三元组的维度。Self-attention可以表示为:

Mult-head Self-attention(MSA)是一个具有m个独立Self-attention操作的扩展,并投射它们的串联输出

3.3. Decoder Design

为了评估SETR编码器特征表示Z的有效性,我们引入了三种不同的解码器设计来执行像素级分割。由于解码器的目标是在原始的二维图像空间(H × W)中生成分割结果,我们要reshape编码器的feature,以便于在decoder中使用。(主要是说transformer输出是二维的,但是传统decoder的输入是需要三维HWC,所以需要将transformer输出的二维转换为三维,即HW/256 * C → H/16 * W/16 * C)。

下面介绍三种decoder。

(1) Naive upsampling (Naive)

这个编码器首先将transformer的输出feature维度变为分类数(比如Cityscapes的话就是19)。对这个解码器我们采用了两单的两层网络结构:Conv 1*1 + Sync BN + Conv 1*1.然后我们通过简单地双线性插值上采样到原图像分辨率,在接一个具有像素级交叉熵损失函数的分类层。当我们使用该解码器的时候我们的模型叫做SETR-Naïve。

(2) Progressive UPsampling (PUP)

我们考虑一种交替变换层和上采样操作的渐进式上采样策略,而不是引入噪声预测的一步上采样策略(与Naïve相比)。为了最大限度地减轻对抗效应,我们将上采样倍数限制为2倍。如下图所示,为了恢复到到原图大小,需要将H/16 * W/16 * 1024的feature上采样四次,每次上采样两倍。当使用这个解码器时,我们将我们的模型表示为SETR-PUP。

(3) Multi-Level feature Aggregation (MLA)

第三种设计的特点是多层次的特征聚合(图1(c))这两篇文章具有相似精神的特征金字塔网络Feature pyramid networks for object detection. In CVPR, 2017,Panoptic feature pyramid networks. In CVPR, 2019.。然而,我们和他们的解码器是根本不同的,因为我们的每个SETR层的输出Z有相同的分辨率,没有金字塔形状。

具体来说,我们把来自M层的特征表征Z m作为解码器的输入,均匀地分布在各层中, Le/M为步长(不知道翻译的对否),然后部署M流,每个流集中在一个特定的选定层(M streams are then deployed, with each focusing on one specific selected layer)。

在每一个stream中,我们先将Encoder的输出feature二维转换为三维,然后通过一个三层的网络(kernel size分别是1、3、3),通道数分别在第一层和第三层的时候减半。然后在经过一个双线性插值的操作将空间分辨率扩大四倍。为了增强不同流之间的交互,我们通过在第一层之后添加元素来引入自顶向下的聚合设计。一个额外的3×3 conv是在元素级附加特性之后应用的。在第三层之后,我们从所有的流通过通道连接获得融合特征,然后对其进行4倍双线性上采样至全分辨率。(这一段理解没有很到位,我按照我的理解将文中提到的几个卷积层分别用不同颜色圈出来了并配有文字,但感觉还有点问题。)当使用这个解码器时,我们将我们的模型表示为SETR-MLA。

实验和部分略去,我读这篇文章的目的只要是为了了解SegFormer这篇文章的动机来源,实验部分我大致扫了一遍,在此不做详细翻译,有兴趣的同学可以自己去找原论文去看。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值