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…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
