CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation
论文:CM-UNet: Hybrid :CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation
代码:https://github.com/XiaoBuL/CM-UNet
Abstrcat:
由于大规模图像尺寸和对象变化,当前基于 CNN 和 Transformer 的遥感图像语义分割方法对于捕获远程依赖性不是最佳的,或者受限于复杂的计算复杂性。在本文中,我们提出了 CM-UNet,包括用于提取局部图像特征的基于 CNN 的编码器和用于聚合和集成全局信息的基于 Mamba 的解码器,促进遥感图像的高效语义分割。具体来说,引入 CSMamba 块来构建核心分割解码器,该解码器采用通道和空间注意力作为 vanilla Mamba 的门激活条件,以增强特征交互和全局局部信息融合。此外,为了进一步细化 CNN 编码器的输出特征,采用多尺度注意力聚合(MSAA)模块来合并不同尺度的特征。 通过集成CSMamba模块和MSAA模块,CM-UNet有效捕获大规模遥感图像的长距离依赖关系和多尺度全局上下文信息。 在三个基准上获得的实验结果表明,所提出的 CM-UNet 在各种性能指标上都优于现有方法。
Introduction
在本文中,我们提出了 CM-UNet,一种用于 RS(遥感) 图像语义分割的新颖框架。 CM-UNet 利用 Mamba 架构聚合来自 CNN 编码器的多尺度信息。 它由一个 U 形网络和一个解码器组成,其中的 CNN 编码器提取多尺度文本信息,解码器采用设计的 CSMamba 块,可实现高效的语义信息聚合。 CSMamba 模块利用 Mamba 模块以线性时间复杂度捕获长程依赖性,并采用通道和空间注意力进行特征选择。CSMamba 块作为之前的自注意力转换器块的替代方案,提高了 RS 语义分割的效率。 此外,引入了多尺度注意力聚合(MSAA)模块来集成来自 CNN 编码器不同级别的特征,通过跳过连接帮助 CSMamba 解码器。 最后,CM-UNet 在各个解码器级别结合了多输出监督,以逐步生成 RS 图像的语义分割。 贡献总结如下:
1)我们提出了一个名为 CM-UNet 的基于 mamba 的框架,以有效地集成局部全局信息以进行 RS 图像语义分割。
2)我们设计了一个 CSMamba 块,将通道和空间注意力信息包含到 mamba 块中以提取全局上下文信息。 此外,我们采用多尺度注意力聚合模块来辅助跳跃连接和多输出损失来逐步监督语义分割。
3)在三个著名的公开RS数据集(ISPRS Potsdam、ISPRS Vaihingen和LoveDA)上进行的广泛实验表明了所提出的CM-UNet的优越性。
Methodology
我们的 CM-UNet 框架如图 2 (a) 所示,包含三个核心组件:基于 CNN 的编码器、MSAA 模块和基于 CSMamba 的解码器。 编码器采用 ResNet 提取多级特征,而 MSAA 模块融合这些特征,取代 UNet 的普通跳过连接并增强解码器的能力。 在 CSMamba 解码器中,CSMamba 块的组装聚合了本地文本特征以建立全面的语义理解。
A、CSMamba Block
受 Mamba 在线性复杂度远程建模方面取得成功的激励,我们将视觉状态空间模块引入 RS 语义分割领域。 按照[10],输入特征 X ∈ R H × W × C X\in\mathbb{R}^{H\times W\times C} X∈RH×W×C 将经过两个并行分支。在第一个分支中,特征通道通过线性层扩展至 λC,其中 λ 是预定义的通道扩展因子,随后是深度卷积、SiLU 激活函数以及 2D-SSM 层和 Layernorm。在第二个分支中,特征通过通道和空间注意力(CS)以及随后的 SiLU 激活函数进行集成。之后,将两个分支的特征与 Hadamard product(哈达玛积)进行聚合。 最后,将通道号投影回 C 以生成与输入形状相同的输出 Xout:
其中DWConv表示深度卷积,CS表示通道和空间注意模块,2D-SSM表示2D选择性扫描模块,⊙表示Hadamard积。原始的 Mamba 模型通过顺序选择性扫描处理一维数据,这适合 NLP 任务,但对图像等非因果数据形式提出了挑战。继[10]之后,我们结合了 2D 选择性扫描模块(2D-SSM)来进行图像语义分割。 如图2©所示,2D-SSM将图像特征展平为一维序列,并在四个方向上扫描:左上到右下、右下到左上、右上到左下。 ,以及从左下角到右上角。 这种方法通过选择性状态空间模型捕获每个方向的远程依赖性。 然后合并方向序列以恢复二维结构。
Multi-Scale Attention Aggregation多尺度注意力聚合
图 3 描述了用于细化 RS 图像特征的多尺度注意力聚合 (MSAA) 模块。 ResNet 编码器阶段 F1、F2 和 F3 的输出被连接为 F ^ i = C o n c a t ( F i , F i − 1 , F i + 1 ) \hat{F}_{i}=\mathrm{Concat}(F_{i},F_{i-1},F_{i+1}) F^i=Concat(Fi,Fi−1,Fi+1)。组合特征 F ^ ∈ R C 1 × H × W \hat{F} \in \mathcal{R}^{C_{1}\times H\times W} F^∈RC1×H×W被馈送到 MSAA 中进行细化。 在 MSAA 中,双路径(空间路径和通道路径)用于特征聚合。 空间细化从通道投影开始,通过 1×1 卷积将通道 C1 减少到 C2,其中 C 2 = C 1 α C_{2}=\frac{C_{1}}{\alpha} C2=αC1。多尺度融合涉及对不同内核大小(例如 3 × 3、5 × 5、7 × 7)的卷积进行求和。随后,使用均值和最大池化来聚合空间特征,然后进行 7 × 7 卷积和与 sigmoid 激活的特征图。
同时,通道聚合使用全局平均池化将维度降低至 C1 × 1 × 1,然后通过 1 × 1 卷积和 ReLU 激活来生成通道注意力图。 该图经过扩展以匹配输入的尺寸,并与空间细化的图相结合。 因此,MSAA 增强了后续网络层的空间和通道特征。 通过合并 MSAA 模块,生成的特征图丰富了精细的空间和通道信息。
Multi-Output Supervision (多输出监督)
为了有效地监督解码器逐步生成 RS 图像的语义分割图,我们的 CM-UNet 架构在每个 CSMamba 块上结合了中间监督。 这确保了网络的每个阶段都对最终的分割结果做出贡献,从而促进更精细和准确的输出。 对于第 i 个 CSMamba 块的中间输出是
其中 Fcs 是第 i 个 CSMamba 块的特征。 Conv 模块用于将特征映射到输出 C 通道类别预测图。 总体而言,网络是使用标准交叉熵损失和 Dice 损失的组合进行训练的。
Conclusion
在本文中,我们介绍了 CM-UNet,这是一个利用最新 Mamba 架构进行 RS 语义分割的高效框架。 我们的设计通过采用新颖的 UNet 形结构来解决大规模 RS 图像中的显着目标变化。 编码器利用 ResNet 提取文本信息,而解码器利用 CSMamba 块有效捕获全局远程依赖关系。 此外,我们还集成了多尺度注意力聚合(MSAA)模块和多输出增强功能,以进一步支持多尺度特征学习。 CM-UNet 已在三个 RS 语义分割数据集上进行了验证,实验结果证明了我们方法的优越性。
相关文章:

