【传知代码】医疗AI:轻量级图像分割新突破(论文复现)

在医学图像领域,精准的图像分割技术一直是提高诊断效率和准确性的关键,然而传统的图像分割方法常常受到计算资源和处理速度的限制,尤其在资源紧张的医疗环境中更是如此。随着人工智能技术的飞速发展,我们迎来了一个激动人心的新时代——轻量级医疗AI图像分割的突破正悄然改变着医疗行业的面貌。

本文所涉及所有资源均在传知代码平台可获取

目录

概述

核心逻辑

复现过程

写在最后


概述

本文将解读并且复现一篇来自2022年医学图像顶会MICCAI的文章:UNeXt: MLP-based Rapid Medical Image Segmentation Network。这篇文章主要解决了Unet网络及其扩展网络近年来虽然取得了极大的进展,但是在网络参数、计算复杂度和速度上非常慢,不能够适应实时的医学图像分割的问题。文章主要从以下方面解决了上述问题:

1)提出UNeXt网络

UNeXt是一种基于卷积多层感知机(MLP)的图像分割网络

设计上结合了早期卷积阶段和潜在层中的MLP阶段,以实现高效分割

2)核心创新点

Tokenized MLP块:有效地对卷积特征进行标记(Tokenization)和投影,使用MLP建模,减少了参数量和计算复杂度

通道移位:在输入MLP时移动输入通道,以更专注于学习局部依赖,提升性能

3)网络结构特点

编码器与解码器之间的不同层级包含跳跃连接(Skip Connections),有助于信息流动和分割精度

尽管UNet及其多种扩展(如UNet++、UNet3+、3D UNet、V-Net、Y-Net和KiUNet)以及基于Transformer的网络(如TransUNet、MedT、TransBTS和UNETR)在医学图像分割方面取得了显著进展,但这些方法大多侧重于提升网络性能,而忽略了计算复杂度、推理时间和参数数量,这在许多实际应用中至关重要。

紧接着又说随着医学成像解决方案从实验室向床边(即“即时成像”)的转移,对高效、低参数、快速推理的分割网络的需求日益增加。即时成像有助于临床医生提供更快捷的服务和更好的患者护理,减少患者前往放射科中心的时间和程序。

然后为了解决这些问题提出了UNeXt网络,该网络结合了卷积网络和多层感知机(MLP),旨在减少计算开销、降低参数数量、提高推理速度,同时保持良好的分割性能。UNeXt网络采用UNet的编码器-解码器架构,但每个块的设计有所不同,包括一个卷积阶段和一个MLP阶段。在瓶颈部分,引入了新颖的Tokenized MLP(Tok-MLP)块,该块通过将卷积特征投影为抽象标记并使用MLP学习有意义的分割信息,有效降低了计算量。此外,还在MLP中引入了轴向移位操作,以提取不同轴向的局部信息。

最后实验结果表明,UNeXt在ISIC皮肤病变数据集和乳腺超声图像(BUSI)数据集上取得了优于最新通用分割架构的性能。更重要的是,与TransUNet相比,UNeXt将参数数量减少了72倍,计算复杂度降低了68倍,推理速度提高了10倍,使其非常适合于即时医疗成像应用。

核心逻辑

UNext网络结构同样是encoder-decoder 结构,有两个阶段:卷积阶段;tokenized MLP阶段

UNeXt 是一种编码器-解码器架构,分为两个阶段:卷积阶段和tokenized MLP阶段。编码器包括前3个卷积块和后2个 MLP 块,逐步减小特征分辨率;解码器反向操作,包括2个 MLP 块和3个卷积块,逐步增大分辨率,并通过跳跃连接与编码器相连。通道数(C1 到 C5)设置为32、64、128、160和256,比 UNet 及其变体的滤波器数量更少,从而减少了参数和计算量。整体架构如下图所示:

卷积阶段:卷积阶段中的每个卷积块包含一个卷积层、批量归一化层和 **ReLU **激活。编码器块使用 2 × 2 最大池化层,解码器块使用双线性插值进行上采样,以减少可学习参数数量,这里使用双线性插值不需要学习任何参数,它通过加权邻近像素值来计算新的像素值,从而在不引入额外的可学习参数的情况下实现图像的上采样。

