论文研读:Transformers Make Strong Encoders for Medical Image Segmentation

论文:TransUNet:Transformers Make Strong Encoders for Medical Image Segmentation

目录

Abstract

Introduction

Related Works 

各种研究试图将自注意机制集成到CNN中。

Transformer

Method

Transformer as Encoder

图像序列化

Patch Embedding

TransUNet

CNN-Transformer Hybrid as Encoder

级联上采样

Experiments and Discussion

数据集和评估

消融实验 

skip-connection的消融实验

输入分辨率的消融实验

序列长度和补丁大小的消融实验

模型缩放的消融实验

可视化

Conclusion 


Abstract

在深度学习医学图像分割领域,UNet结构一直以来都牢牢占据着主导地位,并取得了巨大的成功。然而,由于卷积操作的固有局部性,U-Net通常在远程依赖方面表现出局限性。Transformer是为序列到序列的预测而设计的,已经成为具有固有全局自注意力机制的替代架构,但由于缺乏低级细节,可能导致定位能力有限。

在本文中,作者提出了TransUNet,它兼有transformer和U-Net的优点,作为医学图像分割的强大替代方案。一方面,Transformer对来自卷积神经网络(CNN)特征映射的标记化图像patches进行编码,作为提取全局上下文的输入序列。另一方面,解码器对编码特征进行采样,然后将其与高分辨率CNN特征图相结合,以实现精确的定位。

Introduction

卷积网络的兴起,促进了图像领域的进步。并且广泛应用于图像分类任务,但是在一些特定场景,如生物医学图像处理领域,通常是需要像素级的分类任务,也就是图像分割任务。

生物医学图像的特点:

1、图像语义较为简单,结构较为固定;

2、数据量少;

3、可解释性重要。

Unet是一个包含4层下采样、4层上采样以及一个类似跳跃连接结构的全卷积网络。数据先经过传统的特征提取路径来获取语义信息,将图像压缩为由特征组成的特征图,然后再经过特征复原路径来精准定位,将提取的特征解码为与原始图像尺寸一样的分割后的预测图像。

6721bdddac6a429c9670e820c2285254.png

Encoder左半部分,由两个3x3的卷积层(RELU)再加上一个2x2的max pooling层组成一个下采样的模块;

Decoder右半部分,由一个上采样的卷积层(去卷积层)+特征拼接concat+两个3x3的卷积层(ReLU)反复构成;这种通过通道数的拼接,可以得到更多的特征。

Related Works 

各种研究试图将自注意机制集成到CNN中。

卡内基梅隆大学的王小龙等人设计了一个非局部算子,可插入多个中间卷积层。 

Schlemper等人在编码器-解码器u型架构的基础上,提出了集成到跳过连接中的附加注意门模块。

与这些方法不同的是,作者使用了transformer来嵌入全局自注意力机制。

Transformer

Transformer被提出用于机器翻译,并在许多NLP任务中建立了最先进的状态。为了使Transformer也适用于计算机视觉任务,进行了一些修改。

Parmar等对每个查询像素仅在局部邻域应用自注意,而不是全局应用。

Child等人提出了稀疏transformer,它采用可扩展的近似全局自注意力。

最近,Vision Transformer (ViT)通过直接将具有全局自注意力的Transformer应用于全尺寸图像,实现了最先进的ImageNet分类。据我们所知,TransUNet是第一个基于transform的医学图像分割框架,它建立在非常成功的ViT之上。

Method

Transformer as Encoder

图像序列化

首先通过将输入eq?X属于eq?R%5E%7BH*W*C%7D,给定图像其空间分辨率为H*W,通道数为C。用eq?P%5Ctimes%20P大小的切片去分割图片可以得到N个切片(N=eq?%5Cfrac%7BH%5Ccdot%20W%7D%7BP%5E%7B2%7D%7D是图像切片的数量,即输入序列长度),那么每个切片的尺寸就是P∗P∗C,形成二维的序列,转化为向量,将N个切片重组后向量连接就可以得到𝑁𝑃𝑃𝐶(总的输入变换)的二维矩阵。

1ebab9731a1b4dd0a5240b3f0588e504.png

Patch Embedding

需要注意,作者最后进行Patch Embeding的输入并不是图像序列化,而是CNN提取到的特征;

切片𝑥𝑝x_p通过线性投影( linear projection)映射到D维的嵌入空间,为了对patch空间信息进行编码,我们学习特定的位置嵌入,并将其添加到patch嵌入中以保留位置信息,方法如下:

eq?z_%7B0%7D%3D%5Bx_%7Bp%7D%5E%7B1%7D%3Bx_%7Bp%7D%5E%7B2%7D%3B...%3Bx_%7Bp%7D%5E%7BN%7DE%5D+E_%7Bpos%7D

