论文阅读-SegNeXt: 重新思考基于卷积注意力的语义分割

news2025/7/16 18:08:20

论文信息

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

项目GitHub:

GitHub - Visual-Attention-Network/SegNeXt: Official Pytorch implementations for "SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation" (NeurIPS 2022)

文章:https://arxiv.org/pdf/2209.08575.pdf

时间:2022.09

动机与创新

动机

Vision Transformer的"降维打击"导致多个CV领域SOTA方案均被ViT方案主导,语义分割同样不例外。通过重新审视之前成功的语义分割工作(DeepLabV3+, HRNet, SETR, SegFormer),作者总结了不同模型拥有的几个关键属性,如下表所示。 基于上述观察,作者认为一个成功的语义分割模型应该具有以下特点: (i) 强大的骨干网络作为编码器。与之前基于 CNN 的模型相比,基于 Transformer 的模型的性能提升主要来自更强大的骨干网络。 (ii) 多尺度信息交互。与主要识别单个对象的图像分类任务不同,语义分割是一项密集的预测任务,因此需要在单个图像中处理不同大小的对象。 (iii) 空间注意力。空间注意力允许模型通过语义区域内区域的优先级来执行分割。 (iv) 计算复杂度低。这在处理来自遥感和城市场景的高分辨率图像时尤其重要。

 创新

考虑到上述分析,在本文中,作者重新思考了卷积注意力的设计,并提出了一种高效且有效的语义分割编码器-解码器架构。与之前在解码器中使用卷积作为特征细化器的基于Transformer的模型不同,本文的方法反转了Transformer-卷积 编码器-解码器架构,即对编码器采用了传统卷积模块但引入了多尺度卷积注意力,对解码器采用Hamburger模型(自注意力的替代方案)进一步提取上下文信息。具体来说:

  1. 对于编码器中的每个块,作者更新了传统卷积块的设计,并利用多尺度卷积特征通过简单元素乘法来唤起空间注意力。作者发现这种建立空间注意力的简单方法比空间信息编码中的标准卷积和自注意力更有效。

  2. 对于解码器,作者从不同阶段收集多级特征,并使用 Hamburger进一步提取全局的上下文信息。在此设置下,本文的方法可以获得从局部到全局的多尺度上下文,实现空间和通道维度的适应性,以及从低到高的信息聚合。

如下图所示,SegNeXt 明显优于最近基于Transformer的方法。特别是,本文的 SegNeXt-S 仅使用大约 1/6(124.6G 对 717.1G)的计算成本和 1/2 的参数(13.9M 对 27.6M)就在Cityscapes 数据集上优于 SegFormer-B2(81.3% 对 81.0%)。

 贡献

  1. 本文确定了一个好的语义分割模型应该拥有的特征,并提出了一种新颖的定制网络架构,称为SegNeXt,它通过多尺度卷积特征唤起空间注意力。

  2. 作者表明,具有简单且廉价卷积的编码器仍然可以比视觉Transformer表现更好,尤其是在处理对象细节时,同时它需要的计算成本要低得多。

  3. 本文的方法在各种分割基准上大幅提高了最先进的语义分割方法的性能,包括 ADE20K、Cityscapes、COCO-Stuff、Pascal VOC、Pascal Context 和 iSAID。

方法

Convolutional Encoder

 在大多数先前的工作之后,作者为编码器采用金字塔结构。对于编码器中的构建块,作者采用了与 ViT类似的结构,但不同的是没有使用自注意机制,而是设计了一种新颖的多尺度卷积注意 (MSCA) 模块。如下图 2 (a) 所示,MSCA 包含三个部分:用于聚合局部信息的深度卷积用于捕获多尺度上下文的多分支深度带状卷积(更轻量,降低计算量)以及用于建模不同通道之间关系的 1×1 卷积。 其中1×1卷积的输出直接用作注意力权重来重新加权MSCA的输入。在数学上,MSCA 可以写成:

 其中 F 表示输入特征。 Att 和 Out 分别是注意力图和输出。⊗ 是逐元素矩阵乘法运算。 DW-Conv 表示深度卷积,Scalei , i ∈ {0,1,2,3},表示图 2(b) 中的第 i 个分支。Scale0 是identity连接。在每个分支中,作者使用两个深度方向的带状卷积来逼近具有大内核的标准深度方向的卷积。这里,每个分支的内核大小分别设置为 7、11 和 21(多尺度)。作者选择深度条带卷积的原因有两个。一方面,带状卷积是轻量级的。为了模拟内核大小为 7 × 7 的标准 2D 卷积,只需要一对 7 × 1 和 1 × 7 卷积。另一方面,分割场景中有一些条状物体,如人、电线杆。因此,带状卷积可以是网格卷积的补充,有助于提取带状特征。

堆叠一系列构建块产生了所提出的卷积编码器,称为 MSCAN。对于 MSCAN,作者采用了一个通用的层次结构,它包含四个空间分辨率递减的阶段:

 这里,H 和 W 分别是输入图像的高度和宽度。每个阶段包含一个下采样块和一堆building block。下采样块有一个步长为 2 且内核大小为 3×3 的卷积,然后是一个Batch Norm层。请注意,在 MSCAN 的每个构建块中,作者使用batch norm而不是layer norm,因为作者发现batch norm对分割性能的增益更大。

