当前位置: 首页 > news >正文

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet:基于视觉Mamba UNet架构的医学图像分割

论文链接:http://arxiv.org/abs/2402.02491
代码链接:https://github.com/JCruan519/VM-UNet

1、摘要

  文中利用状态空间模型SSMs,提出了一种针对医学图像分割的U形架构模型,称为Vision Mamba UNet(VM-UNet)。具体地,引入了视觉状态空间(VSS)块作为基础模块,以捕捉丰富的上下文信息,并构建了一个不对称的编码器-解码器结构。在ISIC17、ISIC18和Synapse数据集上进行了全面实验,结果显示VM-UNet在医学图像分割任务中表现出良好的性能。

2、创新点

  受VMamba[20]在图像分类任务中取得成功的影响,本文首次提出Vision Mamba UNet(VM-UNet),这是一种纯基于SSM的模型,旨在展示在医疗图像分割任务中的潜力。VM-UNet主要由编码器、解码器和跳跃连接三部分组成。编码器使用VMamba的VSS块进行特征提取,并通过拼接操作进行下采样。解码器包含VSS块和扩展操作,以恢复分割结果的大小。跳跃连接部分,为了突出最原始纯SSM模型的分割性能,采用了最简单的相加操作。

  在器官分割和皮肤病变分割任务上进行了广泛实验,以展示纯SSM模型在医疗图像分割中的潜力。VM-UNet代表了纯SSM分割模型的最基本形式,没有包含任何特殊设计的模块。

  本文的主要贡献可以总结如下:

1)提出了VM-UNet,这是首次探索纯SSM模型在医疗图像分割中的应用潜力;

2)在三个数据集上进行了全面实验,结果显示VM-UNet具有显著的竞争力;

3)为纯SSM模型在医疗图像分割任务中建立了基准,提供了有价值的见解,为开发更高效和有效的SSM分割方法铺平了道路。

目录

  • VM-UNet: Vision Mamba UNet for Medical Image Segmentation
    • 1、摘要
    • 2、创新点
    • 3、原理
      • Preliminaries
      • Vision Mamba UNet (VM-UNet)
      • VSS block
      • Loss function
    • 4、实验
      • Datasets
      • Implementation details
      • Main results
      • Ablation studies
    • 4、总结

3、原理

Preliminaries

  在现代基于状态空间模型(SSM)的模型中,如结构化状态空间序列模型(S4)和Mamba,它们都依赖于经典的连续系统,该系统通过映射一维输入函数或序列 x ( t ) ∈ R x(t) ∈ R x(t)R,通过中间隐状态 h ( t ) ∈ R N h(t) ∈ R^{N} h(t)RN到输出 y ( t ) ∈ R y(t) ∈ R y(t)R。这个过程可以表示为线性常微分方程(ODE):

