Diffusion Transformer U-Net for MedicalImage Segmentation

用于医学图像分割的扩散变压器U-Net

摘要:

扩散模型在各种发电任务中显示出其强大的功能。在将扩散模型应用于医学图像分割时,存在一些需要克服的障碍:扩散过程调节所需的语义特征与噪声嵌入没有很好地对齐;这些扩散模型中使用的U-Net骨干网对上下文信息不敏感,而上下文信息在反向扩散过程中对于精确的像素级分割至关重要。

为了克服这些限制,我们提出了一个交叉注意模块来增强源图像的条件反射,以及一个基于转换器的U-Net,该U-Net具有多尺寸窗口,用于提取各种尺度的上下文信息。在Kvasir-Seg、CVC Clinic DB、ISIC 2017、ISIC 2018和Refuge 5个不同成像模式的基准数据集上进行了评估,我们的扩散变压器U-Net具有很强的泛化能力,并且在这些数据集上优于所有最先进的模型。

1 介绍

卷积神经网络(CNN)和视觉变形(ViT)等深度学习(DL)方法已经应用于医学图像分割[7,8,17],并取得了良好的效果。然而,这些深度学习方法在其网络架构上有一些固有的限制。例如,cnn能够提取局部特征,但不能直接提取全局特征,而vit采用固定窗口,这限制了它们提取精确像素级分割所必需的精细上下文细节的能力。

近年来,去噪扩散概率模型(Denoising Diffusion Probabilistic Model, DDPM)[9]在各种条件和无条件生成任务中表现出了很好的性能,也被应用于医学图像分割[23,24]。尽管取得了成功,但仍存在一些不足:(1)从源图像中提取的语义嵌入与扩散中的噪声嵌入不能很好地对齐

工艺,导致调理不良,性能欠佳;(2)在反向扩散(去噪)过程中,这些基于ddpm的方法中的UNet主干对各种尺度的上下文信息不敏感,在cnn和vit中也观察到这一点。

基于这些局限性,我们提出了一种扩散变压器U-Net,并做出了以下贡献:

提出了一种具有前向和后向过程的条件扩散模型来训练分割网络。在反向去噪过程中,通过一个新的交叉注意模块将噪声图像的特征嵌入与条件源图像的特征嵌入对齐。然后,通过分割网络将其去噪为源图像的分割掩码。

一个基于变压器的U-Net多尺寸窗口,命名为MT U-Net,它旨在提取像素级和全局上下文特征,以实现良好的分割性能。

扩散模型训练的MT U-Net在各种成像模式上具有很强的泛化能力,在结肠镜图像中的息肉分割[1,10]、皮肤镜图像中的皮肤病变分割[4,5]、视网膜眼底图像中的光学杯分割[14]等5个基准数据集上优于目前所有的最先进技术。

图1所示。用交叉注意扩散模型训练MT U-Net。

2 方法

2.1扩散模型

扩散有正向和反向两个过程(图1)。在正演过程中,通过T个时间步长逐渐加入高斯噪声,将地真值M0变换为带噪声的地真值MT。在相反的过程中,首先,源图像I和噪声映射m_t +1通过一个编码器E(两个残差初始化块[18])得到嵌入fI∈Rh×w×c1和fM∈Rh×w×c2(下标I和M表示图像和映射),其中h、w和c1 (c2)分别是嵌入的高度、宽度和通道。然后,在特征空间中通过交叉注意(Cross-Attention, CA)模块对两个嵌入进行对齐。将对齐后的特征映射作为带噪声的输入输入到MT U-Net中进行恢复M^t

这个反向过程从t = t−1迭代到t = 0(即,当t = t−1时,初始的m_t +1, m_t, i = s, i = s Mt, a + n和m_0最终恢复,预计与基本真理M0相同)。

图2展示了我们的CA模块的架构,该模块用于校准fM和fI,以改善扩散模型的调节。首先,将fM和fI分割成小块,并通过小块编码(Patch Encoding, PE)层将其平面化。然后,使用位置编码层(PoE)获取补丁的位置信息,并将其添加到原始补丁嵌入中以保持其位置信息。两个位置内置补丁嵌入的维度使用线性投影(LP)层对齐,并通过层归一化(LN)进行归一化,将两个LN之后的输出表示为f p M∈Rd和f p I∈Rd(补丁的d-dim特征向量)。第三,利用自关注进行特征融合;

图2所示。交叉关注(CA)模块的体系结构。

其中f p M是查询(Q), f p M和f p I的连接是键(K)和值(V)。? 表示转置。第四,根据[20],我们通过层归一化(LN)和二层多层感知器(MLP)对LSA的输出进行编码,以提取更多的上下文信息。辅助连接(残差)用于增强信息传播。最后,我们应用一个重塑(RS)层来重塑并组装成与fM相同大小的补丁。

