UltraLight VM-UNet:平行视觉 Mamba 显着减少皮肤病变分割参数

UltraLight VM-UNet:平行视觉 Mamba 显着减少皮肤病变分割参数

  • 摘要
  • Introduction
  • Related Work
  • Method
    • Architecture Overview
    • Mamba Parameter Impact Analysis
    • Skip-connection Path

UltraLight VM-UNet: Parallel Vision MambaSignificantly Reduces Parameters for Skin Lesion Segmentation

摘要

传统上,为了提高模型分割性能,大多数方法倾向于添加更复杂的模块。但这并不适用于医疗领域,尤其是在移动医疗设备上,由于计算资源限制,计算负担重的模型不适合真实的临床环境。最近,以Mamba为代表的状态空间模型(SSMs)成为传统卷积神经网络(CNNs)和Transformers的有力竞争者。在本文中,作者深入探讨了Mamba中参数影响的关键要素,并基于此提出了超轻量级视觉Mamba UNet(UltraLight VM-UNet)。

具体来说,作者提出了一种在并行视觉Mamba中处理特征的方法,称为PVM层,在保持处理通道总数不变的同时,实现了最低的计算负载和卓越的性能。作者在三个皮肤病变公共数据集上进行了与几个最先进的轻量级模型的比较和消融实验,并展示了仅拥有0.049M参数和0.060 GFLOPs的UltraLight VM-UNet具有同样强大的性能竞争力。此外,本研究深入探讨了Mamba中参数影响的关键要素,这将为Mamba可能在未来成为轻量化领域的新主流模块奠定理论基础。

代码:https://github.com/wurenkai/UltraLight-VM-UNet

Introduction

随着计算机技术和硬件计算能力的不断发展,计算机辅助诊断已经在医疗领域得到广泛应用,而医学图像分割是其重要的组成部分。医学图像分割通常是通过使用以卷积和 Transformer 为代表的深度学习网络来实现的。卷积在局部特征提取方面具有出色的能力,但在建立远程信息的关联方面存在不足。在之前的工作中,研究行人提出利用大卷积核来缓解这一问题。至于基于 Transformer 的网络架构,近年来,研究行人已经深入探讨了其方法。尽管自注意力机制可以通过连续的图像块序列解决远程信息提取的问题,但它也引入了更多的计算负载。这是因为自注意力机制的二次复杂度与图像大小密切相关。

此外,在提高计算机辅助诊断的准确性方面,算法模型的参数数量通常会被增加以增强模型的预测能力。然而,对于临床和实际医疗环境来说,现实的计算能力和内存限制往往需要被考虑。在mHealth任务中,低参数和最小的计算内存占用是至关重要的考虑因素。因此,对于未来移动医疗设备来说,迫切需要一种具有低计算负担和良好性能的算法模型。

在这里插入图片描述

图1:对ISIC2017数据集的比较结果可视化。X轴对应于参数和GFLOPs,越少越好。Y轴对应于分割性能(DSC),
越高越好。

近期,状态空间模型(SSMs)在输入尺寸和内存占用方面显示出线性复杂性,这使得它们成为轻量级模型基础的关键。此外,SSMs擅长捕捉远程依赖关系,这可以关键性地解决在提取远距离信息时卷积的问题。在Gu等人[7]中,将时变参数引入到SSM中以获得Mamba,并且证明了Mamba能够使用比Transformers更低的参数处理文本信息。在视觉方面,Vision Mamba的引入再次加深了人们对Mamba的理解,它在不需要注意力机制的情况下,在推理1248×1248大小的图像时节省了86.8的内存。以上提到的研究行人所做的重要工作,使作者更有信心相信Mamba将在未来作为轻量级模型的基本构建块占据重要位置。