h ′ ( t ) = A h ( t ) + B x ( t ) , h^{'}(t) = Ah(t) + Bx(t), h(t)=Ah(t)+Bx(t),
y ( t ) = C h ( t ) , ( 1 ) y(t) = Ch(t), (1) y(t)=Ch(t),(1)

其中 A ∈ R N × N A ∈ R^{N \times N} ARN×N表示状态矩阵, B ∈ R N × 1 B ∈ R^{N \times 1} BRN×1 C ∈ R N × 1 C ∈ R^{N \times 1} CRN×1分别表示投影参数。

  S4和Mamba将这个连续系统离散化,使其更适合深度学习环境。它们引入一个时间尺度参数 Δ \Delta Δ,并通过固定的离散化规则(如零阶保持法,ZOH)将 A A A B B B转换为离散参数 A ˉ \bar A Aˉ B ˉ \bar B Bˉ

A = e x p ( Δ A ) , A = exp(\Delta A), A=exp(ΔA),
B = ( Δ A ) ( − 1 ) ∗ ( e x p ( Δ A ) − I ) ⋅ Δ B . ( 2 ) B = (\Delta A)^{(-1)} * (exp(\Delta A) - I) \cdot \Delta B. \ (2) B=(ΔA)(1)(exp(ΔA)I)ΔB. (2)

  离散化后,SSM模型可以通过线性递归或全局卷积两种方式计算。线性递归和全局卷积分别定义为:

h ′ ( t ) = A ˉ h ( t ) + B ˉ x ( t ) , h^{'}(t) = \bar{A} h(t) + \bar{B} x(t), h(t)=Aˉh(t)+Bˉx(t),
h ′ ( t ) = C h ( t ) . ( 3 ) h^{'}(t) = C h(t). \ (3) h(t)=Ch(t). (3)

K = ( C B ˉ , C A ˉ B ˉ , . . . , C A ˉ L − 1 B ˉ ) , K = (C\bar{B}, C\bar{A} \bar{B}, ..., C \bar{A}^{L-1} \bar{B}), K=(CBˉ,CAˉBˉ,...,CAˉL1Bˉ),
y = x ∗ K ˉ , ( 4 ) y = x * \bar{K}, \ (4) y=xKˉ, (4)

其中 K ˉ ∈ R L \bar{K} ∈ R^{L} KˉRL表示结构化卷积核, L L L表示输入序列 x x x的长度。

Vision Mamba UNet (VM-UNet)

在这里插入图片描述

  VM-UNet的整体架构如图1(a)所示。VM-UNet包括一个Patch Embedding层、一个编码器、一个解码器、一个Final Projection层以及跳跃连接。与先前的方法[9]不同,采用了非对称设计,而非传统的对称结构。

  Patch Embedding层将输入图像 x ∈ R H × W × 3 x ∈ R^{H \times W \times 3} xRH×W×3分割成不重叠的 4 × 4 4 \times 4 4×4大小的patch,然后将图像维度映射到 C C C C C C默认为96。这过程产生嵌入后的图像 x ′ ∈ R H 4 × W 4 × C x^{'} ∈ R^{\frac{H}{4} \times \frac{W}{4} \times C} xR4H×4W×C。最后,使用Layer Normalization [7] 对 x ′ x^{'} x进行标准化,然后将其输入编码器进行特征提取。编码器由四个阶段组成,每个阶段末尾进行patch合并操作,以减小输入特征的高宽同时增加通道数。四个阶段使用了[2, 2, 2, 2]个VSS块,每个阶段的通道数分别为[C, 2C, 4C, 8C]

  解码器同样分为四个阶段,前三个阶段开始时使用patch expanding操作,以减少特征通道数并增加高宽。四个阶段使用了[2, 2, 2, 1]个VSS块,每个阶段的通道数为[8C, 4C, 2C, C]。解码器之后,使用Final Projection层恢复特征的大小,以匹配分割目标。具体来说,通过4倍的ppatch expanding进行上采样,恢复特征的高宽,然后通过投影层恢复通道数。

  对于跳跃连接,采用简单的相加操作,没有额外的复杂性,不会引入额外参数。

VSS block

  VSS块源自于VMamba模型[20],是VM-UNet的核心模块,如图1(b)所示。输入首先经过层归一化,然后分为两个分支。在第一个分支中,输入通过一个线性层后接一个激活函数处理。在第二个分支中,输入经过线性层、深度可分离卷积DWConv和激活函数处理,然后送入2D选择性扫描(SS2D)模块以进一步提取特征。接着,特征通过层归一化进行规范化,然后与第一个分支的输出进行逐元素相乘,以融合两条路径。最后,特征通过一个线性层混合,并与残差连接相结合,形成VSS块的输出。本文默认使用SiLU[14]作为激活函数。

在这里插入图片描述

  SS2D模块由三个部分组成:scan expanding操作、S6块和scan merging操作。如图2所示,这四个方向的扫描能够将输出图像恢复到与输入相同的大小。S6块源自Mamba[16],在S4[17]的基础上引入了选择性机制,通过调整SSM的参数来适应输入。这样,模型能够区分并保留重要的信息,同时过滤掉无关的细节。S6块的伪代码在算法1中给出。
在这里插入图片描述

Loss function

  VM-UNet的引入旨在验证纯基于状态空间模型(SSM)在医学图像分割任务中的应用潜力。因此,仅采用基础的二元交叉熵损失(BceDice损失)和Dice损失(CeDice损失),分别针对二分类和多分类任务,如公式5和6所示。

  BceDice损失函数为:
L B c e D i c e = λ 1 L B c e + λ 2 L D i c e . (5) L_{BceDice} = \lambda_1 L_{Bce} + \lambda_2 L_{Dice}. \quad \text{(5)} LBceDice=λ1LBce+λ2LDice.(5)

  CeDice损失函数为:
L C e D i c e = λ 1 L C e + λ 2 L D i c e , (6) L_{CeDice} = \lambda_1 L_{Ce} + \lambda_2 L_{Dice}, \quad \text{(6)} LCeDice=λ1LCe+λ2LDice,(6)

其中, N N N表示样本总数, C C C表示类别总数。 y i y_{i} yi y ^ i \hat{y}_i y^i分别代表真实标签和预测值。 y i , c y_{i,c} yi,c是一个指示符,如果样本 i i i属于类别 c c c则为1,否则为0。 y ^ i , c \hat{y}_{i,c} y^i,c是模型预测样本 i i i属于类别 c c c的概率。 ∣ X ∣ |X| X ∣ Y ∣ |Y| Y分别代表真值和预测结果。 l a m b d a 1 lambda_1 lambda1 l a m b d a 2 lambda_2 lambda2是损失函数的权重,通常默认设置为1。

  具体地,BCE损失计算如下:
L B c e = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] . (7) L_{Bce} = -\frac{1}{N} \sum_{i=1}^{N} [y_i \log(\hat{y}_i) + (1 - y_{i}) \log(1 - \hat{y}_i)]. \quad \text{(7)} LBce=N1i=1N[yilog(y^i)+(1yi)log(1y^i)].(7)

  而Cross-Entropy损失计算为:
L C e = − 1 N ∑ i = 1 N ∑ c = 1 C y i , c log ⁡ ( y ^ i , c ) . (7) L_{Ce} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c}). \quad \text{(7)} LCe=N1i=1Nc=1Cyi,clog(y^i,c).(7)

  公式(7)中的最后一项是Dice损失,它衡量了预测和真值的交集与两者并集的比例