又通过堆叠MSCA得到不同的MSCA骨干信息以及SegNeXt架构信息,作者设计了四种不同尺寸的编码器模型,分别命名为 MSCAN-T、MSCAN-S、MSCAN-B 和 MSCAN-L。相应的整体分割模型分别称为 SegNeXt-T、SegNeXt-S、SegNeXt-B、SegNeXt-L。其中,e.r.表示前馈网络的扩展比,“C”和“L”分别是通道和构建块的数量,Decoder dimension表示解码器中MLP的尺寸,“Parameter”表示在ADE20K上参数的数量。

 Decoder

 在分割模型中,编码器大多是在 ImageNet 数据集上预训练的。为了捕获高级语义,通常需要一个解码器,它应用于编码器。在这项工作中,作者研究了三个简单的解码器结构,如上图所示。第一个在 SegFormer中采用,是一个纯粹基于 MLP 的结构。第二种主要采用基于 CNN 的模型。在这种结构中,编码器的输出直接用作重型解码器头的输入,如 ASPP、PSP 和 DANet 。最后一个是本文的 SegNeXt 中采用的结构。作者汇总了最后三个阶段的特征,并使用轻量级 Hamburger来进一步建模全局上下文。结合强大的卷积编码器,作者发现使用轻量级解码器可以提高性能计算效率。

与 SegFormer 的解码器聚合从阶段 1 到阶段 4 的特征不同,本文的解码器只接收来自最后三个阶段的特征。这是因为本文的 SegNeXt 基于卷积。第 1 阶段的特征包含过多的低级信息并损害性能。此外,Stage 1 上的操作带来了沉重的计算开销。在本文的实验部分,作者将证明本文的卷积 SegNeXt 比最近最先进的基于Transformer的 SegFormer和 HRFormer表现得更好。

实验

1. Tab3.在 ImageNet 验证集上与最先进的方法进行比较。Tab4.在遥感数据集 iSAID 上与最先进的方法进行比较。

 2. MSCA设计的消融研究。

 3. SegNeXt-B 和 SegFormer-B2 在 Cityscapes 数据集上的定性比较。

 4. 在 ADE20K、Cityscapes 和 COCO-Stuff 基准上与最先进的方法进行比较。

 5. Tab.10在 Pascal VOC 数据集上与最先进的方法进行比较。Tab.11在 Cityscapes 测试数据集上与最先进的实时方法进行比较。

 6. Pascal Context 基准比较。

总结

在本文中,作者分析了以前成功的分割模型,并找到了它们所拥有的良好特征。基于这些发现,作者提出了一个定制的卷积注意力模块 MSCA 和一个 CNN 风格的网络 SegNeXt。实验结果表明,SegNeXt 在相当大的程度上超越了当前最先进的基于Transformer的方法。最近,基于Transformer的模型已经主导了各种细分排行榜。相反,本文表明,在使用适当的设计时,基于 CNN 的方法仍然可以比基于Transformer的方法表现更好。

附录

VAN

https://blog.csdn.net/amusi1994/article/details/123102970?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166771924316782388053715%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166771924316782388053715&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-123102970-null-null.142^v63^control,201^v3^control_2,213^v1^control&utm_term=VAN&spm=1018.2226.3001.4187

低秩表达

原图像=低秩矩阵+噪声

图像的全局信息是图像中低秩部分

低秩表达

Hamburger

 下图为Hamberger的架构示意图,它采用矩阵分解方式进行全局空域信息建模。Hamburger的原始论文 Is Attention Better Than Matrix Decomposition? 以top 3%的分数被ICLR 2021接收。

 上篇:https://zhuanlan.zhihu.com/p/369769485

中篇:https://zhuanlan.zhihu.com/p/369855045

下篇:https://zhuanlan.zhihu.com/p/370410446

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识点滴 - 自行车分类

旅行车 旅行自行车(Touring bicycle)由公路自行车发展而来,适合超远程自给自足的旅行,有较舒适放松的车架几何设计,能够负重,有很低的最低档位,配件选择方面追求可靠耐用。 专业的长途旅行车均以…

pytorch中padding应用总结

卷积操作作为卷积神经网络的核心模块,在其计算过程中必须考虑图像“边缘像素”的卷积方式。查阅资料发现,我们可以采用“卷积之前进行边界填充”或“卷积之后进行边界填充两种方式”,同时边界填充的具体手段包含常量填充、零填充、镜像填充以…

大数据处理学习笔记1.3 使用Scala集成开发环境

文章目录零、本讲学习目标一、搭建Scala的IntelliJ IDEA开发环境(一)启动IDEA(二)安装Scala插件(三)配置IDEA使用的默认JDK(四)创建Scala项目1、创建Scala项目 - ScalaDemo2、创建Sc…