在本文中,作者基于Vision Mamba构建了一个轻量级模型。作者深入探讨了Mamba的关键内存占用及其性能权衡,并提出了一个超轻量级Vision Mamba UNet(UltraLight VM-UNet)。据作者所知,所提出的UltraLight VM-UNet是现有最轻量的Vision Mamba模型(具有0.049M的参数和0.060的GFLOPs),并且在三个皮肤病变分割任务中表现出极具竞争力的性能。具体来说,作者深入研究了对Mamba计算负载影响的关键因素,并得出结论:通道数是Mamba计算中内存占用激增的关键因素。

基于这一发现,作者提出了一种名为PVM层的并行Vision Mamba方法来处理深层特征,同时保持了总体处理通道数恒定。所提出的PVM层以惊人的低参数数量实现了卓越的性能。此外,作者仅使用包含Mamba的PVM层来实现所提出的UltraLight VM-UNet的深层特征提取,如图2所示。在方法部分,作者将介绍所提出的UltraLight VM-UNet的细节,以及Mamba中参数影响的关键因素和性能平衡方法。
在这里插入图片描述

作者的贡献和发现总结如下:

  1. 提出了一种超轻量级视觉曼巴UNet(UltraLight VM-UNet),用于皮肤病变分割。该模型参数仅为0.049M,GFLOPs为0.060,是目前已知最轻的视觉曼巴模型之一。

  2. 提出了PVM层,一种并行视觉Mamba方法,用于处理深度特征。该方法在保持处理通道总数不变的情况下,实现了最低的计算负载,表现出优异的性能。

  3. 深入分析了影响Mamba参数的关键因素,并为Mamba在未来成为轻量级建模的主流模块提供了理论依据。

  4. 所提出的UltraLight VM-UNet参数比传统的纯Vision Mamba UNet模型低99.82%,比当前最轻的Vision Mamba UNet模型(LightM-UNet)低87.84%。此外,UltraLight VM-UNet在所有三个公开可用的皮肤病变分割数据集上都保持了强大的性能竞争力。

这些发现为轻量级视觉曼巴模型的发展提供了重要的理论基础,并在皮肤病变分割领域展现出了实用性和竞争力。

Related Work

随着计算机计算能力的显著提升,计算机视觉已成为当今计算机技术中一个重要的领域。作为计算机视觉的一个分支,图像分割已经被相关研究者研究了数十年。传统的图像分割技术通过简单的阈值处理或数学方法来区分不同物体,这在不同像素区域之间造成了明显的差异。然而,传统方法难以应用于精细区域的分割。随着深度学习的不断发展,全卷积模型(FCN)首次在图像分割方法上展现了卓越的性能。FCN的出现也导致了深度学习图像分割方法的快速发展。在FCN出现后不久,另一个全卷积模型(U-Net)的出现再次引发了关注。U-Net中的跳跃连接操作能够很好地融合高层特征和低层特征,这对于图像分割尤其重要,特别是在需要细粒度分割的医疗图像分割中。

医学图像分割作为图像分割的重要分支之一,也是许多研究行人投入大量努力的研究方向。其中,多尺度变化问题和特征细化学习是医学图像分割中的关键问题。而皮肤病变分割具有丰富多变的特征信息以及由于其恶性黑色素瘤导致的高死亡率,这促使许多研究行人围绕皮肤病变分割进行一系列研究。

以皮肤病变为代表的医学图像分割算法在U-Net出现后得到了迅速发展。在Aghdam等人[1]的研究中,针对基于Swin U-Net[2]的皮肤病变分割,提出了级联操作中注意力机制的抑制操作。MHorUNet模型提出了一种用于皮肤病变分割的高阶空间交互UNet模型。在Wu等人[30]的研究中,提出了一种针对高阶交互的自适应选择UNet模型用于皮肤病变分割。

此外,基于U-Net改进的用于皮肤病变分割的算法非常多。然而,研究者们通常会在模型中添加更丰富的模块以提高识别的准确性,但这也会显著增加模型的参数数量和计算复杂性。在Vision Mamba出现后,LightM-UNet基于Mamba被提出以减少模型中的参数数量。LightM-UNet通过使用残差Vision Mamba进一步提取深层语义和远程关系,并在参数数量较少的情况下实现更优的性能。另外,U-Mamba首次将Vision Mamba引入到U型框架中,但其大量的参数(173.53M)限制了在真实临床环境中的应用。