4、实验

Datasets

  ISIC17和ISIC18数据集:国际皮肤图像协作组织2017年和2018年的挑战数据集(ISIC17和ISIC18)[8,1,12,2]是两个公开的皮肤病变分割数据集,分别包含2,150和2,694张带分割标签的皮肤镜像。作者遵循先前工作[28],以7:3的比例划分数据集作为训练和测试集。具体来说,ISIC17数据集中,训练集包含1,500张图像,测试集包含650张图像。ISIC18数据集中,训练集包括1,886张图像,而测试集包含808张图像。对于这两个数据集,我们详细评估了包括平均交并比(mIoU)、Dice相似系数(DSC)、准确率(Acc)、敏感性(Sen)和特异性(Spe)在内的多个指标。

  Synapse多器官分割数据集(Synapse):Synapse[19,3]是一个公开的多器官分割数据集,包含30个腹部CT病例,共有3,779张轴向腹部临床CT图像,涵盖了8种腹部器官(主动脉、胆囊、左肾、右肾、肝脏、胰腺、脾脏和胃)。按照先前研究[10,9]的设置,我们使用18个病例进行训练,12个病例进行测试。对于这个数据集,我们报告Dice相似系数(DSC)和95% Hausdorff距离(HD95)作为评估指标。

Implementation details

  在实施细节部分,作者遵循先前研究[28,9]的做法,将ISIC17和ISIC18数据集的图像调整为 256 × 256 256 \times 256 256×256尺寸,而Synapse数据集的图像调整为 224 × 224 224 \times 224 224×224。为了防止过拟合,我们采用了随机翻转和随机旋转等数据增强技术。在ISIC17和ISIC18数据集上,我们使用BceDice损失函数,而在Synapse数据集上采用CeDice损失函数。我们设置批次大小为32,并使用AdamW优化器[23],初始学习率为 1 e − 3 1e-3 1e3。CosineAnnealingLR调度器[22]被选用,最大迭代次数为50,最小学习率为 1 e − 5 1e-5 1e5。训练轮数设置为300。对于VM-UNet,使用预训练在ImageNet-1k上的VMamba-S的权重初始化编码器和解码器。所有实验都在单个NVIDIA RTX A6000 GPU上进行。

