医学图像分割之TransUNet

news2024/9/23 14:30:42

       

目录

一、背景

二、提出问题

三、解决问题

四、网络结构详解

CNN部分(ResNet50的前三层)

transformer部分

U-Net的decoder部分

五、模型性能


        开头处先说明下TransUNet的地位:它是第一个将transformer用于U型结构的网络。

一、背景

        医学图像分割是发展卫生保健系统的先决条件,尤其对疾病诊断和质量方案。在各种医学图像分割模型中,U型结构,也就是U-Net非常流行。

二、提出问题

  1. 由于卷积运算的内在局限性,或者说是卷积运算中,感受野小的原因,导致U-Net在建模过程中,远程依赖方面受限。
  2. transformer是全局自注意机制的可替代结构。但由于transformer的低级细节不足,导致其定位能力受限。

三、解决问题

        在解决U型结构感受野小、远程依赖受限的问题上,很多作者给出的解决办法是使用自注意力机制。由于Transformer中自带自注意力机制,作者是第一个将transformer和U-Net相结合的人。

  1. 由于U-Net结构在医学图像分割中非常流行,可以说是默认的医学图像分割的backbone了,所以作者选择在U-Net结构上进行改编。
  2. 由于transformer的输入为1D的序列,所以在其训练的所有阶段只关注了建模的上下文信息,导致缺少含有细节定位信息的高分辨率特征。所以作者选择将transformer与U-Net结构相结合,将transformer作为U型结构的encoder部分。
  3. transformer作为encoder部分,对transformer后的编码特征是\frac{HW}{P^{2}}*D,为了恢复空间信息,将\frac{HW}{P^{2}}*D恢复至\frac{H}{P}*\frac{W}{P}*D,然后使用U-Net的decoder部分,上采样恢复分辨率至 H*W。虽然也能产生合理的结果,但结果比较粗糙,缺少高分辨率的细节信息。也就是说此时的结构不是transformer的最佳应用,因为通常\frac{H}{P}*\frac{W}{P }比H*W小很多,分辨率在恢复至H*W过程中,不可避免导致定位信息的损失。为了弥补这种定位细节信息的损失,作者继续提出了CNN-Transformer的混合结构。
  4. CNN-Transformer作为U型结构的encoder部分。因为CNN能提取到低级定位细节信息,正好弥补Transformer缺少低级定位信息的不足。在此部分,作者选择使用resnet50的前3阶段作为CNN部分。将resnet50第三阶段得到的特征图作为transformer的patch来源。从而使得transUNet的U型结构得到闭环。

图1 TransUNet结构简图

四、网络结构详解

         从图中也可以看出,TransUNet的网络结构可以分为三部分学习,分别是CNN部分(resnet50的前三层)、transformer部分、U-Net的decoder部分。

CNN部分(ResNet50的前三层)

        CNN部分作者选用了ResNet50的前三层,至于为什么CNN选用的ResNet50,作者并没有给出原因。我的理解是:U-Net的decoder部分除去encoder5外,还有4层,从上往下计数,decoder4和transformer的结果进行skip-connection,上面还剩3层decoder,所以此处采用的ResNet50的前三层,方便后续的跳跃连接 。

        TranUNet中的该部分代码中,要将这三层的每层结果进行保存,每层的结果还要用于skip-connection,除此之外,第三层的特征图还要产生一系列的patches,作为transformer的输入内容。ResNet50的前三层结构如下图所示:

 

 图3 ResNet50网络结构

transformer部分

        此处的transformer部分采用了12层,也就是将transformer运算重复了12次。首先将CNN部分的第三层获得的特征图进行P=16处理,获得16*16=256个patches。将一系列patches输入到transformer模块中,获得 (n_patch, D)= \frac{HW}{P^{2}}*D维度的结果,为了恢复特征图的空间结构,reshape至\frac{H}{P}*\frac{W}{P}*D,然后进行上采样操作。

        关于transformer的具体实现,我想仔细学一些Vis Transformer,然后出一篇博客,详细讲解。 