tokenized MLP阶段:这一部分内容是本文的核心创新点,首先先介绍Shifted MLP在 Shifted MLP 中,先对卷积特征进行移动,以便 MLP 更好地专注于特定区域。可以把它想象成在分析图片时,先把图片分成小块,每次只看其中的一部分。通过移动这些小块,MLP 能够更好地理解局部细节,而不是只看整体,这种方法类似于Swin Transformer的做法,在原本需要全局处理的模型中,通过分区来更好地关注局部信息。具体来说,Tokenized MLP 有两个部分,一个部分负责沿宽度方向移动特征,另一个部分则沿高度方向移动特征。这样一来,模型可以更有针对性地在不同方向上关注细节,从而提高效果。

举个简单的例子:假设你有一张4×4的小图片,每个像素代表一个特征。原始图片可能是这样的:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

如果你向右平移一格,图片可能会变成这样:

4 1 2 3
8 5 6 7
12 9 10 11
16 13 14 15

这种平移操作让每个像素的位置发生了变化,但图片的内容还是相同的。通过这种方式,MLP 在处理这些移动后的特征时,会看到特征图中不同的部分,从而增加模型对局部信息的敏感度。从而不需要看到全局的信息,减少了参数量。如图所示: 

灰色是特征块的位置,白色是移动之后的padding,然后介绍Tokenized MLP  在 Tokenized MLP 块中,首先对特征进行移动并将其投射为标记。然后,将这些标记输入一个沿宽度方向平移的 MLP,接着通过深度卷积层(DWConv)来编码位置信息并提高效率。使用 GELU 激活函数代替 ReLU,因为 GELU 提供了更平滑的激活效果。随后,特征通过另一个沿高度方向平移的 MLP,将维度从 H 转换为 O,并使用残差连接和层归一化(LN),以增强性能和稳定性。  如图所示:

为什么使用DWConv?     

1)编码位置信息:DWConv 能够有效地编码位置信息。研究表明,卷积层在 MLP 块中能够有效捕捉位置信息,比传统的位置编码技术(如 ViT 中使用的技术)更优。传统的位置编码技术在测试和训练阶段分辨率不一致时需要插值处理,这可能导致性能下降,而卷积层则可以避免这种问题。    

2)参数效率:DWConv 通过对每个通道单独进行卷积操作,减少了需要学习的参数数量。这提高了计算效率,并使模型在保持性能的同时更加高效。与标准卷积层相比,DWConv 的参数更少,因此可以降低计算开销和内存占用。 

复现过程

实验数据集和代码已经下载好在附件和readme中。本复现过程只使用了部分的数据,且数据存放格式保持一致:

安装依赖包两种方式:基于conda和基于pip

# 基于conda
conda env create -f environment.yml
conda activate unext# 基于pip
timm==0.3.2
mmcv-full==1.2.7
torch==1.7.1
torchvision==0.8.2
opencv-python==4.5.1.48

请确保你的数据集文件夹存放的结构如下: 

inputs
└── <dataset name>├── images|   ├── 001.png│   ├── 002.png│   ├── 003.png│   ├── ...|└── masks├── 0|   ├── 001.png|   ├── 002.png|   ├── 003.png|   ├── ...|└── 1├── 001.png├── 002.png├── 003.png├── ...

模型训练和验证,进入到相应的文件夹后分别进行以下操作:

训练模型:其中–dataset <dataset name>是数据集路径;–name <exp name>可以为模型取个名字;–img_ext .png --mask_ext .png要根据具体的图片格式改成png或者jpg

模型运行代码及训练过程截图如下:

python train.py --dataset <dataset name> --arch UNext --name <exp name> --img_ext .png --mask_ext .png --lr 0.0001 --epochs 500 --input_w 512 --input_h 512 --b 8 

模型评估:–name <exp name>这个就是上面自己取的那个名字

模型运行代码及验证过程截图如下:

对于这样一个能够兼顾到训练速度和精度的模型,可以在此基础上进行改进后为自己所用,是一个非常不错的选择。改进建议如下:

多尺度特征提取:将原UNext网络中用于提取图像特征的单一卷积模块替换为多尺度特征提取模块