Main results

在这里插入图片描述在这里插入图片描述
  作者对VM-UNet与当前最先进的模型进行了比较,并在表1中展示了实验结果。实验评估了模型在ISIC17、ISIC18和Synapse等常用医疗图像分割数据集上的性能,包括 Dice 约束系数(Dice Score)、Intersection over Union (IoU) 和平均 Hausdorff 距离(Mean Hausdorff Distance,MHD)等关键指标。VM-UNet在这些指标上显示出与同类模型相当甚至优于的结果,证明了其在处理医学图像时的有效性和竞争力。这些对比实验不仅验证了文中所提的设计策略,也为基于状态空间模型的医疗图像分割提供了新的参考点。

Ablation studies

在这里插入图片描述
  本节针对ISIC17和ISIC18数据集对VM-UNet的初始化进行了消融实验。我们分别使用预训练的VMamba-T和VMamba-S权重初始化VM-UNet。实验结果显示(见表3),更强大的预训练权重显著提升了VM-UNet的下游性能,这表明VM-UNet在很大程度上受到预训练权重的影响。

4、总结

  文中引入了一种基于状态空间模型的纯模型VM-UNet,作为医学图像分割的基线。通过VSS块构建VM-UNet,并使用预训练的VMamba-S初始化权重。在皮肤病变和多器官分割数据集上的全面实验表明,纯基于状态空间模型的模型在医学图像分割任务中表现出强大的竞争力。

相关文章:

VM-UNet: Vision Mamba UNet for Medical Image Segmentation

VM-UNet: Vision Mamba UNet for Medical Image Segmentation VM-UNet:基于视觉Mamba UNet架构的医学图像分割 论文链接:http://arxiv.org/abs/2402.02491 代码链接:https://github.com/JCruan519/VM-UNet 1、摘要 文中利用状态空间模型SS…...

面向对象编程:在Python中的面向对象编程奥秘

面向对象编程在Python中的奥秘 在编程的世界里,面向对象编程(Object-Oriented Programming,简称OOP)是一种非常重要的编程范式。它改变了我们思考问题和设计代码的方式。Python作为一种支持面向对象的语言,为我们提供…...

考研数学|零基础100分保底复习方案+资料分享

目标100分其实很好实现,只要你有决心,不需要去看任何人的学习技巧 其实基础差,你只要专攻基础就好了,现在的很多考研课程和资料真的很不照顾基础不好的同学,好像就默认你什么都会一样,但是还是有对于基础差…...

【MATLAB源码-第29期】基于matlab的MIMO,MISO,SIMO,SISO瑞利rayleigh信道容量对比。