在本文中,为了解决当前大型模型参数的问题,并揭示影响Mamba参数的关键因素,作者提出了一个基于Mamba的仅具有0.049M参数的超轻量级视觉Mamba UNet(UltraLight VM-UNet)。在三个公开的皮肤病变数据集上,UltraLight VM-UNet被证实仍然保持强大的竞争力。在下一节中,将详细描述作者的方法。

Method

Architecture Overview

提出的超轻量级视觉曼巴UNet(UltraLight VM-UNet)如图2所示。UltraLight VM-UNet总共有6层结构,由U形结构(编码器、解码器和跳跃连接路径)组成。6层结构中的通道数设置为。前3层浅层特征的提取由卷积模块(Conv Block)组成,其中每一层包括一个具有3x3卷积核的标准卷积和一个最大池化操作。从第4层到第6层的深层特征是作者的核心部分,每一层由作者提出的并行视觉曼巴层(PVM Layer)组成。解码器部分保持与编码器相同的设置。跳跃连接路径利用通道注意力桥(CAB)模块和空间注意力桥(SAB)模块进行多 Level 和多尺度的信息融合。

Mamba Parameter Impact Analysis

在视觉任务中,Mamba通常被嵌入到视觉状态空间(Visual State Space, VSS)块中以便使用,如图4(b)所示。VSS块主要由两个主要分支组成,第一个分支主要由线性层和SiLU激活函数[6]构成。第二个分支主要由线性层、深度卷积、SiLU激活函数、2D选择性扫描模块(SS2D)和层归一化(LayerNorm)组成。最后,两个分支通过逐元素的乘法进行合并以输出结果。
在这里插入图片描述
在VSS块中对参数影响最大的模块是SS2D。SS2D的组成部分如图3所示。它们包括扫描扩展操作、S6块特征提取以及扫描合并操作。首先通过扫描扩展操作,序列在四个方向上从左上到右下、从右下到左上、从右上到左下以及从左下到右上进行扩展。然后输入到S6块[7]进行特征提取。最后,通过扫描合并操作将其恢复到原始初始图像的大小。
在这里插入图片描述
其中,在SS2D中,输入通道的数量、S4D层状态维度的大小、内部卷积核的大小、投影扩张倍数以及投影矩阵的秩都影响着参数的数量。在这之中,输入通道数量的影响是巨大的,其影响主要来自四个方面:

  1. SS2D内部扩展投影通道 d_inner 由投影扩展乘数和输入通道数量的乘积确定,具体表示为以下方程:
d_inner = expand * d_model

其中,d_inner 是内部扩展投影通道,expand 是投影扩展倍数(默认固定为2),而 d_model 是输入通道的数量。作者可以看到,随着模型中每层通道数的急剧增加,d_inner 将指数级上升。

  1. 其次,在SS2D中,输入投影层和输出投影层的参数将直接与输入通道的数量相关。输入投影层和输出投影层的工作方式如下:
in_proj : nn.Linear(d_model, d_inner * 2)
out_proj : nn.Linear(d_inner, d_model)

其中,输入投影 (in_proj) 层的参数为 (d_model * d_inner * 2) + (d_inner * 2),输出投影 (out_proj) 层的参数为 (d_inner * d_model) + d_model。作者可以看到,输入通道数 d_model 是控制参数的关键要素,而内部扩展投影通道 d_inner 也是受 d_model 控制的。

  1. 此外,SS2D网络中S6块内的四个线性投影层也是参数效果的关键。每个线性投影层具体指定如下:
a_proj = nn.Linear(d_inner, (dt_rank + d_state * 2))

其中 dt_rank 是投影矩阵的秩 (dt_rank = d_model/16),d_state 是S4D层状态维
好的,下面是Markdown格式的文本:
度的大小(固定为16),每个线性投影层的参数为

(d_inner * (dt_rank + d_state * 2))+(dt_rank + d_state * 2)。