注意力模块:在模型关键的位置分别增加自注意力机制和残差注意力机制,使得模型能够在关键位置建立权重连接,从而更好的捕获和理解图像中上下文的信息以及图像不同区域之间的关系,以及捕获图像中的目标细节和边界

写在最后

        在医疗领域,轻量级图像分割技术的突破不仅仅是一个技术进步,它预示着未来医疗服务的全新模式。通过减少计算资源的需求并提高处理速度,这些创新将极大地推动医疗图像分析的普及,让更广泛的医疗机构能够享受到先进的AI技术带来的好处。随着这些技术不断成熟和应用,未来的医疗工作者将能够以更高的精确度和效率应对各种挑战,从而为患者提供更优质的医疗服务。无论是在偏远地区的诊断,还是在复杂的手术规划中,轻量级图像分割的进步都将成为改变医疗格局的关键力量。我们正站在医疗AI新纪元的门槛上,未来的每一步都值得我们共同期待和探索。

详细复现过程的项目源码、数据和预训练好的模型可从该文章下方附件获取。

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

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

相关文章

PAT--1101.B是A的多少倍

题目描述 算法分析 把数字转为字符串处理&#xff0c;会简化问题 完整代码 #include<bits/stdc.h> //万能头文件 //#include<iostream> //#include<string> //#include <iomanip> // 包含 std::fixed 和 std::setprecision using namespace std;…

PHP汽车保养维修信息管理系统小程序源码

&#x1f697;爱车守护神器&#xff01;揭秘“汽车保养维修信息管理系统”全攻略&#x1f50d; &#x1f525;【开篇揭秘&#xff1a;为何你需要它&#xff1f;】&#x1f525; 在这个快节奏的时代&#xff0c;爱车不仅是代步工具&#xff0c;更是生活品质的象征。但你是否曾…

JUC-变量的线程安全

成员变量和静态变量是否线程安全&#xff1f; 如果它们没有共享&#xff0c;则线程安全&#xff0c;即没有被外部访问。 如果它们被共享了&#xff0c;根据它们的状态是否能够改变&#xff0c;又分两种情况 如果只有读操作&#xff0c;则线程安全 如果有读写操作&#xff0c;…

精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会

2024年7月17日-19日&#xff0c;风丘科技联合德国IPETRONIK亮相日本名古屋汽车工程博览会。该展会面向汽车行业不同应用场景&#xff0c;包括新的eAxle、FCEV、ADAS、测试测量系统和ECU测试等相关技术&#xff0c;是一个专为活跃在汽车行业前线的工程师和研究人员举办的汽车技术…

Leetcode JAVA刷刷站(11)盛最多水的容器

一、题目概述 二、思路方向 这个问题是经典的“盛最多水的容器”问题&#xff0c;通常使用双指针法来解决。基本思路是&#xff0c;我们初始化两个指针&#xff0c;一个指向数组的起始位置&#xff0c;另一个指向数组的末尾位置。然后&#xff0c;我们计算当前两个指针所指向…

学习笔记第二十四天

1.exec族函数的区别 int exec l(const char *path, const char *arg, ...); int exec l p(const char *file, const char *arg, ...); int exec l e(const char *path, const char *arg,..., char * const envp[]); int exec v(const char *path, char *const argv[]); …

硬件面试经典 100 题(31~40 题)

31、多级放大电路的级间耦合方式有哪几种&#xff1f;哪种耦合方式的电路零点偏移最严重&#xff1f;哪种耦合方式可以实现阻抗变换&#xff1f; 有三种耦合方式&#xff1a;直接耦合、阻容耦合、变压器耦合。直接耦合的电路零点漂移最严重&#xff0c;变压器耦合的电路可以实现…

广告资料库是什么?如何正确使用Facebook广告资料库?一文解决你的烦恼!

什么是广告资料库 广告营销领域&#xff0c;创意和策略的更新速度极快。为了跟上这种节奏&#xff0c;广告资料库应运而生&#xff0c;成为广告人和营销专家的重要工具。广告资料库是一个集中存储和管理广告素材、创意案例、市场数据和用户反馈的平台。它不仅帮助用户获得灵感…