其中eq?E为嵌入投影, eq?E_%7Bpos%7D为位置投影

0fc24c7afba7463ca6209135e197df61.png

Tranformer编码器由L层多头自注意(MSA)和多层感知器(MLP)块(等式)组成

51b2f1946dc94d1082cb0f512ad2f6ad.png

eq?z_%7Bl%7D%5E%7B%7B%7D%27%7D%3DMSA%28LN%28z_%7Bl-1%7D%29%29+z_%7Bl-1%7D

eq?z_%7Bl%7D%3DMLP%28LN%28z_%7Bl%7D%5E%7B%7B%7D%27%7D%29%29+z_%7Bl%7D%5E%7B%7B%7D%27%7D%2C

式中LN(·)为层归一化算子,eq?z_%7Bl%7D为编码后的图像表示。

TransUNet

transformer作为encoder部分,对transformer后的编码特征是eq?%5Cfrac%7BH%5Ccdot%20W%7D%7BP%5E%7B2%7D%7D*D,为了恢复空间信息,将eq?%5Cfrac%7BH%5Ccdot%20W%7D%7BP%5E%7B2%7D%7D*D恢复至eq?%5Cfrac%7BH%7D%7BP%7D*%5Cfrac%7BW%7D%7BP%7D*D,然后使用U-Net的decoder部分,上采样恢复分辨率至eq?H*W。虽然也能产生合理的结果,但结果比较粗糙,缺少高分辨率的细节信息。也就是说此时的结构不是transformer的最佳应用,因为通常eq?%5Cfrac%7BH%7D%7BP%7D*%5Cfrac%7BW%7D%7BP%7Deq?H*W小很多,分辨率在恢复至eq?H*W过程中,不可避免导致定位信息的损失。为了弥补这种定位细节信息的损失,作者继续提出了CNN-Transformer的混合结构。

CNN-Transformer Hybrid as Encoder

TransUNet不是使用纯Transformer作为编码器,而是使用CNN-Transformer混合模型,其中CNN首先用作特征提取器,为输入生成特征映射。Patch embedding是对CNN feature map中提取的1 × 1的Patch进行嵌入,而不是对原始图像进行嵌入。

0634afa313bc4007b883a92e548cd42e.png

我们选择这种设计是因为:

1)它允许我们在解码路径中利用中间高分辨率CNN特征图;

2)我们发现混合CNN-Transformer编码器比简单地使用纯Transformer作为编码器性能更好。

级联上采样

作者引入了一个级联上采样器(CUP),它由多个上采样步骤组成,用于解码隐藏特征以输出最终的分割掩码。在将隐藏特征eq?z_%7BL%7D%5Cmathbb%7BC%7DR%5E%7B%5Cfrac%7BHW%7D%7BP%5E%7B2%7D%7D*D%7D的序列重塑为eq?%5Cfrac%7BH%7D%7BP%7D*%5Cfrac%7BW%7D%7BP%7D*D的形状后,我们通过级联多个上采样块来实例化CUP,以达到从eq?%5Cfrac%7BH%7D%7BP%7D*%5Cfrac%7BW%7D%7BP%7Deq?H*W的全分辨率,其中每个块依次由上采样算子、3×3卷积层和ReLU层组成。

a334689ad71a4486beaa4685db4c75c8.png

整体TransUNet框图如下图所示

58f517ae92174203be9000144120c81a.png

Experiments and Discussion

数据集和评估

Synapse multi-organ segmentation dataset(Synapse多器官分割数据集)腹部CT扫描 (30次腹部CT扫描 总共有3779张轴向增强腹部临床CT图像)报告了8个腹部器官的平均Dice和平均豪斯多夫距离(HD),随机分为18个训练病例(2212个轴向切片)和12个验证病例。

bb889614a50c404a8dcad9666354555d.png Automated cardiac diagnosis challenge心脏CMR(心脏核磁)一系列短轴切片从左心室底部到顶部覆盖心脏,切片厚度为5至8毫米。短轴平面内空间分辨率从0.83到1.75 mm^2/pixel。每个患者扫描都用手工标注了左心室(LV)、右心室(RV)和心肌(MYO)。报告了平均Dice,随机分为70个训练病例(1930个轴向切片),10个用于验证,20个用于测试。 

ee600ae6148d47d6b7683634ad8a8c34.png

消融实验 

为了彻底评估TransUNet框架并验证其在不同设置下的性能,进行了各种消融研究

包括:1)跳过连接数;2)输入分辨率;3)序列长度和补丁大小;4)模型缩放。

skip-connection的消融实验

首先做了skip-connection的消融实验,可以明显看出3层跳跃连接的DSC更高,代表着跳跃连接的增加对模型是有益的。

e74bb99ef13f4b0183c9ef67177ee473.png

输入分辨率的消融实验

