• 【语义分割】13、SegNeXt | 只要卷积用得好 提升语义分割没烦恼


    在这里插入图片描述

    论文:SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation

    代码:https://github.com/Visual-Attention-Network/SegNeXt

    出处:NIPS 2022

    贡献点:

    • 证明了使用简单的卷积 encoder (深度可分离条状卷积)仍可以达到比使用 vision transformer 更好的效果,且对细节处理更好,计算量也更少
    • 在 ADE20K, Cityscapes,COCO-stuff,Pascal VOC,Pascal Context,iSAID 的语义分割任务上都取得了很好的效果

    一、背景

    在这里插入图片描述

    虽然 Transformer 相关方法占据了语义分割榜首,但本文作者就是要证明卷积网络依然能打,依然高效且效果好,能够比 Transformer 使用自注意力实现的编码网络更能提取上下文信息。

    回顾一下之前表现较好的语义分割方法,如表 1 所示,作者认为一个好的方法要具有如下几个特征:

    • 一个强的 backbone 作为 encoder:和 CNN 相比,Transformer 方法的 backbone 更强一些
    • 多尺度信息交互:语义分割作为一个密集预测任务,需要处理不同尺度的目标
    • spatial attention:空间 attention 能够让模型通过语义区域内的区域优先级进行分割(也就是寻找空间中不同像素的关系来指导分割)
    • 低计算复杂度:尤其是处理高分辨率图像(如遥感、城市场景),低分辨率图很重要

    基于上述讨论,本文作者重新思考了卷积中的 attention,并且提出了一个更高效的 encoder-decoder 结构 MSCA(multi-scale convolutional attention)。

    在这里插入图片描述

    语义分割模型一般可以分为两部分:encoder 和 decoder

    • Encoder:前期一般使用如 ResNet、ResNeXt、DenseNet 等分类网络,但由于分割是密集预测任务,所以后面就有了 Res2Net、HRNet、SETR、SegFormer、HRFormer、MPViT、DPT 等专门为语义分割设计的网络
    • Decoder:使用 decoder 可以从 encoder 编码特征中恢复更好的特征,会从多尺度感受野、多尺度语义特征、扩大感受野、加强边界信息、捕捉全局上下文等角度出发来实现

    二、方法

    2.1 Convolutional Encoder

    Encoder 的结构类似 ViT,但还有些不同,没有使用 self-attention,使用了多尺度卷积 attention(multi-scale convolutional attention, MSCA, module)。

    MSCA 的结构如图 2a 所示,包含三个部分:

    • 深度可分离卷积来聚合局部特征
    • 多分支深度可分离条状卷积,来捕捉多尺度上下文特征
    • 1x1 卷积来建立不同分支之间的关系,1x1 卷积的输出作为 attention weights 来对 MSCA 的输入进行加权

    MSCA 的公式如下:

    在这里插入图片描述

    • F 是输入特征
    • att 和 out 表示 attention map 和 output
    • i 表示第 i 个分支,如图 2b,Scale0 表示恒等连接
    • 在每个分支,使用两个 depth-wise strip convolution 来近似标准的大核 depth-wise convolution ,每个分支的卷积核大小分别为 7、11、21

    为什么选择 depth-wise strip convolution 呢:

    • strip conv 很轻量,标准的 7x7 卷积,可以使用一对儿 1x7 和 7x1 的卷积来实现
    • 目标中有很多条状目标,如行人、电线杆等,strip conv 能够帮助提取条状目标特征

    在这里插入图片描述

    将一系列 MSCA 堆叠起来后,就得到了 MSCAN,使用的层级结构,包括 4 个 stage,每个 stage 的空间分辨率分别为 H 4 × W 4 \frac{H}{4} \times \frac{W}{4} 4H×4W H 8 × W 8 \frac{H}{8} \times \frac{W}{8} 8H×8W H 16 × W 16 \frac{H}{16} \times \frac{W}{16} 16H×16W H 32 × W 32 \frac{H}{32} \times \frac{W}{32} 32H×32W,下采样是通过 3x3 s=2 的卷积 + BN 来实现的。

    注意:MSCAN 里边都使用的 BN 而非 LN,也是经过实验证明 BN 效果更好

    不同尺寸的模型结构如下:

    在这里插入图片描述

    2.2 Decoder

    图 3 展示了 3 种不同的 decoder 结构:

    • a:SegFormer 结构,是 MLP-based 结构
    • b:CNN-based 结构,这种结构的输出一般直接作为其他解码头的输入,如 ASPP、PSP 等
    • c:SegNeXt 结构:将 3 个 stage 的输入进行组合,然后提提取全局上下文特征。这里只使用了后三个 stage 的结果,这是因为 SegNeXt 是基于卷积的,第一个 stage 包含更多的低层特征,会影响效果,而且增加计算量。

    在这里插入图片描述

    三、效果

    在这里插入图片描述

    在这里插入图片描述

    表 6 验证了 MSCA 的设计结构的不同效果:

    在这里插入图片描述

    表 7 验证了是否使用 stage 1 的效果:

    在这里插入图片描述

    表 8 验证了 MSCA 的效果:

    在这里插入图片描述

    和 SOTA 的对比:

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    【数据库】实验一 openGauss数据库管理系统
    一文了解NFT的六大交易平台
    使用U3D、pico开发VR(二)——添加手柄摇杆控制移动
    基于DJYOS的IIC驱动编写指导手册
    SpringBoot SpringBoot 开发实用篇 3 测试 3.7 匹配响应体【JSON】
    vconsole本地调试工具
    【POJ No. 3635】 加满油箱 Full Tank?
    2022CCPC威海补题:A C E G J
    图解LeetCode——2379. 得到 K 个黑块的最少涂色次数(难度:简单)
    什么是CRM系统?为什么现代企业都在使用?
  • 原文地址:https://blog.csdn.net/jiaoyangwm/article/details/127819541