2.2 多规格变压器U-Net (MT U-Net)

图3(a)展示了我们的MT U-Net的架构,包括编码和解码部分。编码部分由Patch Partitioning层、Linear Embedding层、PoE和四个编码器块组成。Patch Partitioning层将输入分割成不重叠的Patch, Patch大小为2 × 2。

图3所示。提出的MT U-Net的体系结构,以及MT模块。为清晰起见,图中没有给出时间步长嵌入。

使用线性嵌入层将这些补丁与时间嵌入一起平面化为D × 1维线性嵌入。然后在通过四个编码器块之前,将从PoE获得的位置信息添加到线性嵌入中。除了最后一个编码器块只包含MT模块外,每个编码器块由一个多尺寸变压器(MT)模块和一个补丁合并层组成。MT模块提取多尺度上下文特征(稍后详细说明),Patch merge层对特征图进行下采样。受U-Net[15]的启发,我们采用了一种s - k - p连接,利用来自编码器的多尺度上下文信息来克服降采样过程中空间信息的丢失。

与编码器块类似,每个解码器块由一个MT模块和一个补丁扩展层组成,除了第一个解码器块只包含MT模块。补丁扩展层对特征映射进行上采样和重塑操作。最后,我们使用线性投影层来获得像素级预测。

所提出的多尺寸变压器(MT)模块(图3(b))与传统变压器不同[6]。MT模块由多尺寸窗口和可移动窗口两部分组成。多尺度窗口部分提取多尺度上下文信息,移动窗口部分丰富了提取的信息。多尺寸窗口部分有K个平行分支,每个分支由一个层归一化(LN)、多头自注意(SA)、辅助连接(残量)和一个多层感知器(MLP)组成,该感知器有两层,后面跟着GELU激活函数。多头自注意使用不同的窗口大小来提取多尺度的上下文特征。这些单独分支的输出被合并,并被发送到移动窗口部分。移动窗口部分的结构类似于在多尺寸窗口中使用单个分支,但在自关注(SW-SA)中使用移动窗口。

2.3 训练与推理

在训练过程中,将源图像及其分割地面真值图作为扩散模型的输入。扩散模型使用噪声预测损失(LNo ise)[12]和交叉熵损失(LCE)进行训练。

在推理过程中,从高斯分布中采样的噪声图像与测试图像一起作为反向过程的输入。

3 实验结果

3.1 数据集和评估指标

为了评估该方法的有效性和泛化能力,我们测试了不同的医学图像分割任务,包括:(1)结肠镜图像的息肉分割(Kvasir-SEG (KSEG) [10], CVC- clinic DB (CVC)[1]),(2)皮肤镜图像的皮肤病变分割(ISIC 2017 (IS17 ') [5], ISIC 2018 (IS18 ')[4,19]),以及(3)视网膜眼底图像的光学杯分割(REFUGE (REF)[14])。Dice Coefficient (DC)和Intersection over Union (IoU)被用作评价指标。

3.2 实现细节

通过交叉验证,MT模块中的分支数设置为3,窗口大小分别为4、8、16。扩散变压器U-Net使用SGD优化器进行40000次迭代训练,动量为0.6,批量大小为16,学习率设置为0.0005。在扩散中,我们使用T = 1000步的线性噪声调度器。为了与最近基于扩散的分割模型[23,24]进行公平的比较,在推理过程中,25个预测的平均集合被认为是最终预测。所有的实验都是使用NVIDIA Tesla V-100 GPU和32gb RAM进行的。

3.3 性能对比

首先,我们将我们的方法与几个众所周知的U-Net和/或transformer相关的分割模型进行定量比较,包括U-Net[15]、unnet++[26]、Attention U-Net[13]、Swin U-Net[2]、Trans U-Net[3]和SegFormer[25]。利用源代码对这些模型进行训练,并在实验数据集上进行评估。为了公平比较,所有模型对每个数据集使用相同的实验方案。定量结果如表1所示。

表1。与U-Net和/或变压器相关的最先进方法的比较。KSEG、CVC、IS18采用80:10:10’(训练:验证:测试数据分割)实验协议;分别在REF和IS17 '上使用默认分割。

图4所示。与SOTA方法在KSEG[10]、CVC[1]、IS18 '[4,19]、IS17 '[5]和REF[14]数据集上的定性比较。蓝色等高线代表真实情况,绿色等高线代表预测结果。

我们的扩散变压器U-Net在不同成像模式的五个数据集上优于所有其他U-Net或Transformer相关模型,验证了其有效性和泛化能力。

