Swin Unet——结合U-Net和Transformer的医学图像分割的网络解析

news2024/12/22 18:20:45

1. 概述

在过去的几年中,卷积神经网络(CNN)在医学图像分析领域取得了显著的成就,特别是在图像分割任务上。U-Net作为一种特别为医学图像分割设计的深度学习架构,因其优秀的性能而被广泛采用。然而,CNN的卷积操作本质上是局部的,这限制了它在捕捉图像全局特征方面的能力。

与此同时,Transformer架构因其能够学习全局依赖关系而受到了关注。Transformer通过自注意力机制(Self-Attention Mechanism)能够处理序列数据中的长距离依赖问题,这使得它在处理图像全局特征方面具有潜在优势。

为了结合CNN的局部感知能力和Transformer的全局感知能力,研究者们提出了一种新的架构——基于Transformer的U-Net,称为Swin-Unet。Swin-Unet结合了Swin Transformer的全局特征学习能力和U-Net的优秀分割性能,特别适用于多器官的医学图像分割任务。

在这项研究中,Swin-Unet的性能被与纯CNN和结合了CNN的Transformer方法进行了比较。实验结果表明,Swin-Unet在多器官分割任务上取得了优于其他方法的性能。这可能是因为Swin-Unet能够有效地结合局部和全局信息,从而更好地理解医学图像中的复杂结构。

论文地址:https://arxiv.org/abs/2105.05537
源码地址:https://github.com/HuCaoFighting/Swin-Unet

2. 研究背景

近年来,自然语言处理领域中出现了一种名为Transformer的网络架构,它因其卓越的性能而迅速流行起来。Transformer的核心机制是注意力机制(Attention Mechanism),这一机制能够确定在翻译任务中,输入句子中的哪些词与输出句子中的哪些词相关联,并计算这些词在句子中的重要性。注意力机制使得Transformer能够捕捉全局上下文信息,因为每个词的输出都是基于该词在整个句子中的重要性来计算的。

相比之下,卷积神经网络(CNN)在图像处理领域中的核心思想是卷积操作。卷积操作通过对图像中的像素群进行信息汇总,类似于将图像折叠以减小其尺寸的过程。CNN通过聚合局部区域的形状、颜色等信息来生成输出,因此它擅长捕捉局部特征,但在捕捉图像中远距离区域的信息方面存在局限。

尽管CNN和Transformer在处理数据的方式上存在显著差异,但Transformer中的注意力机制后来也被引入到图像处理领域。Vision Transformer(ViT)的基本思想是将图像分割成多个小块(patches),并将这些小块视作自然语言处理中的词汇。这样,图像就被当作句子一样进行处理,ViT成功地学习了图像中的全局信息。

U-Net是一种在医学图像分割任务中非常成功的网络架构,它的各种改进版本,如3D U-Net、Res-Unet和U-Net++,也已被广泛报道。然而,由于U-Net本质上是基于CNN的,它在聚合全局信息方面存在局限。在本研究中,将ViT的概念应用于U-Net,提出了一种新的网络架构,称为Swin-Unet。

Swin-Unet的输入图像首先被送入一个基于Transformer的编码器,该编码器能够学习图像中的广泛空间特征。在多器官分割和心脏分割等任务中,Swin-Unet展现了出色的分割精度和强大的泛化能力。通过结合Transformer的全局感知能力和U-Net的有效分割特性,Swin-Unet在医学图像分析领域中开辟了新的可能性。

3. 相关研究

早期的医学图像分割方法主要依赖于轮廓(contour)信息和传统的机器学习技术。随着深度学习特别是卷积神经网络(CNN)的发展,U-Net架构被提出,并迅速成为医学图像分割领域的一个标杆。U-Net以其高效的上下文信息整合和精确的分割性能而受到广泛欢迎。