CM-UNet: Hybrid CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation
论文:CM-UNet: Hybrid :CNN-Mamba UNet for Remote Sensing Image Semantic Segmentation 代码:https://github.com/XiaoBuL/CM-UNet Abstrcat: 由于大规模图像尺寸和对象变化,当前基于 CNN 和 Transformer 的遥感图像语义分割方…...

DP:子序列问题
文章目录 什么是子序列子序列的特点举例说明常见问题 关于子序列问题的几个例题1.最长递增子序列2.摆动序列3.最长递增子序列的个数4.最长数对链5.最长定差子序列 总结 什么是子序列 在计算机科学和数学中,子序列(Subsequence)是指从一个序列…...
Spring Data与多数据源配置
Spring Data与多数据源配置 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何在Spring Data中配置和使用多个数据源。 在现代应用程序中&…...

【前端vue3】TypeScrip-类型推论和类型别名
类型推论 TypeScript里,在有些没有明确指出类型的地方,类型推论会帮助提供类型。 例如: 变量xiaoc被推断类型为string 如重新给xiaoc赋值数字会报错 let xiaoc "xiaoc"xiaoc 1111111111111如没有给变量指定类型和赋值…...

javaEE——Servlet
1.web开发概述 所谓web开发,指的是从网页中向后端程序发送请求,与后端程序进行交互 2.java后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的,这样前端才可以访问得到 3.服务器是什么? ①服务器就是一款软件,可以向其发送请求&#…...