其次,我们将我们的扩散变压器U-Net与其他U-Net或变压器相关模型进行定性比较。从图4中随机抽样的测试图像中,我们观察到其他模型产生过分割(例如,Trans U- net, SegFormer)或欠分割结果(例如,U- net, SegFormer)

表2。与SOTA结果比较。' - ':未报告结果。“*”:图像数量。

Net, unet ++, Attention U-Net, Swin U-Net),我们的分割掩码最接近地面真相,证明了我们方法的有效性。

最后,我们将我们的扩散变压器U-Net与五个数据集上所有最新的最佳模型进行了比较,如表2所示。除MedSegDiff和MedSegDiff- v2外,引用方法的结果均直接从其论文中复制。这两种方法被重新训练,并在REF数据集上进行评估。注意,由于一些方法在IS18数据集上使用不同的实验协议。为了公平比较,我们使用两种不同的协议训练/交叉验证/测试我们的方法,并将我们的方法与使用相同协议的其他方法进行比较。如表2所示,我们的方法在这五个数据集上的表现始终优于目前所有的最佳模型,再次验证了我们的方法的有效性和优越性。

3.4 消融研究

我们进行了一系列烧蚀研究,以评估扩散变压器U-Net中每个模块的贡献,如表3所示:

-我们用简单的连接操作取代了扩散模型中的交叉注意(CA),并应用这种简化的扩散模型来训练U-Net。即使这种简化的扩散模型(第2行)也可以提高第1行U-Net的性能,显示扩散的有效性。

-使用我们的带有CA模块的扩散模型(第3行),与基本的串联操作(第2行)相比,性能得到了进一步提高,这验证了CA模型在扩散模型去噪过程中对特征嵌入进行对齐的贡献。

-使用CA模块的扩散模型,我们将没有多尺寸窗口的基本变压器单元[6]添加到U-Net中(第4行)。与第3行相比,这也提高了分割性能,这表明变压器可以帮助U-Net进行分割。

-基于第4行模型,我们在变压器中添加了多尺寸窗口(即第5行扩散变压器U-Net)。与烧蚀研究中的其他配置相比,这提供了最高的性能。

表3。消融对KSEG[10]、CVC[1]、IS18′[4,19]、IS17′[5]、REF[14]的影响。

4 结论

提出了一种用于医学图像分割的扩散变压器U-Net。

在扩散模型中,我们提出了一种基于多尺寸窗口的转换U-Net,以增强上下文信息的提取和重建。我们还设计了一个交叉注意模块来对齐特征嵌入,提供更好的从源图像到扩散模型的调节。在不同模态的数据集上的评价表明了该方法的有效性和泛化能力。

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

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

相关文章

Codeforces Round 926 (Div. 2)(A~C)

A. Sasha and the Beautiful Array 分析:说实话,打比赛的时候看到这题没多想,过了一下样例发现将数组排序一下就行,交了就过了。刚刚写题解反应过来,a2-a1a3-a2.....an-a(n-1) an - a1,所以最后结果只取决…

python工具方法 45 基于ffmpeg以面向对象多线程的方式实现实时推流

1、视频推流 参考基于ffmpeg模拟监控摄像头输出rtsp视频流并opencv播放 实现视频流的推流。 其基本操作就是,安装视频流推流服务器,ffmpeg,准备好要推流的视频。 命令如下所示:ffmpeg -re -stream_loop -1 -i 风景视频素材分享.flv -c copy -f rtsp rtsp://127.0.0.1:554/…

怎么搭建自己的网站?

怎么搭建自己的网站 一.领取一个免费域名和SSL证书,和CDN 特点:支持Cloudflare CDN Cloudflare是全球知名的CDN提供商,如果你不想暴露你的源站,又想使用我们的二级域名,不需要前往Cloudflare添加域名,修…

【机器学习笔记】 6 机器学习库Scikit-learn

Scikit-learn概述 Scikit-learn是基于NumPy、 SciPy和 Matplotlib的开源Python机器学习包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数据分析师首选的机器学习工具包。 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了&#xff…

家里台式机需要把一个网站发布到外网可用,怎么搞?--DDNS配置(动态域名解析配置)

前言 Dynamic DNS是一个DNS服务。当您的设备IP地址被互联网服务提供商动态变更时,它提供选项来自动变更一个或多个DNS记录的IP地址。 此服务在技术术语上也被称作DDNS或是Dyn DNS 如果您没有一个静态IP,那么每次您重新连接到互联网是IP都会改变。为了避免每次IP变化时手动更…

java数据结构与算法刷题-----LeetCode18. 四数之和

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 此题为三数之和的衍生题,代码完全一样,只…

一、Java安装JDK8