然而,总共有4个线性投影层,所以总参数量为

4 * (d_inner * (dt_rank + d_state * 2)) +(dt_rank + d_state * 2)。

因此,从上述内容作者可以知道,所有参数仍然主要由输入通道数d_model控制。
同样,在SS2D模块中,控制S4D层不同状态注意力权重的参数矩阵的A_logs是一个重要的影响因素。A_logs是一个形状为(K* d_inner, d_state)的参数矩阵,而K是一个通常固定为4的超参数。因此,参数A_logs可以推导为

d_inner * d_state * 4。

总之,假设原始的输入通道数为1024,保持其他参数不变,将通道数减少到原来的四分之一(输入通道数变为256),根据上述参数公式计算,原始的总参数可以从7669760减少到525312。参数的大幅减少表明通道数减少了93.1,这进一步确认了输入通道数对SS2D参数具有非常关键的影响。这也进一步证实了输入通道数对SS2D参数具有极其重要的影响。

基于对影响Mamba参数的关键要素的深入研究发现,作者提出了一种在并行视觉Mamba中处理特征的方法,名为PVM层。在保持处理通道总数不变的情况下,实现了最低的计算负载和卓越的性能。具体细节将在下一节中详细说明。

Skip-connection Path

Short-Cut 路径使用了由Ruan等人提出的空间注意力桥(SAB)模块和通道注意力桥(CAB)模块,如图2(b)所示。SAB和CAB的结合使用使得能够融合UltraLight VM-UNet不同尺度上的多阶段特征。

SAB模块包括最大池化、平均池化和共享权重的扩展卷积。CAB模块包括全局平均池化、拼接操作、全连接层和sigmoid激活函数。在之前的工作中已经显示,SAB和CAB均能有效提高模型的收敛能力并增强对病变的敏感性。

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

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

相关文章

【考研数学】强化跟张宇还是武忠祥?看完这篇就明白了

SO,不管你是选择武忠祥老师还是张宇老师,学长学姐都可以拍着胸脯告诉你,这两位老师都很优秀,跟哪位老师都能学好,所以你也不用担心因为错过一位老师的课而错失整个天下啦~ 根据不同老师的特点,结合自身情况…

RN使用蓝牙扫描

我项目需要用到蓝牙模块,蓝牙扫描到设备并且获取到电量显示到页面上,因此我做了如下demo,使用了react-native-ble-plx这个插件 点击进入官方文档官方文档 1.安卓环境配置(ios暂定,还没做ios,不过下面的方法是兼容的,自行配置ios权限) android/app/src/main/AndroidManifest.xml…

ChatGPT使用小结

ChatGPT是openAI旗下的一款语言模型,说它是语言模型更不如说他是一个全能小助手,自从去年它爆火之后,国内也出现了许多同款语言模型,这些智能语言模型的出现,对于像我这样的低端程序员的效率提升是巨大的。 很多人可能…

(二十七)Flask之数据库连接池DBUtils库

目录: 每篇前言:DBUtils库模式一(底层使用threading.local实现):模式二: Flask中使用方式一:直接将DBUtils初始化放到settings.py文件中方式二:从utils文件夹中导入 脚本使用DBUtils…

Qt plugin 开发UI界面插件

