ViM-UNet:用于生物医学细分的 Vision Mamba

news2024/11/18 9:02:15

ViM-UNet:用于生物医学细分的 Vision Mamba

  • 摘要
  • Introduction
  • Method and Experiments
  • 结果与讨论

ViM-UNet: Vision Mamba for Biomedical Segmentation

摘要

卷积神经网络(CNNs),尤其是UNet,是生物医学分割的默认架构。已经提出了基于Transformer的方法,如UNETR,以取代它们,得益于全局视野,但受到更大的运行时间和更高的参数数量的影响。

最近的Vision Mamba架构为Transformer提供了一个有吸引力的替代方案,同样提供了全局视野,但效率更高。

在这里,作者介绍了基于它的ViM-UNet,一种新颖的分割架构,并将其与UNet和UNETR在两个具有挑战性的显微实例分割任务上进行比较。作者发现,它在不同任务上表现得与UNet相似或更好,并且在效率更高的情况下优于UNETR。
代码地址:
https://github.com/constantinpape/torch-em/blob/main/vimunet.md

Introduction

分割是生物医学图像分析中的一个重要任务,应用范围从放射学到显微镜学。大多数现代分割方法都基于卷积神经网络(CNN),其中UNet(Ronneberger等人,2015年)最受欢迎。在文本和视觉领域(ViT,(Dosovitskiy等人,2021年))的成功之后, Transformer 架构也被提出来用于生物医学分割;尤其是UNETR(Hatamizadeh等人,2021年)和SwinUNETR(Hatamizadeh等人,2022年)。它们具有全局视野,对于需要大上下文的任务来说有望获得更好的质量。然而,它们的运行时间和参数数量也更大。最近,Mamba架构(Gu和Dao,2023年)被提出,该架构扩展了状态空间模型(SSM)(Gu等人,2022年),旨在克服这些计算效率低的问题,同时保持全局视野。它已经被Vision Mamba(ViM)(Zhu等人,2024年)适应用于计算机视觉。

在这里,作者介绍了基于 ViM的 ViM-UNet,用于生物医学分割,并将其与 UNet 和 UNETR进行了比较,用于显微镜实例分割,这是生物学的一个重要分析任务。这项任务的大多数方法,例如CellPose(Stringer等人,2021年),StarDist(Schmidt等人,2018年),都是基于UNet架构,而最近的方法也采用了 Transformer ,例如(Archit等人,2023年),并且当前的基准测试(Ma等人,2024年)显示了 Transformer 有利的成果。作者使用了两个具有不同特点的数据集,见图1,发现ViM-UNet的性能与UNet相当或更好(取决于任务),而UNETR表现不佳。作者对结果进行了外部方法的验证,nnUNet(Isensee等人,2021年),这是一个经过良好测试的UNet框架,以及U-Mamba(Ma等人,2024年),它也基于Mamba,但缺少ViM的视觉特定优化。作者的结果显示了ViM在生物医学图像分析中的潜力。作者认为它特别有希望用于依赖于大上下文的任务,例如3D分割或细胞追踪。

Method and Experiments

作者比较了三种不同的架构:

UNet、UNETR和作者贡献的ViM-UNet,这些架构都在torch-em(Pape)中实现。UNet有4个层级,初始特征为64,每提升一个层级特征数量翻倍。对于UNETR,作者使用了Segment Anything(Kirillov等人,2023年)的ViT和与UNet相同的解码器,每个层级由两个卷积层和一个转置卷积层组成;输入来自前一个解码器层和ViT的输出。

作者选择了这种简单的实现方式,而不是像UNet和原始UNETR中的跳跃连接,后者将编码器和解码器中的相应层级连接起来。

作者发现这种设计没有负面影响。对于ViM-UNet,作者使用带有双向SSM层的ViM编码器。与ViT类似,这个模型在图像块上操作;作者使用的图像块大小为16。解码器设计与UNETR相同。对于UNETR和ViM-UNet,作者比较了不同大小的编码器;ViT有Base、Large、Huge三种尺寸,而ViM有Tiny、Small两种尺寸。
在这里插入图片描述

图1:使用ViM-UNetSmall进行分割的示例图像。