操作环境: MATLAB 2022a 1、算法描述 1. SISO(单输入单输出): - SISO 是指在通信系统中,只有一个天线用于传输信号,也只有一个天线用于接收信号的情况。这是最简单的通信方式。 2. SIMO(单…...

JRT高效率开发

得益于前期的基础投入,借助代码生成的加持,本来计划用一周实现质控物维护界面,实际用来四小时左右完成质控物维护主体,效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式,觉得Spring打包…...

Spring Boot 切面的一种的测试方法,java中级开发面试

void afterReturnName() { Assertions.assertEquals(studentController.getNameById(123L).getName(), "测试姓名Yz");} } 但往往切面中的逻辑并非这么简单,在实际的测试中其实我们也完成没有必要关心在切面中到底发生了什么(发生了什么应该在…...

嵌入式自学路线-高薪路线(持续更新,欢迎关注)

1 入门:51STM32 主要学习内容中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等的工作原理。学习资源推荐视频:野火,正点原子书籍:野火,正点原子学习建议如果你以后的方向是驱动开发,这部分学…...

SpringMVC的运行流程

SpringMVC的运行流程可以概括为以下几个主要步骤: 用户发送请求: 用户通过浏览器或其他客户端发送HTTP请求到服务器。 前端控制器(DispatcherServlet)接收请求: SpringMVC的前端控制器(通常是DispatcherSe…...

成绩分析 蓝桥杯 java

成绩分析 小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 输入格式 输入的第一行包含一个整数 n,表示考试人数。 接下来 n 行,每行包含一…...

计算psnr ssim niqe fid mae lpips等指标的代码

以下代码仅供参考,路径处理最好自己改一下 # Author: Wu # Created: 2023/8/15 # module containing metrics functions # using package in https://github.com/chaofengc/IQA-PyTorch import torch from PIL import Image import numpy as np from piqa import P…...

OpenHarmony开发技术:【国际化】实例

国际化 如今越来的越多的应用都走向了海外,应用走向海外需要支持不同国家的语言,这就意味着应用资源文件需要支持不同语言环境下的显示。本节就介绍一下设备语言环境变更后,如何让应用支持多语言。 应用支持多语言 ArkUI开发框架对多语言的…...

c++子类和父类成员函数重名

子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了&#xff0c…...

《C++程序设计》阅读笔记【7-堆和拷贝构造函数】

🌈个人主页:godspeed_lucip 🔥 系列专栏:《C程序设计》阅读笔记 本文对应的PDF源文件请关注微信公众号程序员刘同学,回复C程序设计获取下载链接。 1 堆与拷贝构造函数1.1 概述1.2 分配堆对象1.3 拷贝构造函数1.3.1 默…...

洛谷 P1048 [NOIP2005 普及组] 采药

辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同…...

VMware vSphere虚拟化基础管理平台

VMware简介 VMware介绍 官网:https://www.vmware.com/cn.html VMware公司成立于1998年,2003年存储厂商EMC以6.35亿美元收购了VMware;2015年10月,戴尔宣布以670亿美元收购EMC。VMware公司在2018年全年收入79.2亿美元。 VMware主…...

leetcode刷题-代码训练营-第7章-回溯算法1

回溯法模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果} }理解 从…...

三种常见webshell工具的流量特征分析

又来跟师傅们分享小技巧了,这次简单介绍一下三种常见的webshell流量分析,希望能对参加HW蓝队的师傅们有所帮助。 什么是webshell webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、…...

pkg打包nodejs程序用动态require路由出现问题

动态路由问题 pkg打包的时候会自动生成一个虚拟路径/snapshot/…会导致你的路径出现一些问题 而项目中依据route文件夹下的文件动态use相应的router,这就需要动态require,但是这个require的路径会被虚拟路径代替导致取不到,所以可以使用写死…...

设计模式(018)行为型之策略模式

策略模式是一种行为设计模式,它定义了一系列算法,将每个算法封装成一个对象,并使它们可以互换。策略模式使得算法的变化可以独立于使用算法的客户端。在策略模式中,有三个核心角色:策略接口(Strategy&#…...

c++关键字: =delete和=default

delete 概述 delete关键字是c11新增的关键字,主要用于的场景是:当我们不希望类中的函数被类对象在外部调用的时候,我们就可以使用这个关键字。 其实,之前我们实现这种功能是将这些函数放在private修饰符下,但是这种方…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...