随着时间的推移,为了进一步提高分割效果和解决特定问题,U-Net的多种改进版本相继被提出。这些改进版本包括但不限于Res-UNet、Dense-UNet、U-Net++、UNet3+、3D-Unet和V-Net等。每一种改进都是在原始U-Net的基础上针对特定问题进行了优化,比如增加跳跃连接(skip connections)来提高特征传递,或者引入密集连接(dense connections)来增强特征重用,以及扩展到三维图像分割等。

与此同时,Transformer架构作为一种补充CNN的方法被提出,特别是在自然语言处理领域取得了巨大成功。Transformer引入了自注意力(self-attention)机制,能够捕捉序列中的长距离依赖关系。在图像处理领域,Transformer也被证明是一种强大的工具,因为它能够处理全局上下文信息,而不仅仅是局部区域。

然而,尽管Transformer在处理全局信息方面具有优势,但它的设计理念与本文介绍的Swin-Unet有所不同。Swin-Unet是一种结合了Transformer的全局感知能力和CNN的局部感知能力的新型网络架构。它通过在U-Net的基础上引入Transformer的自注意力机制,使得网络能够更好地捕捉全局和局部特征,从而在医学图像分割任务中取得更好的性能。

4.Swin-Unet架构

图片
Encoder, Bottleneck以及Decoder都是基于Swin-Transformer block构造的实现。

4.1 Swin Transformer block

图片
与传统的multi-head self attention(MSA)模块不同,Swin Transformer是基于平移窗口构造的。在图2中,给出了2个连续的Swin Transformer Block。每个Swin Transformer由LayerNorm(LN)层、multi-head self attention、residual connection和2个具有GELU的MLP组成。在2个连续的Transformer模块中分别采用了windowbased multi-head self attention(W-MSA)模块和 shifted window-based multi-head self attention (SW-MSA)模块。基于这种窗口划分机制的连续Swin Transformer Block可表示为:

图片

其中,和分别表示(S)W-MSA模块和第块的MLP模块的输出。

与前面的研究ViT类似,self attention的计算方法如下:

图片

其中,表示query、key和value矩阵。和分别表示窗口中patch的数量和query或key的维度。value来自偏置矩阵。

4.2 Encoder

在Encoder中,将分辨率为的维tokenized inputs输入到连续的2个Swin Transformer块中进行表示学习,特征维度和分辨率保持不变。同时,patch merge layer会减少Token的数量(2×downsampling),将特征维数增加到2×原始维数。此过程将在Encoder中重复3次。

图片

输入patch分为4部分,通过Patch merging layer连接在一起。这样的处理会使特征分辨率下降2倍。并且,由于拼接操作的结果是特征维数增加了4倍,因此在拼接的特征上加一个线性层,将特征维数统一为原始维数的2倍。

4.3 Decoder

与Encoder相对应的是基于Swin Transformer block的Symmetric Decoder。为此,与编码器中使用的patch merge层不同,我们在解码器中使用patch expand层对提取的深度特征进行上采样。patch expansion layer将相邻维度的特征图重塑为更高分辨率的特征图(2×上采样),并相应地将特征维数减半。

图片
以第1个Patch expanding layer为例,在上采样之前,对输入特征加一个线性层,将特征维数增加到原始维数的2倍。然后,利用rearrange operation将输入特征的分辨率扩大到输入分辨率的2倍,将特征维数降低到输入维数的1/4,即。
针对Encoder中的patch merge层,作者在Decoder中专门设计了Patch expanding layer,用于上采样和特征维数增加。为了探索所提出Patch expanding layer的有效性,作者在Synapse数据集上进行了双线性插值、转置卷积和Patch expanding layer的Swin-Unet实验。实验结果表明,本文提出的Swin-Unet结合Patch expanding layer可以获得更好的分割精度。