作者对两个数据集进行了比较:相位对比显微镜下的细胞分割(LIVECell (Edlund et al., 2021))以及体积电子显微镜下的神经纤维分割(CREMI (Funke et al., 2016))。LIVECell 包含了形态各异的微小细胞,而CREMI 包含了大小不一的神经纤维,详见图1。作者将CREMI的分割限制为2D。对于LIVECell,作者使用了给定的训练、验证和测试划分;对于CREMI,作者使用每个 Voxel 的前75个切片进行训练,接下来的25个进行验证,最后的25个进行测试。在LIVECell实例分割中,作者预测(i)前景和边界概率,这之后通过水波算法进行后处理,以及(ii)前景概率以及细胞中心和边界的距离,同样也用水波算法进行后处理。作者选择(i)与其他实现(见下文)进行比较,其中作者无法实现距离预测,而(ii)因为这种方法更适合这里。对于CREMI作者使用(i)。边界预测是这个任务的常规步骤,通常接下来会进行图聚集(Beier et al., 2017),这在2D中是不需要的。网络使用Adam进行训练,共10万次迭代,初始学习率为,并在平台期进行减少。作者与带有边界分割的nn-UNet (Isensee et al., 2021) 和 U-Mamba (Ma et al., 2024) 进行比较。这两种方法都通过超参数搜索进行配置,作者使用默认设置。作者使用平均分割准确度(Everingham et al., 2010)进行评估。

结果与讨论

图2展示了结果。对于LIVECell数据集,采用距离分割的UNet表现最佳,紧随其后的是ViM-UNet。UNETR的表现显著较差。对于边界分割,UNet明显表现最好,其次是ViM-UNet和外部方法。UNETR再次表现不佳。对于CREMI数据集,ViM-UNet表现最佳,其次是外部方法和UNet,UNETR的结果较弱。作者假设全局视野对于小结构(如LIVECell)并没有带来任何优势,但ViM-UNet可以利用它来处理大结构(如CREMI)。UNETR表现不佳,这很可能是由于参数数量较多(见表1)且缺乏预训练;请注意,通过预训练可以实现更好的性能(Horst等人,2023年)。与外部方法的比较验证了作者的实现并没有表现不佳,但由于训练和推理的差异,无法进行完全客观的比较。作者还研究了推理时间和训练所需的内存,见表1。UNet是最有效的架构,其次是ViM-UNet和UNETR。
在这里插入图片描述
表1:作者模型的参数数量、训练所需的VRAM以及每张图像的推理时间(以秒为单位)。

图2:作者的方法和外部方法的对比结果;圆圈突出了三种最佳方法。

总的来说,ViM-UNet在生物医学图像分析方面很有前景。作者认为,它可能取代基于 Transformer 的方法,在需要大上下文的领域中应用,因为它同样具有全局视野,但效率更高。其较低的参数数量使得可以在较小的数据集上进行应用,且无需大量预训练。作者计划将其扩展到3D分割和跟踪,在这些领域大上下文通常至关重要。

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

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

相关文章

springboot+java照相馆预约管理系统ssm

框架:ssm/springboot都有 jdk版本:1.8 及以上 ide工具:IDEA 或者eclipse 数据库: mysql 编程语言: java 前端:layuibootstrapjsp 详细技术:HTMLCSSJSjspspringmvcmybatisMYSQLMAVENtomcat 开发工具 IntelliJ IDEA: 一…

利用二维码定位技术实现桌面机器人简易定位方案(下篇)

目录 1、前言2、定位标签定义3、识别算法流程4、python编程4.1 查找三个回字定位点python4.2 根据三个定位点坐标位置关系,进行识别python4.3 根据实际坐标对当前图像进行矫正python4.4 计算物体的坐标值python 总结本篇对应python源码 1、前言 机械手臂尤其是工业…

vue全屏后下拉框失效

如图,vue页面有个全屏功能 问题:全屏后下拉菜单消失 解决:加个这个 :teleported"false"如果不行试试这个 :popper-append-to-body"false"ok我话说完

【1425】java 外籍人员管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 外籍人员管理系统是一套完善的java web信息管理系统 采用serlvetdaobean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

Mac M3 安装Ollama和llama3,本地部署LobeChat和刘皇叔聊三国!

OllamaLobeChat,本地部署聊天助手 Ollama安装下载OllamaOllama常用指令和链接运行OllamaAPI 交互Ollama基于Llama 3角色扮演 LobeChat安装首先安装docker安装LobeChat的docker 镜像和运行 Ollama安装 下载Ollama 网址:https://ollama.com/ 支持macOS、…

每日一题(L2-011):玩转二叉树--建树+层序遍历

与L2-006近乎相同&#xff0c;先建树&#xff0c;然后遍历 #include<bits/stdc.h> using namespace std; int in[35]; int pre[35]; typedef struct Tree{int num;Tree* left;Tree* right; }T;T * build(int in1,int in2,int pre1,int pre2){T * tnew T;t->numpre[pr…

代码优化实践之税率计算问题

开篇 今天的问题来自于《编程珠玑》第三章【数据决定程序结构】&#xff0c;这里提出了几条代码优化相关的原则&#xff0c;受益不浅。下面是提到的几条原则&#xff1a; 使用数组重新编写重复代码。冗长的相似代码往往可以使用最简单的数据结构——数组来更好的表述&#xff1…