求选择最少的区间数目可以覆盖连续区间 [0,n]:跳跃游戏,视频拼接,灌溉花园的最少水龙头数目

选择最少区间数目覆盖区间。 贪心方法 假设有一个人想过桥,0 和 n 分别是河的两岸,一开始,人在 0 给你一些小区间,我们把这些区间视作桥。一开始我们肯定要选择包含 0 的区间,且要保证尽可能走得远。假如我们已经走到…

解析Java中的class文件

解析class文件需要把class文件当成文件流来处理,定义ClassReader结构体 type ClassReader struct {data []byte }go语言中的reslice语法可以跳过已经读过的数据。 同时定义了ClassFile数据结构来描述class文件的各个部分,该数据结构如下所示&#xff1…

Scala流程控制(第四章:分支控制、嵌套分支、switch分支、for循环控制全、while与do~while、多重与中断)

文章目录第 4 章 流程控制4.1 分支控制 if-else4.1.1 单分支4.1.2 双分支4.1.3 多分支4.2 嵌套分支4.3 Switch 分支结构4.4 For 循环控制4.4.1 范围数据循环(To)4.4.2 范围数据循环(Until)4.4.3 循环守卫4.4.4 循环步长4.4.5 嵌套…

华为OD机试 - 最小传递延迟(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

户外跑步用什么耳机,最适合跑步用蓝牙耳机推荐

户外运动使用的蓝牙耳机,耳机在佩戴时需要考虑出行安全,耳机完全封闭耳道的耳机,会让我们对周围的情况不能及时做出反应,造成不必要的安全事故。如果在运动当中还不知道选择哪一些运动蓝牙耳机,可以看看下面这些分享~ …

【Azure 架构师学习笔记】-Azure Data Factory (2)-触发器

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 接上文【Azure 架构师学习笔记】-Azure Data Factory (1)-调度入门 前言 上文介绍了ADF 的调度,在调度演示中,还有几个小按钮可以深究,如下图,有【…

小米AI 连接智能生活

近年来,人工智能(AI)技术在多个领域落地并不断取得发展与突破。在互联网的推动下,AI语音助理、智能家居、眼镜相机等产品相继推出,打造了更加便捷的生活体验。秉承着“技术为本”的理念,小米始终致力于前沿…

【Go基础】数据库编程

文章目录1. SQL语法简介2. MySQL最佳实践3. Go SQL驱动接口解读4. 数据库增删改查5. stmt6. SQLBuilder6.1 Go-SQLBuilder6.2 Gendry6.3 自行实现SQLBuilder7. GORM8. Go操作MongoDB1. SQL语法简介 SQL(Structured Query Language)是一套语法标准&#…

2023美赛参赛经历分享

今天早上登录MCM: The Mathematical Contest in Modeling (comap.com)发现论文提交已经显示Received。虽然这几天连连有开学恶补的期末考试,但还是忙里偷闲趁着新鲜写一篇关于美赛的参赛个人感受。跟我一起打这次美赛的都是软件等专业的hxd,他们之前没有…

SpringBoot + Lock4j实现高性能分布式锁

1. 简介 在分布式业务开发中,很多场景都需要添加分布式锁。在具体实践过程中,研发人员都需要自行实现,导致实现方式不统一,代码风格迥异,难以维护。 在Mybatis-Plus生态中,Lock4j提供了支持redission、re…

华为OD机试 - 最大排列(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

python--matplotlib(4)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…

Spring Cloud Gateway Nacos 实现动态路由

微服务都是互相独立的,假如我们的网关和其他服务都在线上已经运行了好久,这个时候增加了一个微服务,这个时候要通过网关访问的话需要通过修改配置文件来增加路由规则,并且需要重启项目,所以我们需要实现动态路由 方式一…

34. 应用监控【监控端点配置】

当一个 Spring Boot 项目运行时,开发者需要对 Spring Boot 项目进行实时监控来获取项目的运行情况,在项目出错时能够实现自动报警等。 Spring Boot 提供了actuator 来帮助开发者获取应用程序的实时运行数据。开发者可以选择使用 HTTP 端点或JMX来管理和监…

九龙证券|银行资本管理办法迎“大修” 信用风险权重法调整优化

1年期AAA中债商业银行同业存单到期收益率 日前迎来“大修”的商业银行本钱办理方法,在债券商场激起“涟漪”——债券商场一改此前平静态势,连续两日跌落。 2月21日,10年期国债收益率较上星期五上行2.9个基点,至2.919%&#xff1b…

记录charles手机端配置https的成功过程

1.百度 https://www.likecs.com/show-204025787.html https://blog.csdn.net/enthan809882/article/details/117572094?spm1001.2101.3001.6650.6&utm_mediumdistribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaiduRate-6-117572094-blog-122959902.pc_rele…

余承东:问界就是华为生态汽车,不涉及20万以下车型

今天界面新闻发布了一篇余承东的专访文章,谈到了外界对华为造车的质疑,以及回应了与赛力斯的合作,后续HI模式与智选车模式如何推进的话题。摘录重点如下:1.首先,继续「不造车」“华为没有必要自己下场造车。”在他看来…