作者测试了224×224分辨率和512×512分辨率的DSC,发现512×512分辨率图像作为输入获得了更高的DSC,但是处于性能考虑,还是选择了224×224进行后续测试。

7b60efb86f094504abf9f06e2d4d1cd7.png

序列长度和补丁大小的消融实验

较小的patch尺寸可以获得较高的分割性能。

Transformer的序列长度与补丁大小的平方成反比

b9a17daaa863421db76251a58406c334.png

模型缩放的消融实验

最后,我们对不同模型尺寸的TransUNet进行了消融实验。作者研究了两种不同的TransUNet配置, “Base”和“Large”模型。对于“Base”模型,隐藏大小D、层数、MLP大小和头部数量分别设置为12、768、3072和12;而“Large”模型的这些超参数分别设置为24、1024、4096和16。从表4我们得出结论,更大的模型导致更好的性能。考虑到计算成本,所有实验均采用“Base”模型。 01012daaee874c839fc482bd701c4cc3.png

可视化

作者还进行可视化比较,从图中可以看出TransUnet的分割更为精细,错误率更低。

309ee6f3eaf44bef9e2fb0da5415f357.png

Conclusion 

TransUNet是率先将Transformer结构用于医学图像分割工作的研究。TransUNet将重视全局信息的Transformer结构和底层图像特征的CNN一起进行混合编码,能够更大程度上提升UNet的分割效果。Transformer是一种天生具有强大自注意机制的结构。在这篇论文中,作者研究Transformer在一般医学图像分割中的应用。为了充分利用Transformer的力量,提出了TransUNet,它不仅将图像特征作为序列来编码强全局上下文,还通过Unet混合网络设计来很好地利用低层CNN特征。TransUNet可作为一种替代框架用于医学图像分割,其性能优于各种竞争方法,包括基于cnn的自注意力方法。本文为了完整的应用transformer,提出了TransUNet, 不仅通过将图像以序列处理编码全局上下文信息,也通过使用U型结构将低层次CNN特征利用上,作为基于FCN的主流医学图像分割方法的替代框架,在医学图像分割上(包括多器官分割和心脏分割)上均比各种竞争方法(像基于CNN的自注意方法)具有更优的表现。

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

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

相关文章

特殊数据类型

目录 记录类型 定义一个记录类型 myrecord_type,用于存储 emp 数据表中的员工姓名和职务 %TYPE 类型 定义一个变量,存储数据表 emp 中编号为 7369 的员工姓名,并且显示出结果 %ROWTYPE 类型 声明一个用于存储 emp 数据表中每行记录的变…

【力扣hot100】160.相交链表

相交链表 给你两个单链表的头节点 headA和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回…

牛客练习赛123 A~C

A.炸鸡块哥哥的粉丝题 输出字符串的前 ⌈ n 2 ⌉ \lceil \frac{n}{2} \rceil ⌈2n​⌉ 个字符 void solve() {int n;string s;cin >> n >> s;cout << s.substr(0, (n 1) / 2); }B.智乃想考一道鸽巢原理 当小球总个数为奇数时&#xff0c;贪心的留下 1 个…

天梯算法Day3整理

浮点数解析 炸鱼题掠过 冲突值 题面 解析 方法一 —— 并查集 按照边值排序&#xff0c;然后按边值从大到小遍历&#xff0c;通过并查集判断能否将所有点无冲突地归于两个集合。在判断时&#xff0c;若有两个点不得不产生冲突&#xff0c;则输出这两个点之间的边值并结束。…

LeetCode Python - 81. 搜索旋转排序数组 II

目录 题目描述解法运行结果 题目描述 已知存在一个按非降序排列的整数数组 nums &#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转 &#xff0c;使数组变为 […

好用还平价的挂耳式耳机有哪些?五款超平价品牌测评推荐

在数字化时代&#xff0c;耳机已经成为我们日常生活中不可或缺的一部分。而开放式耳机作为一种新兴趋势&#xff0c;以其独有的开放性设计和卓越的音质表现&#xff0c;正在悄然改变着人们的听音习惯。不同于传统的耳机产品&#xff0c;开放式耳机让音乐与外界环境相得益彰&…

我暂停了我的博士学位,尝试了一些不同的东西,然后带着一个新的视角回来了

警报在我耳边响起。静音后&#xff0c;我躺在床上&#xff0c;盯着天花板又看了30分钟。我继续攻读博士学位的动力正在减弱&#xff0c;这使得我越来越难以站起来&#xff0c;面对每一个新的疲惫的日子。我意识到&#xff0c;在我的计划剩下的 2 年里继续奋斗将冒着完全倦怠和崩…

4.C#对接微信Native支付(调用支付下单生成二维码接口)