![图片](https://img-blog.csdnimg.cn/img_convert/f9eac300a8104e00612501f0ee72edbe.png

4.4 Bottleneck

由于Transformer太深导致收敛比较困难,因此使用2个连续Swin Transformer blocks来构造Bottleneck以学习深度特征表示。在Bottleneck处,特征维度和分辨率保持不变。

4.5 Skip connection

与U-Net类似,Skip connection用于融合来自Encoder的多尺度特征与上采样特征。这里将浅层特征和深层特征连接在一起,以减少降采样带来的空间信息损失。然后是一个线性层,连接特征尺寸保持与上采样特征的尺寸相同。

Swin-UNet在1/4,1/8和1/16的降采样尺度上添加了skip connections。通过将skip connections数分别更改为0、1、2和3,实验了不同skip connections数量对模型分割性能的影响。从下表中可以看出,模型的性能随着skip connections数的增加而提高。因此,为了使模型更加鲁棒,本工作中设置skip connections数为3。

图片

5、实验

分割任务是使用Synapse多器官分割数据集(以下简称Synapse)进行的,其中包含30个病例(注意:每个病例大约有3800张图像,因为它们是CT)。结果显示在前面。

实际使用了八个腹部器官(主动脉、胆囊、脾脏、左肾和右肾、肝脏、胰腺和胃),评估的依据是平均水平。Dice系数(DSC)和平均Hausdorff距离(HD),黑体字的模型是获得最高分的模型,例如Att-UNet在主动脉(Aorta)中表现最好。提出的Swin Unet在左肾、肝脏、脾脏和胃方面取得了最高分,总体平均水平优于现有方法。.

分段的例子如上图所示,从左到右:正确的标签、Swin Unet、TransUNet、AttUnet 和UNet,其中黄色的胰腺由于其平坦性,是一个难以检测的器官;底排显示了胰腺分割的巨大差异。

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

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

相关文章

如何在浏览器Web前端在线编辑PPT幻灯片?

有时候在项目中我们会遇到需要在网页在线打开并编辑PPT文档保存到本地或者服务器指定位置,猿大师办公助手可以很方便的调用本机Office实现在网页上编辑PPT幻灯片,效果与本机Office打开PPT完全一样。 猿大师办公助手支持完整嵌入模式,也就是本…

顺序表 (头删 尾删 清空)

//头删 | 1 #include "head.h" | 1 #ifndef ww87 void head_del(p lp) | 2 int main(int argc, const char *argv[]) …

若依前后端部署到一起

引用:https://blog.csdn.net/qq_42341853/article/details/129127553 前端改造: 配置打包前缀 修改router.js 编程hash模式: 前端打包:npm run build:prod 后端修改: 添加thymeleaf包,和配置文件 spri…

04.MySQL密码强度校验插件

MySQL密码强度校验插件 1.介绍 在MySQL中,可以通过开启validate_password插件来进行密码强度校验。这个插件可以确保用户设置的密码强度满足一定的要求,提高数据 库的安全性 2.流程图 3.默认开启情况 MySQL5.7:插件已经安装但未启用MySQL…

Apache Paimon 流式湖仓介绍说明

文章目录 前言选择 Paimon 的原因Apache Paimon 功能一致性保证Paimon 表类型数据湖写入标签和时间线回溯捕获变更数据写入数据湖LSM 和分层文件重用流处理案例使用 Paimon 作为消息队列 前言 Apache Flink 自诞生以来经历了重大演变,如今,它不仅充当批…

银河麒麟高级服务器操作系统adb读写缓慢问题分析

1.问题环境 处理器: HUAWEI Kunpeng 920 5251K 内存: 512 GiB 整机类型/架构: TaiShan 200K (Model 2280K) BIOS版本: Byosoft Corp. 1.81.K 内核版本 4.19.90-23.15.v2101.ky10.aarch64 第三方应用 数据库 2.问题…

关于centos8自带的apache2.4开启https后,XP系统的IE8无法显示网页的问题

经检验,是因为系统的apache和openssl版本太高导致的。 禁用系统默认的apache2.4,自己重新源码编译安装一套openssl-1.0.1fapache2.2.23php7.1.2即可。跟update-crypto-policies没有关系,可保持默认的DEFAULT状态。 关于centos8自带的apache2…

2.SG90舵机模块

当我们输出一段脉冲信号的时候就可以调节舵机的角度 我们可以从原理图可以看到舵机的脚在PA6 从芯片手册我们又可以看到PA6对应TIM3_CH1,并且不用开启部分重映像就能使用 新建Servo.c存放PWM初始化 配置PWM void Servo_TIM3_Init(u16 arr,u16 psc) {//开启TIM3的时钟RCC_APB1…

简单粗暴解决 wampapache 突然无法启动错误1053

问题是因为没有安装:vc_redist_x64 导致的 全网最简单粗暴解决下 DirectX_v4.1修复

pyqt QToolBar 选中高亮

目录 效果图 示例代码 效果图 示例代码 from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QToolBar, QToolButtonclass HighlightingToolButton(QToolButton):def __init__(self, parentNone):super().__init__(parent)self.setCheckable(True)def nextChe…

在centos8.5上迁移深度学习环境的时候碰到的一下问题(需要运维人员解决的)

我负责的是将开发服务器上的深度学习环境进行打包并将该环境迁移到生产服务器上,这些操作可以在其他博客中搜到 本文主要介绍我把环境包上传至生产服务器中的anaconda/envs/路径下,解压之后,运行测试代码时遇到的问题 IT部门是如何处理的&am…

servlet的三个重要的类(httpServlet 、httpServletRequst、 httpServletResponse)

一、httpServlet 写一个servlet代码一般都是要继承httpServlet 这个类,然后重写里面的方法 但是它有一个特点,根据之前写的代码,我们发现好像没有写main方法也能正常执行。 原因是:这个代码不是直接运行的,而是放到…

hive使用sqoop与oracle传输数据

下载地址 http://archive.apache.org/dist/sqoop 两个版本sqoop1(1.4.x)和sqoop2(1.99.x),两种不同的架构。 本文使用sqoop1。 sqoop是apache旗下一款“hadoop与关系数据库之间传送数据”的工具。 导入数据&#xf…

比特币减半:挑战与机遇

比特币减半是加密货币领域中一件备受关注的大事,它不仅影响着比特币本身的发展,也深刻影响着整个加密货币市场的走势。在这个历史性时刻,我们有必要深入分析比特币减半带来的挑战与机遇,以及未来的加密货币发展趋势。 挑战&#x…

如何配置STM32的UART/USART接口?

配置STM32的UART/USART接口是实现串行通信的基础。以下是详细的配置步骤和示例代码。 1. 选择时钟源 首先,需要确保USART接口的时钟已经使能。通常,这在初始化代码中完成,或者通过STM32CubeMX工具进行配置。 // 假设USART2位于APB1总线上 …

告别Elementor Pro,无需下载,全新中文版的国产替代方案来袭

如果你正在考虑创建自己的网站,那么在第一次谷歌搜索时,你可能已经看到了WordPress、Elementor和网站构建器这些专业名称。WordPress是最受欢迎的网站平台之一,这不难理解:它高度可定制,易于学习,而且是免费…

市场复盘总结 20240415

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率 0% 最常用的…

服务器负载均衡SLB/加密原理

多台服务器提供相同的服务 SLB(server load balancing) 多台服务器对应一个虚拟地址,该地址是防火墙虚拟出来的。 服务器负载均衡功能仅支持IPV4协议 多通道协议仅支持FTP协议

k8s高可用集群部署介绍 -- 理论

部署官网参考文档 负载均衡参考 官网两种部署模式拓扑图和介绍 介绍两种高可用模式 堆叠 拓扑图如下(图片来自k8s官网): 特点:将etcd数据库作为控制平台的一员,由于etcd的共识算法,所以集群最少为3个&…

【面试经典 150 | 数学】阶乘后的零

文章目录 写在前面Tag题目来源题目解读解题思路方法一:数学优化计算 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结…