语义分割任务中的Transformer

本文探讨Transformer在语义分割中的应用,包括Patch-based与Query-based两种主要方式。Patch-based方法如SETR和Segformer,通过全局上下文建模改善分割效果;Query-based方法则通过动态查询机制提高分割精度。

语义分割中的Transformer

Transformer 在语义分割中的使用主要有两种方式:

  • patch-based Transoformer
  • query-based Transformer

1 Patch-based Transformer

Transformer最初应用于NLP领域,在NLP中称每个单词为token,而在CV中就是将图像切割成不重叠的Patch序列(其实就是token)。Patch-basedTransformer实际上是模仿NLP任务,将语义分割任务视为了一个Seq2Seq的问题。
自FCN(全卷积网络)之后,语义分割模型大多数都是基于带有Encoder-Decoder结构的FCN进行设计:Encoder用于特征表示学习,Decoder用于对特征表示进行像素级分类。核心是Encoder部分:其由大量卷积层堆叠而成,在堆叠过程中考虑到计算量,会逐渐降低feature maps的空间分辨率,同时增大了后续像素点的感受野,也因此使得Encoder可以学到更为抽象的特征表示。这种设计有两个优点
①平移等变性:给定一对空间点( i , j) ,相应的卷积权重w_i-j只关心二者的相对偏移,即i − j,而不是 i 或 j 的具体数值。这可以在有限的数据集上提升模型的泛化能力。
②局部性:通过参数共享降低了模型复杂度。
然而,CNNs难以学习长距离依赖关系,而这种关系对语义分割至关重要。
相较于传统CNN 需要很多的 decoder 堆叠来扩大感受野,进而得到高层特征,patch-based Transformer 是对全局特征的建模,将输入图像看成一个 Patch 序列,然后输入 encoder 中,自始至终保持了全局语义依赖,有效提升了分割任务的效果。
很多工作开始研究将 patch-based Transformer 和不同的Decoder进行结合。

1.1 SETR

SETR 使用 Transformer encoder 完全替代 CNN backbone,舍弃了卷积和下采样过程,将分割任务作为序列-序列的预测任务。与现有基于FCN的模型利用空洞卷积和注意力模块来增大感受野的方式不同,SETR使用transformer作为encoder,在encoder的每层中都进行全局上下文建模,完美去掉了对FCN中卷积的依赖。设计了三种不同复杂度的Decoder解决语义分割问题,来对自注意力进行深入研究:①朴素上采样 (Naive) ②渐进上采样 (PUP) ③多级特征融合 (MLA)。

但是,SETR完全采用ViT-large作为encoder有以下几个缺点
(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值