在完成了前边几篇文章的操作后&#xff0c;我们接下来需要写实际的业务接口。调用微信的native下单接口。 手先看下官网的api文档&#xff0c;https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml 大概的流程是&#xff1a;商户后台系统先调用微信支付的Nativ…

Matlab与数学计算

原文地址&#xff1a;Matlab与数学计算 - Pleasure的博客 下面是正文内容&#xff1a; 前言 这是一篇笔记。主要用于介绍MatLab的作用以及其作为数学工具的使用方法。 目的是总结学校课件复习自用&#xff0c;但是不可能像相关的书籍那么系统全面&#xff0c;力求简单明了。都…

pygame用自带函数绘制三角形 计算重心坐标

三角形重心坐标公式 三角形重心的坐标可以通过其三个顶点的坐标计算得出&#xff0c;公式为((X1X2X3)/3,(Y1Y2Y3)/3)。12 这是因为在平面直角坐标系中&#xff0c;重心的坐标是顶点坐标的算术平均数 中间黑点是重心坐标 import pygame from pygame.locals import * import sy…

scanf/fscanf/sscanf和printf/fprintf/sprintf的使用和对比

一&#xff1a;函数的对比 scanf&#xff1a;从标准输入流中读取格式化数据&#xff08;通常是键盘&#xff09; printf&#xff1a;将格式化数据输出到标准输出流&#xff08;通常是屏幕&#xff09; fscanf&#xff1a;适用于所有输入流的格式化输入函数&#xff08;一般从…

网络安全入门 5 天速成教程_ WEB 安全渗透攻防技术

前言 随着 Web 技术发展越来越成熟&#xff0c;而非 Web 服务越来越少的暴露在互联网上&#xff0c;现在互联网安全主要指的是 Web 安全。 为了自身不“裸奔”在大数据里&#xff0c;渐渐开始学习 Web 安全&#xff0c;在学习 Web 安全的过程中&#xff0c;发现很大一部分知识…

Codeforces Round 838 (Div. 2) D. GCD Queries

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

实验室开放项目实验报告-01

实验室开放项目实验报告 实验名称&#xff1a;实验一输入输出格式 实验目的&#xff1a;熟练掌握程序设计竞赛中通常采用的输入输出格式和掌握不同格式输入输出数据的处理方法 实验内容&#xff1a; 在本地电脑中新建一个文件夹&#xff0c;用于存放C源程序&#xff0c;文件…

【进程OI】基本文件操作的系统调用

文章目录 前言open参数flags参数mode writereadclose 前言 当用户想要向磁盘中的文件读写数据&#xff0c;就必须要得到操作系统的允许。同样&#xff0c;操作系统为了能让用户去对文件进行打开、读写、关闭等操作&#xff0c;向上提供了相应的系统调用的接口。C、JAVA、C等语…

27. UE5 RPG同步面板属性(三)

在前两篇中&#xff0c;我们在C中实现了对GameplayTag的创建&#xff0c;并且创建DataAsset存储数据&#xff0c;按照之前的规划&#xff1a; 首先我们需要通过c去实现创建GameplayTag&#xff0c;这样可以在c和UE里同时获取到Tag创建一个DataAsset类&#xff0c;用于设置tag对…

2024/3/29打卡 填充——贪心

目录 题目 思路 代码 先来说下什么时候使用贪心和动态规划&#xff1a; 一个题目当寻找答案的过程中有大约 2的指数级&#xff08; 2^n&#xff09;个方案的时候&#xff0c;可以考虑用贪心和动态规划问题&#xff08;其实&#xff0c;我现在还不知道什么时候用 dfs 和 动态…

深度学习pytorch——数据增强(持续更新)

背景介绍 大量的数据是防止过拟合的关键&#xff0c;但是我们如何去获取大量的数据&#xff0c;是自己去拍摄、录制吗&#xff1f;显然这种方式有极高的成本。我们可以对同一张图片进行变换得到多张图片&#xff0c;比如原来只有10张图片&#xff0c;通过变换变成了20张图片&a…

2023年第十四届蓝桥杯大赛软件类省赛C/C++研究生组真题(代码完整题解)

C题-翻转⭐ 标签:贪心 简述:如果 S 中存在子串 101 或者 010,就可以将其分别变为 111 和 000,操作可以无限重复。最少翻转多少次可以把 S 变成和 T 一样。 链接: 翻转 思路:要求步骤最少->S每个位置最多修改一次->从头开始遍历不匹配就翻转->翻转不了就-1 …

低代码平台与自动化软件开发的关系

引言 随着信息技术的不断发展&#xff0c;软件开发领域也在不断演进。在追求更高效、更快速的软件开发过程中&#xff0c;低代码平台和自动化软件开发技术日益受到关注。低代码平台以其可视化开发界面和快速构建应用的能力&#xff0c;为非专业开发人员提供了参与软件开发的机会…