目录 1.创建接口 2.创建插件 3.创建插件界面 4.插件实现 5.创建应用工程 6.应用插件 1.创建接口 打开QtCreater,点击左上角“文件”->新建文件或项目,在弹窗中选择C/CHeader File。 输入文件名,选好路径(可自行设置名称…

jsonpath在线解析器网址

jsonpath在线解析器网址:https://jsonpath.com/

手动实现简易版RPC(上)

手动实现简易版RPC(上) 前言 什么是RPC?它的原理是什么?它有什么特点?如果让你实现一个RPC框架,你会如何是实现?带着这些问题,开始今天的学习。 本文主要介绍RPC概述以及一些关于RPC的知识,为…

02-结构化程式与自定义函数

视频教程:b站视频【MATLAB教程_台大郭彦甫(14课)原视频补档】https://www.bilibili.com/video/BV1GJ41137UH/?share_sourcecopy_web&vd_sourc*ed6b9f96888e9c85118cb40c164875dfc 官网教程: MATLAB 快速入门 - MathWorks 中…

【动手学深度学习】15_汉诺塔问题

注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正 汉诺塔(To…

基于springboot实现高校学科竞赛平台系统项目【项目源码+论文说明】

基于springboot实现高校学科竞赛平台系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了高校学科竞赛平台的开发全过程。通过分析高校学科竞赛平台管理的不足,创建了一个计算机管理高校学科竞…

day02 51单片机

51单片机学习 1闪烁LED 1.1 需求描述 这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。 1.2 硬件设计 1.1 软件设计 1)LED闪烁的代码 想让LED闪烁,就需要P00的值不断在0和1之间循环变化。实现这一功能的代码也很简单: #include <STC89C5xRC.H> //包含STC89…

超详细的 Python 文件操作知识!

python进行文件操作&#xff0c;在日常编程中是很常用的。为了方便大家&#xff0c;这里对各种文件操作的知识进行汇总。一文在手&#xff0c;无须它求&#xff01;来一起学习吧。 一、文件的打开和关闭 open()函数 f1 open(rd:\测试文件.txt, moder, encodingutf-8) conte…

《剑指 Offer》专项突破版 - 面试题 105 和 106 : 最大的岛屿和二分图(C++ 实现)

目录 面试题 105 : 最大的岛屿 面试题 106 : 二分图 面试题 105 : 最大的岛屿 题目&#xff1a; 海洋岛屿地图可以用由 0、1 组成的二维数组表示&#xff0c;水平或竖直方向相连的一组 1 表示一个岛屿&#xff0c;请计算最大的岛屿的面积&#xff08;即岛屿中 1 的数目&…

【MATLAB】基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据(附代码)

基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据 WiFi指纹匹配是室内定位最为基础和常见的研究&#xff0c;但是WiFi指纹的采集可以称得上是labor-intensive和time-consuming。现在&#xff0c;给大家分享一下我们课题组之前在做WiFi指纹定位时的基于射线跟踪技术仿真WiFi…

chrome 浏览器 有自带的自动字幕功能,支持英文,控制您的音乐、视频等媒体内容

chrome 浏览器 有自带的自动字幕功能&#xff0c;支持英文&#xff0c;控制您的音乐、视频等媒体内容

【机器学习算法】决策树和随机森林在计算机视觉中的应用

前言 决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型&#xff0c;可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类&#xff0c;从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法&…

[dvwa] CSRF

CSRF 0x01 low 跨站&#xff0c;输入密码和确认密码直接写在url中&#xff0c;将连接分享给目标&#xff0c;点击后修改密码 社工方式让目标点击短链接 伪造404页&#xff0c;在图片中写路径为payload&#xff0c;目标载入网页自动请求构造链接&#xff0c;目标被攻击 http…

【STL】栈(stack)

笔者在做下面这道题的时候想到用栈&#xff0c;但写的很麻烦 代码&#xff1a; #include<bits/stdc.h> using namespace std; #define MAXC 255 typedef int SElemType; typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; bool…

MathJax的基本使用

一、引言 MathJax引擎是一个开源的JavaScript库&#xff0c;它允许Web开发者在网页中嵌入高质量的数学公式。通过利用Web的最新技术&#xff0c;MathJax引擎可以解析LaTeX、MathML和AsciiMath等数学标记语言&#xff0c;并将其渲染为可视化的数学公式&#xff0c;这些公式可以…

NPU float(“inf“) mask_fill 出现NAN

使用NPU时&#xff0c;采用mask_fill函数&#xff0c;会出错&#xff1a; tensors.masked_fill(mask.unsqueeze(-1), float(inf)) 无法直接使用表达式,会报错 NAN&#xff1a; 取一个较大的值替换即可&#xff1b; tensors.masked_fill(mask.unsqueeze(-1), float(1e10))