Java安装JDK8 一、Centos7.91.命令行安装2.安装包安装2.1 下载2.2 安装2.3 配置java环境 二、Windows1.下载2.安装3.配置环境变量 一、Centos7.9 1.命令行安装 yum install java-1.8.0-openjdk.x86_642.安装包安装 2.1 下载 下载地址:https://www.oracle.com/cn…

基于T1w/T2w 比值揭示髓磷脂相关变化

前言: 最近在阅读文献的时候发现2篇文章,是采用T1w/T2w 比值表征髓磷脂,有点感兴趣,因此尝试了一下文献所提出的方法。(https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9247578/ https://www.ncbi.nlm.nih.gov/pmc/ar…

鸿蒙开发系列教程(二十四)--List 列表操作(3)

列表编辑 1、新增列表项 定义列表项数据结构和初始化列表数据,构建列表整体布局和列表项。 提供新增列表项入口,即给新增按钮添加点击事件。 响应用户确定新增事件,更新列表数据。 2、删除列表项 列表的删除功能一般进入编辑模式后才可…

【C语言】Linux 内核listen系统调用代码

一、Linux 4.19内核listen系统调用代码注释 /** 开始对一个 socket 进行监听。这个函数做一些准备工作以便 socket 可以开始监听,* 如果操作成功,则将 socket 标记为准备好监听的状态。*/int __sys_listen(int fd, int backlog) {struct socket *sock…

VueCLI核心知识4:动画效果、过渡效果

1 动画效果 【代码】 <template><div><button click"isShow !isShow">显示/隐藏</button><!-- <transition name"xxx" :appear"true"> 可以指定name属性&#xff0c;也可以不指定&#xff0c;name属性在有…

Codeforces Round 926 (Div. 2)

这场比赛我觉得题目不是特别难&#xff0c;就是有点难读懂&#xff0c;基本上读懂就差不多会做了。 Problem - A - Codeforces 1.思路&#xff1a; Q1&#xff1a;首先这个题我们一定能确定一个下界答案就是最大值减去最小值&#xff0c;那么我们怎样证明下界答案就是上界答案…

数值类型的运算方式总结

提纲1&#xff1a;常见的位运算使用场景 提纲2&#xff1a;整数类型运算时的类型溢出问题&#xff0c;产生原因以及解决办法 提纲3&#xff1a;浮点类型运算时的精度丢失问题&#xff0c;产生原因以及解决办法 数值类型&#xff08;6种&#xff09;分为&#xff1a; 整型&…

六、Datax通过json字符串运行

Datax通过json字符串运行 一、场景二、代码实现 一、场景 制作一个web应用&#xff0c;在页面上配置一个json字符串&#xff0c;保存在数据库里面。在执行json的时候&#xff0c;动态在本地创建一个json文件后执行&#xff0c;并识别是否成功&#xff0c;将执行过程保存在数据…

C++数据结构与算法——字符串

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

2024年【危险化学品经营单位安全管理人员】免费试题及危险化学品经营单位安全管理人员考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员免费试题参考答案及危险化学品经营单位安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品经营单位安全管理人员操作证已考过的学员汇总&#xff0c;相对有效帮助…

WordPress作者页面链接的用户名自动变成16位字符串串插件Smart User Slug Hider

WordPress默认的作者页面URL链接地址格式为“你的域名/author/admin”&#xff0c;其中admin就是你的用户名&#xff0c;这样的话就会暴露我们的用户名。 为了解决这个问题&#xff0c;前面boke112百科跟大家分享了『如何将WordPress作者存档链接中的用户名改为昵称或ID』一文…

Linux进程间通信(二)-----system V共享内存

共享内存的概念 共享内存让不同进程看到同一份资源的方式就是&#xff0c;在物理内存当中申请一块内存空间&#xff0c;然后将这块内存空间分别与各个进程各自的页表之间建立映射&#xff0c;再在虚拟地址空间当中开辟空间并将虚拟地址填充到各自页表的对应位置&#xff0c;使得…

书生浦语大模型实战营-课程作业(3)

下载sentence_transformer的代码运行情况。sentence_transformer用于embedding&#xff08;转向量&#xff09; 本地构建持久化向量数据库。就是把txt和md文件抽取出纯文本&#xff0c;分割成定长&#xff08;500&#xff09;后转换成向量&#xff0c;保存到本地&#xff0c;称…

Python算法题集_二叉树的层序遍历

Python算法题集_二叉树的层序遍历 题102&#xff1a;二叉树的层序遍历1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【DFS递归】2) 改进版一【BFS迭代】3) 改进版二【BFS迭代循环】 4. 最优算法 本文为Python算法题集之一的代码示例 题102&am…