Kotlin扩展函数(also apply run let)和with函数
also apply run let with的使用例子 private fun testOperator() {/*** also*/val person Person("ZhangSan", 18)person.also {// 通常仅仅打印使用, 也可以通过it修改it.name "ZhangSan1"println("also inner name: " it.name)}println(&qu…...
C语言笔记27 •单链表介绍•
1.链表的概念及结构 链表是⼀种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的。 2. 顺序表带来的问题 (1)中间/头部的插⼊删除,时间复杂度为O(N) (2)增容需要申请新空间,拷⻉数据ÿ…...

C++编程(五)单例模式 友元
文章目录 一、单例模式(一)概念(二)实现方式1. 饿汉式2. 懒汉式 二、友元(一)概念(二)友元函数1.概念2.语法格式3. 使用示例访问静态成员变量访问非静态成员变量 (三&…...

012-GeoGebra基础篇-构造圆的切线
前边文章对于基础内容已经悉数覆盖了,这一篇我就不放具体的细节,若有需要可以复刻一下 目录 一、成品展示二、算式内容三、正确性检查五、文章最后 一、成品展示 二、算式内容 A(0,0) B(3,0) c: Circle(A,B) C(5,4) sSegment(A,C) DMidpoint(s) d: Circ…...

数据结构速成--查找
由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 …...

SpringMVC的基本使用
SpringMVC简介 SpringMVC是Spring提供的一套建立在Servlet基础上,基于MVC模式的web解决方案 SpringMVC核心组件 DispatcherServlet:前置控制器,来自客户端的所有请求都经由DispatcherServlet进行处理和分发Handler:处理器&…...

【PYG】Cora数据集分类任务计算损失,cross_entropy为什么不能直接替换成mse_loss
cross_entropy计算误差方式,输入向量z为[1,2,3],预测y为[1],选择数为2,计算出一大坨e的式子为3.405,再用-23.405计算得到1.405MSE计算误差方式,输入z为[1,2,3],预测向量应该是[1,0,0]࿰…...

MyBatis-plus这么好用,不允许还有人不会
你好呀,我是 javapub. 做 Java 的同学都会用到的三件套,Spring、SpringMV、MyBatis。但是由于使用起来配置较多,依赖冲突频发。所有,各路大佬又在这上边做了包装,像我们常用的 SpringBoot、MyBatisPlus。 基于当前要…...

Linux驱动开发实战宝典:设备模型、模块编程、I2C/SPI/USB外设精讲
摘要: 本文将带你走进 Linux 驱动开发的世界,从设备驱动模型、内核模块开发基础开始,逐步深入 I2C、SPI、USB 等常用外设的驱动编写,结合实际案例,助你掌握 Linux 驱动开发技能。 关键词: Linux 驱动,设备驱动模型,内核模块,I2C,SPI,USB 一、Linux 设备驱动模型 Li…...

安全技术和防火墙
1、安全技术 1.1入侵检测系统 特点是不阻断网络访问,主要提供报警和事后监督。不主动介入,默默的看着你(类似于监控) 1.2入侵防御系统 透明模式工作, 数据包,网络监控,服务攻击,…...

Webpack: 开发 PWA、Node、Electron 应用
概述 毋庸置疑,对前端开发者而言,当下正是一个日升月恒的美好时代!在久远的过去,Web 页面的开发技术链条非常原始而粗糙,那时候的 JavaScript 更多用来点缀 Web 页面交互而不是用来构建一个完整的应用。直到 2009年5月…...
python处理txt文件, 如果第一列和第二列的值在连续的行中重复,则只保留一行
处理txt文件, 如果第一列和第二列的值在连续的行中重复,则只保留一个实例,使用Python的内置函数来读取文件,并逐行检查和处理数据。 一个txt文件,里面的数据是893.554382324,-119.955825806,0.0299997832626,-0.133618548512,28.1155740884,112.876833236,46.7922,19.62582…...
C++17中引入了什么新的重要特性
C17是C标准的一个重要版本,它在语言核心和标准库中引入了许多新特性和改进,使得C编程更加现代化和高效。以下是C17中引入的一些重要新特性: 语言核心新特性 结构化绑定(Structured Bindings): 结构化绑定…...

Andrej Karpathy提出未来计算机2.0构想: 完全由神经网络驱动!网友炸锅了
昨天凌晨,知名人工智能专家、OpenAI的联合创始人Andrej Karpathy提出了一个革命性的未来计算机的构想:完全由神经网络驱动的计算机,不再依赖传统的软件代码。 嗯,这是什么意思?全部原生LLM硬件设备的意思吗?…...
用国内镜像安装docker 和 docker-compose (ubuntu)
替代方案,改用国内的镜像站(网易镜像) 1.清除旧版本(可选操作) for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done 2.安装docker apt-get update 首先安装依赖 apt-g…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...