U-Net的decoder部分

        此部分和U-Net的decoder部分完全一样,后面专门出一篇U-Net文章。

五、模型性能

        在我的数据集CT图像上进行训练,发现TransUNet的性能并没有很好,是不如UNet的。TransUNet的dice是0.8171,而UNet的dice是0.9488。TransUNet的泛化能力不是很好。

        以上是本人对TransUNet的理解,欢迎大家一起交流学习。

参考:经典网络ResNet介绍_fengbingchun的博客-CSDN博客

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

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

相关文章

【Java|golang】1105. 填充书架---动态规划

给定一个数组 books ,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelfWidt…

PCL点云库(1) — 简介与数据类型

目录 1.1 简介 1.2 PCL安装 1.2.1 安装方法 1.2.2 测试程序 1.3 PCL数据类型 1.4 PCL中自定义point类型 1.4.1 增加自定义point的步骤 1.4.2 完整代码 1.1 简介 来源:PCL(点云库)_百度百科 PCL(Point Cloud Library&…

Vue组件间通信的7种方法(全)

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 组件之前的通信方法 1. props/$emit 父传子 props 这个只能够接收父组件传来的数据 不能进…

6.4 一阶方程组与高阶方程的数值解法

学习目标: 学习一阶方程组与高阶方程的数值解法的目标可以分为以下几个方面: 掌握一阶方程组和高阶方程的基本概念和求解方法;理解数值解法的概念和原理,了解常见的数值解法;掌握欧拉方法、改进欧拉方法和龙格-库塔方…

Viu联合华为HMS生态,共创影音娱乐新体验

华为HMS生态携手流媒体平台Viu,为海外消费者打造精品移动娱乐应用体验,并助力提升流量变现能力。Viu在中东非、东南亚等16个国家及地区提供广告合作和付费会员服务,支持优质视频内容高清点播和直播。自2019年起,Viu在中东非区域与…

Windows下版本控制器(SVN)-TortoiseSVN使用

文章目录 基础知识-Windows下版本控制器(SVN)3.4 TortoiseSVN使用3.4.1 SVN检出(SVN Checkout)3.4.2 SVN更新(SVN Update)3.4.3 **SVN**提交(SVN Commit)3.4.4 **SVN**还原(SVN Revert)3.4.5 解决文件冲突3.4.6 授权访问3.4.7 **显示日志(Show log)**3.4.8 **版本库浏览(Repo-b…

Java项目上线之服务器环境配置篇(二)——Tomcat配置

Java项目上线之服务器环境配置篇(二)——Tomcat配置 Tomcat的选择: 云服务器tomcat的选择最好与本机项目运行的tomcat版本号一致,避免一些不必要的问题。 配置步骤: 1、首先进入云服务器创建好放置tomcat的文件夹。这…

台灯发光方式哪种好?分享好用侧发光的护眼台灯

台灯发光方式主要是侧发光、直发光方式。个人觉得侧发光的台灯会比较好。 侧发光灯主要利用导光板技术,根据led灯板灯珠的排布以及灯珠的发光角度进行导光板网点设计,使光线通过导光板达到亮度均匀化的效果。 而直发光灯以高亮度led为发光源&#xff0…

手势语言识别模型训练及应用

使用训练集训练模型,使模型能够识别不同手势。 OpenCV-Python环境使用训练集训练模型,使模型能够识别不同手势。系统测试 本项目基于卷积神经网络,通过Python的翻转功能沿垂直轴翻转每个图像,实现手势语言识别的功能。系统流程如图…

FL Studio21最新中文版安装包下载操作教程

FL Studio21是一款非常流行的数字音频工作站(DAW)软件,用于音乐制作、录音、调整和混音。它由Image-Line公司开发,前身叫FruityLoops,后改名为FL Studio。 FL Studio21的主要功能包括: 1. MIDI编序器:用于录入和编辑MIDI音序,控制软件乐器和外部硬件。 2. 虚拟乐器:提供各种模…

matrix部署

一、环境描述 首先matrix是一个去中心化的聊天服务,matrix实现了端对端的加密,这意味着不仅其他人无法查看你的聊天内容,哪怕你更换了一个终端,你也需要私钥才能够查看你的聊天记录。 这是终极的隐私保护方案,因为一旦…

【Python_Matplotlib学习笔记(二)】Matplotlib绘图嵌入PySide2图形界面

Matplotlib绘图嵌入PySide2图形界面 前言正文1、FigureCanvasQTAgg类介绍2、基于FigureCanvasQTAgg类实现Matplotlib绘图嵌入PySide2图形界面3、示例代码及实现效果 前言 在本文中主要介绍 如何基于 FigureCanvasQTAgg 类实现 Matplotlib 绘图嵌入 PySide2 图形界面。 正文 …

全栈工程师的职业前景及就业环境情况说明

本篇文章主要讲解全栈工程师的职业前景和就业趋势。 作者:任聪聪 日期:2023年4月20日 全栈工程师顾名思义就是会一个技术栈领域的所有客户端技术,如web全栈即前后端技术栈都会的工程师,如web、pc、app都会的则也是全栈&#xff08…

电脑清理C盘记录

从30几G扩大到了50G。 进行了虚拟内存的移动。 来自C盘清理最全攻略,用这几招轻松解决,不存在C盘爆红 我就使用系统管理的大小没有更改了,这也方便改回去叭。 可能会出现警告,不用管。 把桌面移动到了D盘。 文件夹桌面右键属性…

初识Android内存优化

一、简介 Android 内存优化是指优化 Android 应用程序的内存使用,以减少可用内存的消耗,提高应用程序的性能和可靠性。Android 内存优化可以通过减少内存使用量,减少对资源的消耗,以及提高内存利用率来实现。 安卓系统对每个应用…

【音视频第16天】详解STUN协议

一个webRTC传输协议搞得自己云里雾里的。现在主动攻克一下。先看看STUN协议。好,我们开始吧 目录 1.讲讲什么是NAT?2.NAT有啥问题?3.四种NAT类型4.STUN Server5.TURN ServerSTUN和TURN的实现:什么是STUN?为什么需要ST…

中台产品经理02:产品经理如何用一套方法搞定复杂业务拆解?

如果你问我作为企业级应用的产品经理日常工作最大的感受是什么?那就是经常会需要面对众多复杂类业务需求。 原因其实很好理解,B端产品通常需要支持更复杂的业务流程,需求也更加个性化和细分。例如,银行业务系统、医院管理系统、物…

JVM中的垃圾回收概念及其基础算法说明

文章目录 一、 垃圾回收概述1、什么是垃圾?2、为什么我们需要GC 二、垃圾回收之判别对象死活1、标记阶段:引用计数算法2、标记阶段:可达性分析算法 二、 finalization 机制三、整理和清除对象1、标记-清除算法(Mark-Sweep&#xf…

Selenium安装及环境配置

目录 一、Selenium 简介1. 组件2. 特点 二、安装Selenium✨三、下载对应版本的Chromedriver1.查看Chrome的版本号2.下载驱动 chromedriver和配置3.解压到本地4.复制文件放入python安装目录的Scripts文件夹中5.Selenium启动Chrome 一、Selenium 简介 1. 组件 Selenium IDE&…

【Few Shot数据集】CUB-200-2011 鸟类

文章目录 一、数据下载二、数据介绍3.1 图案示意3.2 标注属性 CUA-200-2011 是CUB-200的拓展,包含了200个鸟类,共11788张图片,每张图片都标注了物体的框、关键点和属性类别,常被用于小样本细粒度图像分类或者检测任务中。 一、数据…