JS-29-Promise对象

一、JavaScript的异步操作 在JavaScript的世界中&#xff0c;所有代码都是单线程执行的。 由于这个“缺陷”&#xff0c;导致JavaScript的所有网络操作&#xff0c;浏览器事件&#xff0c;都必须是异步执行。异步执行可以用回调函数实现&#xff1a; function callback() {c…

三种空间数据的聚合算法

原始数据分布 给老外做的Demo&#xff0c;所以是英文界面。 原始数据分布情况如下&#xff1a; geojson文本内容&#xff1a; 三种方法基本原理 三种聚合算法来做一个例子&#xff08;500条记录&#xff09;。 方法1&#xff1a;按Ol默认方法进行聚类&#xff0c;使用Open…

Python+GDAL 栅格坐标系转换(自动计算输出像元大小)

GDAL对栅格进行坐标系转换不难&#xff0c;直接用gdal.Warp()就可以了 gdal.Warp("output", "input", dstSRSEPSG:***, xRes**, yRes**, targetAlignedPixelsTrue)麻烦的是&#xff0c;需要的参数xRes和yRes&#xff0c;gdal.Warp()不能自动计算。坐标系转…

手机号码空号过滤API:有效验证和过滤无效电话号码

随着移动通信技术的发展&#xff0c;手机号码成为人们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着时间的推移&#xff0c;一些手机号码可能会变成空号&#xff0c;这给企业在进行电话营销和数据分析时带来了一定的困扰。为了解决这个问题&#xff0c;挖数据平台提…

java+idea+mysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码

javaideamysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景中&#xff0c…

C++ 使用共享内存的进程通信方式模拟生产者消费者模型

编码环境如下 系统环境&#xff1a;linux 信号量&#xff1a;使用Linux操作系统的SystemV信号量 生产者代码如下 #include <iostream> #include <sys/sem.h> #include <sys/shm.h> #include <string.h>#define SEM_KEY 0x5678 #define SHM_KEY 0xAB…

九、Yocto创建SDK,给Makefile/CMake使用

文章目录 Yocto创建SDK、Toolchain&#xff0c;给Makefile/CMake使用一、介绍二、创建Yocto sdk三、使用sdk 配合makefile编译应用程序四、使用sdk 配合cmake编译应用程序 Yocto创建SDK、Toolchain&#xff0c;给Makefile/CMake使用 本篇文章为基于raspberrypi 4B单板的yocto实…

deepinV23安装cuDnn

文章目录 下载压缩包安装解压复制文件查看cudnn版本 注意&#xff1a; 要先安装CUDA 下载压缩包 官网&#xff1a;https://developer.nvidia.com/cudnn-downloads 若要下载非最新版&#xff0c;请点击网页底部的Archive of Previous Releases 方法1&#xff1a;使用wget命令…

C语言之文件操作【万字详解】

目录 一.什么是文件&#xff1f; 二.为什么要使用文件&#xff1f; 三.文件的分类 3.1.程序文件 3.2.数据文件 四.二进制文件和文本文件 五.文件的打开和关闭 &#xff08;重点&#xff09; 5.1流和标准流 5.1.1何为流&#xff1f; 5.1.2.标准流 5.2文件指针 5.3文件的打开和关…

基于粒子群算法-考虑需求响应的风-光-柴-储容量优化配置

部分代码&#xff1a; clc; clear; close all; num_wt3.7; %风机数量 num_pv214.57; %光伏板数量 num_g1; %柴油发电机数量 num_sb52.47; %蓄电池数量 %% 数据区 % DATExlsread(date.xlsx);%原始数据 load DATE; LoadDATE(3,:);%全年负荷数据 Speed_WTDATE(1,:);%全年风…

【文章复现】基于主从博弈的社区综合能源系统分布式协同 优化运行策略

随着能源市场由传统的垂直一体式结构向交互竞争型 结构转变&#xff0c;社区综合能源系统的分布式特征愈发明显&#xff0c;传统 的集中优化方法难以揭示多主体间的交互行为。该文提出一 种基于主从博弈的社区综合能源系统分布式协同优化运行 策略&#xff0c;将综合能源销售商…

计算机网络(三)数据链路层

数据链路层 基本概念 数据链路层功能&#xff1a; 在物理层提供服务的基础上向网络层提供服务&#xff0c;主要作用是加强物理层传输原始比特流的功能&#xff0c;将物理层提供的可能出错的物理连接改在为逻辑上无差错的数据链路&#xff0c;使之对网络层表现为一条无差错的…

【结构型模式】适配器模式

一、适配器模式概述 适配器模式的定义-意图&#xff1a;将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。(对象结构模式->对象适配器/类结构模式->类适配器) 适配器模式包含三个角色&#xff1a;目标(Target)角色、适配者(Adapt…