掌握高可用核心:Keepalived 铸就坚不可摧的集群防线

目录 一.初识keepalived 二.VRRP工作模式 1.三种状态 2.选举机制 三.Keepalived 架构 四. Keepalived环境准备 五.KeepAlived 配置说明 1.配置文件组成部分 2.配置语法说明&#xff1a;全局配置 3.配置虚拟路由器 4.启用keepalived日志功能 5.实现独立子配置文件 六…

Adobe PhotoShop - 制图操作

1. 排布照片 菜单 - 视图 - 对齐&#xff1a;打开后图层将会根据鼠标的移动智能对齐 菜单 - 视图 - 标尺&#xff1a;打开后在页面出现横纵标尺&#xff0c;方便图层的对齐与排列 2. 自动生成全景照 在日常处理中&#xff0c;我们常常想要将几张图片进行拼接获得一张全景图&…

SpringBoot快速入门(手动创建)

目录 案例&#xff1a;需求 步骤 1 创建Maven项目 2 导入SpringBoot起步依赖 3 定义Controller 4 编写引导类 案例&#xff1a;需求 搭建简单的SpringBoot工程&#xff0c;创建hello的类定义h1的方法&#xff0c;返回Hello SpringBoot! 步骤 1 创建Maven项目 大家&…

【多线程-从零开始-柒】单例模式,饿汉和懒汉模式

单例模式&#xff1a;是一种设计模式 设计模式&#xff0c;类似于“棋谱”&#xff0c;就是固定套路&#xff0c;针对一些特定的场景&#xff0c;给出一些比较好的解决方法只要按照设计模式来写代码&#xff0c;就可以保证代码不会太差&#xff0c;保证代码的下限 设计模式 设…

力扣面试经典算法150题:罗马数字转整数

罗马数字转整数 今天的题目是力扣面试经典150题中的数组的简单题: 罗马数字转整数 题目链接&#xff1a;https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个罗马数字转换成相应的整数。输入是一…

Docker 日志管理

一、ELK -Filebeat Elasticsearch 数据的存储和检索 常用端口&#xff1a; 9100&#xff1a;elasticsearch-head提供web访问 9200&#xff1a;elasticsearch与其他程序连接或发送消息 9300&#xff1a;elasticsearch集群状态 Logstash 有三个组件构成input&#xff0c;fi…

QT输入组、QT显示组

目录 QT输入组 ​编辑 Combo Box&#xff08;下拉菜单部件&#xff09; Font Combo Box&#xff08;显示系统中可用的字体&#xff09; Line Edit&#xff08;行编辑器&#xff09; Text Edit&#xff08;文本编辑器&#xff09; Plain Text Edit&#xff08;纯文本编辑…

MySQL基础练习题39-商品销售明细表1

目录 题目 准备数据 分析数据 总结 题目 求2024-01-01 每个门店 每个商品 的 销售单量, 销售数量, 销售金额, 线上单量, 线下单量 准备数据 -- 创建库 create database db_2; use db_2;-- 创建商品销售明细(核销)天表 CREATE TABLE dwm_sold_goods_sold_dtl_i (trade_da…

Apple 智能基础语言模型

Introducing Apple’s On-Device and Server Foundation Models technical details June 10, 2024 在2024年的全球开发者大会上&#xff0c;苹果推出了Apple Intelligence&#xff0c;这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。Apple Intelligen…

25届秋招网络安全面试资料库

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

步进电机驱动笔记1:STM32+DRV8825模块_初步驱动42步进电机

今日学习使用STM32 F103C8T6 与DRV8825模块 驱动42步进电机 本文就简单地用单片机驱动一下&#xff0c;不去了解更深层次的东西&#xff0c;只求能转就行的那种... 文章提供测试代码讲解、完整工程下载、测试效果图 目录 需要准备的模块&#xff1a; DRV8825步进电机驱动器​…

8G显存玩转书生大模型

基础任务 使用 Cli Demo 完成 InternLM2-Chat-1.8B 模型的部署&#xff0c;并生成 300 字小故事&#xff0c;记录复现过程并截图。 尝试很多方法无解后在网页端重新输入&#xff1a; import torch from transformers import AutoTokenizer, AutoModelForCausalLM使用了Tran…