SegNeXt: 重新思考基于卷积注意力的语义分割

news2024/9/20 9:36:21

论文信息

论文名称: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/358274.html

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

相关文章

ESP-C3入门11. 创建最基本的HTTP请求

ESP-C3入门11. 创建最基本的HTTP请求一、menuconfig配置二、配置 CMakeLists1. 设置项目的额外组件目录2. 设置头文件搜索目录三、在 ESP32 上执行 HTTP 请求的基本步骤1. 创建 TCP 连接2. 设置 HTTP 请求3. 发送 HTTP 请求4. 接收 HTTP 响应5. 处理 HTTP 响应6. 关闭 TCP 连接…

35岁以上的大龄测试员们,后来都干什么去了?

为什么软件测试行业看不见白发苍苍的软件测试员?大龄测试员都去哪里了?各个公司会辞退大龄测试员吗? 如果一位 50 多岁的测试员申请 20 多岁或 30 多岁的职位,有多少公司会雇用他们呢?关于这个问题,有很多流言传说,也有一些残酷的现实。…

努力优化和改造不好的环境,去设计新的、积极的、适合自己的环境

你知道环境对你的影响有多大吗?自己的的社交圈也是一个环境如果你待在一个只知道吃喝玩乐,不思进取,天天玩手机、打游戏的圈子里那你很大程度也会被影响,因为你不跟他们一起你就融入不进去,就会被孤立,很多…

优秀蓝牙耳机推荐,热销不错的四款蓝牙耳机推荐

蓝牙耳机作为目前最流行的数码产品,受到很多人追捧,蓝牙耳机摆脱了有线蓝牙耳机的束缚,能够更好听歌打游戏,随时取用,更为便利,当然,随着耳机的大幅度创新,也导致很多人在选购耳机的…

内网渗透(四十三)之横向移动篇-SMB远程执行命令横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

前端性能优化的一些技巧(90% chatGpt生成)

终于弄好了chatGpt的账号,赶紧来体验一波。先来一波结论,这篇文章的主要内容来源,90%是用chatGpt生成的。先上chatGpt的生成的结果:作为一名懒惰的程序员,chatGpt会帮助我变得更懒...,好了下面开始文章的正…

GEE学习笔记 六十八:【GEE之Python版教程二】配置Python开发环境

这一篇内容主要讲解两部分内容,第一部分是本地python开发环境的配置,第二部分是GEE的python开发环境配置。我这里做的所有的操作都是在我的Mac电脑上做的,Windows上操作类似,如果有不清楚的可以自行搜索相关操作步骤。 第一部分&…

pytorch零基础实现语义分割项目(四)——模型训练与预测

模型训练与预测项目列表前言损失函数one_hotDice LossFocal Loss模型参数与训练预测项目列表 语义分割项目(一)——数据概况及预处理 语义分割项目(二)——标签转换与数据加载 语义分割项目(三)——语义…

winserver服务器硬盘满了怎么清理? 服务器硬盘空间不足清理方法

本文主要介绍我在维护windows server服务器期间总结的一些磁盘清理方式。如对您有所帮助,不甚荣幸。 文章目录一、C盘清理1. System32的日志文件2. IIS的日志文件3. .Net Framework的缓存文件4. 清理其他不必要文件5. 虚拟内存从c盘移到其他硬盘二、其他软件清理1. …

【离散数学】4. 图论

1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 图&#xff1a;点边边与点的映射函数 连通性与判别 欧拉图与哈密尔顿图 二分图和平面图与欧拉公式 树及生成树 单源点最短路径&#xff1a;Dijkstra算法 对偶图 4. 图论 4.1 图的基本概念 4.1.1 图 一个图G是一个三重组 <V(G),E…

【LeetCode】No.232. 用栈实现队列 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/implement-queue-using-stacks/ 1. 题目介绍&#xff08;232. 用栈实现队列&#xff09; 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff…

两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近2年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…

慕了没?3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer

前段时间有个朋友出去面试&#xff0c;这次他面试目标比较清晰&#xff0c;面的都是业务量大、业务比较核心的部门。前前后后去了不少公司&#xff0c;几家大厂里&#xff0c;他说给他印象最深的是字节3轮技术面1轮HR面&#xff0c;他最终拿到了30k*16薪的offer。第一轮主要考察…

MyBatis-Plus详细讲解(整合spring Boot)

哈喽&#xff0c;大家好&#xff0c;今天带大家了解的是MyBatis-Plus&#xff08;简称 MP&#xff09;&#xff0c;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。首先说一下MyBatis-Plus的愿景是什么&…

十五.程序环境和预处理

文章目录一.程序翻译环境和执行环境1.ANSI C 标准2.程序的翻译环境和执行环境二.程序编译和链接1.翻译环境2.编译本身的几个阶段3.运行环境三.预处理1.预定义符号2.#define&#xff08;1&#xff09;#define定义标识符&#xff08;2&#xff09;#define定义宏&#xff08;3&…

【Linux】——基础开发工具和vim编辑器的基本使用方法

目录 Linux 软件包管理器 yum Linux编辑器-vim使用 1.vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4. vim末行模式命令集 如何配置vim Linux 软件包管理器 yum yum是Linux下的一个下载软件的软件 对于yum&#xff0c;现阶段只需要会使用yum的三板斧就…

【linux】——gcc/g++,make/makefile的简单使用

目录 1.gcc的基本使用 2.Linux下的静态库和动态库的理解 3.Linux项目自动化构建工具——make/makefile 1.gcc的基本使用 gcc是专门用来编译c语言的 g是专门用来编译c的&#xff0c;但是g也能够用来编译c语言 预处理&#xff08;进行宏替换&#xff09; 预处理功能主要包括宏…

Idea无法识别SpringBoot配置文件

SpringBoot的配置文件 application.properties > application.yml > application.yaml 配置文件间的加载优先级 properties&#xff08;最高&#xff09;> yml > yaml&#xff08;最低&#xff09;不同配置文件中相同配置按照加载优先级相互覆盖&#xff0c;不同配…

免费使用通配符域名证书

文章目录前言一、手动安装acme.sh操作1、安装acme.sh2、使用dns api自动续签二、宝塔自动操作【推荐】总结前言 之前个人站点一般都是使用阿里云免费单域名证书&#xff0c;虽然好用但是只有一年有效&#xff0c;到期只能手动重新申请&#xff0c;并且每次弄个子域名出来就要重…

【C++】类和对象练习——日期类的实现

文章目录前言1. 日期的合法性判断2. 日期天数&#xff08;/&#xff09;2.1 和的重载2.2 对于两者复用的讨论3. 前置和后置重载4. 日期-天数&#xff08;-/-&#xff09;5. 前置- -和后置- -的重载6. 日期-日期7. 流插入<<重载8. 流提取>>重载9. 总结10. 源码展示前…