【语义分割算法】SETR+Segformer+Unet

一、SETR

  1.基本原理

    SETR是2021年复旦和腾讯优图联合提出的一个基于ViT的新型架构的语义分割模型,其仍然是语义分割常用的Encoder-Decoder架构,核心思想是用Transformer替代CNN做Encoder。

    主要步骤为首先把图像切分为固定大小的块,然后经过线性变换且加入切块位置信息后输入到标准Transformer Encoder中,这样就把图像转换为了向量序列。最后经过Decoder模块获得C个与原图大小一致的分割图。

    即分为输入转换、特征转换、输出转换3块。其中输入转换中的位置信息是对切块的索引学习一个embedding,这样虽然Transformer是无序的但由于加入了位置信息仍然可以认为是有序的。特征转换是标准的Transformer Encoder。Decoder模块首先把Encoder的输出进行reshape,然后进行逐步上采样,也可以用多层级特征聚合,即把Encoder中的不同层拿出来逐步进行融合,最后通过一步上采样到原图尺寸大小。

    编码器用于压缩原始输入图像的空间分辨率并逐步地提取更加高级的抽象语义特征;解码器则用于将编码器所提取到的高级特征上采样到原始输入分辨率以进行像素级的预测。

    对于语义分割乃至分类、检测等几大主流的视觉任务来说,核心在于如何在保证效率的同时尽可能的捕获有效的上下文信息。主流方法主要有两种:改造原始的卷积操作或者在网络中引入注意力机制。对于改造原始的卷积操作方式主要是通过扩大感受野从而来捕获局部的上下文信息,而注意力方法则更倾向于从不同维度建立长距离的依赖从而来捕获全局的上下文信息。

  2.网络结构

    

  3.优缺点

    将Transformer有效用于语义分割,但只能单一尺度,因为不同尺度下位置编码数量不一样,此时位置编码要么插值要么滑窗都比较低效。

  4.参考资料

    https://zhuanlan.zhihu.com/p/348418189

    https://blog.csdn.net/weixin_37737254/article/details/118470860

二、Segformer

  1.基本原理

    Segformer是2021年香港大学、南京大学等联合提出的语义分割方法,也是类似SETR将Transformer应用到语义分割,遵循的都是Encoder-Decoder架构。SETR主要的问题是计算量和显存占用都很大速度慢,而且采用固定大小的切块导致位置编码不灵活。所以Segformer旨在提高速度和解决位置编码不灵活问题,同时提升效果

    Segformer在Encoder和Decoder模块都做了优化。

    在Encoder模块有4个优化点:

      1)层次化特征表示,即特征图采用多种尺度。SETR中只有1/16的特征图,Segformer中包括1/4,1/8,1/16和1/32。

      2)有重叠的切分块。这样做的目的是保证块的边缘是连续的。

      3)更有效的自注意力,目的是降低计算量提高计算效率。Transformer计算瓶颈在attention层,对大分辨率的图片,对K先reshape再全连接降维可以有效降低计算量。

        

 

      4)去掉位置编码且在FFN中加入卷积层,原因是对语义分割来说并不需要太远距离的信息,也就不需要位置编码,但相邻像素间的关系是需要的,因此需要卷积层来获得相邻位置信息。

    在Decoder模块中,采用十分轻量级的做法,即将不同尺度的特征图都先上采样到原图的1/4,然后进行concat,再进行线性变换到原图1/4大小的分割图。

  2.网络架构

    

  3.参考资料

    https://zhuanlan.zhihu.com/p/379054782

    https://blog.csdn.net/qq_40035462/article/details/123504962?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123504962-blog-120760028.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-123504962-blog-120760028.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=1

     https://blog.csdn.net/xuzz_498100208/article/details/120760028

三、Unet

  1.基本原理

    Unet是2015年提出用于语义分割的模型,是编码器-解码器结构,即先通过卷积和池化的编码器实现高维特征的提取,然后通过逐步反卷积获得最终的分割结果,其中解码器的每一步都融合了编码器相应的特征。

    U型网络结构+跳层连接。

  2.网络结构

    

  3.参考资料

    https://arxiv.org/pdf/1505.04597.pdf

posted @ 2022-12-28 16:50  我若成风者  阅读(2019)  评论(0编辑  收藏  举报