5.23.9 TransUNet:Transformers 为医学图像分割提供强大的编码器

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

1. 介绍

U-Net 由对称的编码器-解码器网络组成,具有跳跃连接以增强细节保留,已成为事实上的选择。基于这种方法,在广泛的医学应用中取得了巨大的成功,例如磁共振(MR)的心脏分割、计算机断层扫描(CT)的器官分割和息肉从结肠镜检查视频中分割。

与之前基于 CNN 的方法不同,Transformers 不仅在建模全局上下文方面功能强大,而且在大规模预训练下也表现出了对下游任务的卓越可迁移性。

Transformer 将输入视为一维序列,并专门专注于对所有阶段的全局上下文进行建模,因此导致低分辨率特征缺乏详细的本地化信息。并且该信息无法通过直接上采样到全分辨率来有效恢复,因此会导致粗分割结果。另一方面,CNN 架构(例如 U-Net )提供了一种提取低级视觉线索的途径,可以很好地弥补这种精细的空间细节。

1.1 TransUNet

该框架从序列到序列预测的角度建立了自注意力机制。为了弥补Transformers带来的特征分辨率损失,TransUNet采用了混合CNN-Transformer架构,既利用了来自CNN特征的详细高分辨率空间信息,也利用了Transformers编码的全局上下文。

Transformers编码的自注意力特征随后被上采样,与编码路径中跳过的不同高分辨率CNN特征相结合,以实现精确定位。与以前基于CNN的自注意力方法相比,我们基于Transformer的架构提供了一种更好的利用自注意力的方法。此外,我们观察到,更深入地结合低级特征通常会带来更好的分割精度。

2. 相关工作

2.1 将 CNN 与自注意力机制相结合

尝试通过基于特征图对所有像素的全局交互进行建模,将自注意力机制集成到 CNN 中。基于编码器-解码器 u 形架构,提出了集成到跳跃连接中的附加注意门模块。与这些方法不同的是,我们使用 Transformer 将全局自注意力嵌入到方法中。

2.2 Transformers

Vision Transformer (ViT) 通过直接将具有全局自注意力的 Transformer 应用于全尺寸图像,实现了 ImageNet 分类的最先进技术。

3. 方法

给定图像 \mathbf{x}\in\mathbb{R}^{H\times W\times C},空间分辨率为 H × W,通道数为 C。目标是预测相应的大小为 H × W 的像素级标签图。最常见的方法是直接训练 CNN(例如 UNet),首先将图像编码为高级特征表示,然后将其解码回全空间分辨率。

与现有方法不同,提出的方法通过使用 Transformer 将自注意力机制引入编码器设计中。

3.1 Transformer 作为编码器

图像序列化

我们首先通过将输入 x 重塑为一系列扁平化的 2D 补丁 \mathbf{x}_{p}^{i}\in\mathbb{R}^{P^2\cdot C}|i=1,...,N 来执行标记化; 其中每个补丁的大小为 P\times PN=\frac{HW}{P^2} 是图像补丁的数量(即输入序列长度)。

补丁嵌入

使用可训练的线性投影将矢量化补丁 x_p 映射到潜在的 D 维嵌入空间。为了对补丁空间信息进行编码,我们学习特定位置嵌入,将其添加到补丁嵌入中以保留位置信息。

 \mathbf{z}_{0}=[\mathbf{x}_{p}^{1}\mathbf{E}; \mathbf{x}_{p}^{2}\mathbf{E};\cdots; \mathbf{x}_{p}^{N}\mathbf{E}]+\mathbf{E}_{pos}

其中 \mathbf{E}\in\mathbb{R}^{(P^{2}\cdot C)\times D} 是块嵌入投影,\mathbf{E}_{pos}\in\mathbb{R}^{N\times D} 表示位置嵌入。

Transformer 编码器由 L 层多头自注意力 (MSA) 和多层感知器 (MLP) 块组成。因此第 \ell 层的输出可以写成如下:

\mathbf{z}_{\ell}^{\prime}=\mathrm{MSA}(\mathrm{LN}(\mathbf{z}_{\ell-1}))+\mathbf{z}_{\ell-1}

\mathbf{z}_{\ell}=\mathrm{MLP}(\mathrm{LN}(\mathbf{z}_{\ell}^{\prime}))+\mathbf{z}_{\ell}^{\prime} 

 其中 LN(·) 表示层归一化算子,\mathbf{z}_L 是编码图像表示。

3.2 TransUNet

出于分割目的,直观的解决方案是简单地将编码特征表示 \mathbf{z}_{L}\in\mathbb{R}^{\frac{HW}{P^{2}}\times D} 上采样到全分辨率,以预测密集输出。为了恢复空间顺序,编码特征的大小首先应从 \frac{HW}{P^{2}} 到 \frac{H}{P}\times\frac{W}{P} 。使用 1 × 1 卷积将重构特征的通道大小减少到类数,然后将特征图直接双线性上采样到全分辨率 H × W 以预测最终的分割结果。

因为 \frac{H}{P}\times\frac{W}{P} 通常远小于原始图像分辨率 H \times W,因此不可避免地会导致低级细节的丢失(例如器官的形状和边界)。为了补偿这种信息损失,TransUNet 采用混合 CNN-Transformer 架构作为编码器以及级联上采样器来实现精确定位。

CNN-Transformer 混合作为编码器

TransUNet 采用 CNN-Transformer 混合模型,其中 CNN 首先用作特征提取器,为输入生成特征图。补丁嵌入应用于从 CNN 提取的特征图而不是原始图像中提取的 1 × 1 补丁。

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

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

级联上采样器

级联上采样器(CUP),它由多个上采样步骤组成,用于解码隐藏特征以输出最终的分割掩模。将隐藏特征 \mathbf{z}_{L}\in\mathbb{R}^{\frac{HW}{P^{2}}\times D} 的序列重塑为 \frac{H}{P}\times\frac{W}{P}\times D 的形状后,通过级联多个上采样块来实例化 CUP,以达到从 \frac{H}{P}\times\frac{W}{P}H \times W 的全分辨率,其中每个块依次由2×上采样算子、3×3卷积层、ReLU层组成。CUP 与混合编码器一起形成了一个 u 形架构,可以通过跳跃连接实现不同分辨率级别的特征聚合。

4. 实验与讨论

4.2 实验细节

输入分辨率和块大小P设置为224×224和16。因此,我们需要在 CUP 中连续级联 4 个 2× 上采样块才能达到全分辨率。模型使用 SGD 优化器进行训练,学习率为 0.01,动量为 0.9,权重衰减为 1e-4。 

以逐片方式推断所有 3D 体积,并将预测的 2D 切片堆叠在一起以重建 3D 预测以进行评估。

4.5 可视化

  1. 纯基于 CNN 的方法 U-Net 和 AttnUNet 更容易对器官进行过度分割或分割不足(例如,在第二行中,脾脏被 AttnUNet 过度分割,而被 UNet 分割不足)
  2. 与其他方法相比,我们的 TransUNet 预测的假阳性更少,这表明 TransUNet 在抑制那些噪声预测方面比其他方法更有利。
  3. 与基于 Transformer 的模型进行比较,我们可以观察到,R50-ViT-CUP 在边界和形状方面的预测往往比 TransUNet 的预测更粗糙。
  4. TransUNet 能够进行更精细的分割并保留详细的形状信息。原因是 TransUNet 享有高级全局上下文信息和低级细节的优势。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx-负载均衡

Nginx 简介 Nginx概述 Nginx ("engine x")是一个高性能的HTTP和反向代理服务器特点是占有内存少,并发能力强,事实上nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪…

若依微服务整合knife4j

在Spring Cloud的微服务架构下&#xff0c;每个微服务并不需要引入前端的ui资源&#xff0c;因此在每个微服务的Spring Boot项目下&#xff0c;引入ruoyi-common-swagger提供的starter即可。 1、在ruoyi-gateway网关模块下&#xff0c;把knife4j依赖资源引入 <!-- knife4j…

Html基础笔记

Html超文本标记语言 (HyperText Markup Language) 超文本 指的是网页中可以显示的内容(图片,超链接,视频,) 标记语言 标记–>标签(标注) 例如:买东西的时候—>商品具有标签,看到标签就知道商品的属性(价格,材质,型号等,) 标记语言就是提供了很多的标签,不同的标签…

CSS基础(第二天)

Emmet语法 快速生成HTML结构语法 1. 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多个相同标签 加上 * 就可以了 比如 div*3 就可以快速生成3个div 3. 如果有父子级关系的标签&#xff0c;可以…

CGAN|生成手势图像|可控制生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 CGAN&#xff08;条件生成对抗网络&#xf…

影视解说5.0版零基础视频课程

课程简介 现在还能做解说吗、不会写解说文案怎么解决、不会配音怎么解决、如何找到合适的素材资源、如何变现…这是很多想做解说的伙伴最关心的几大问题。比如文案&#xff0c;我们推荐一个网站&#xff0c;10分钟搞定一篇文案&#xff0c;配音可以真人配音也可以软件配音。5.…

代码随想录算法训练营第三天| 203.移除链表元素、 707.设计链表、 206.反转链表

203.移除链表元素 题目链接&#xff1a; 203.移除链表元素 文档讲解&#xff1a;代码随想录 状态&#xff1a;没做出来&#xff0c;做题的时候定义了一个cur指针跳过了目标val遍历了一遍链表&#xff0c;实际上并没有删除该删的节点。 错误代码&#xff1a; public ListNode re…

Leecode热题100---45:跳跃游戏②

题目&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。 返回到达 nums[n - 1] 的最小跳跃次数。 思路&#xff1a; 如果某一个作为 起跳点 的格子可以跳跃的距离是 3&#xff0c;那么表示后面…

127.数据异构方案

文章目录 前言一、数据异构的常用方法1. 完整克隆2. MQ方式3. binlog方式 二、MQ与Binlog方案实现MQ方式binlog方式注意点 三、总结 前言 何谓数据异构&#xff1a;把数据按需&#xff08;数据结构、存取方式、存取形式&#xff09;异地构建存储。比如我们将DB里面的数据持久化…

【源码分享】简单的404 HTML页面示例,该页面在加载时会等待2秒钟,然后自动重定向到首页

展示效果 源码 html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>404 页面未找到</title><meta http-equiv"refresh" content"2;url/"> <!-- 设置2秒后跳转到首…

适合小白入门的AI扩图(创成式填充)工具

近期&#xff0c;发现许多人对AI扩图工具的需求比较大&#xff0c;为了满足大家的需求&#xff0c;本期天祺为大家整理了一些好用的AI扩图工具&#xff0c;各个设配的扩图工具都有介绍哦&#xff0c;电脑&#xff0c;手机端都能用&#xff0c;大家可以根据自己的喜好和需求进行…

1075: 求最小生成树(Prim算法)

解法&#xff1a; 总结起来&#xff0c;Prim算法的核心思想是从一个顶点开始&#xff0c;一步一步地选择与当前最小生成树相邻的且权值最小的边&#xff0c;直到覆盖所有的顶点&#xff0c;形成一个最小生成树。 #include<iostream> #include<vector> using names…

Kubernetes 应用滚动更新

Kubernetes 应用版本号 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 对象&#xff0c;而是两个命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;当然它们也要搭配部署应用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里应用都是以 …

力扣HOT100 - 169. 多数元素

解题思路&#xff1a; 有点类似于Boyer-Moore 投票算法&#xff0c;但更加形象。 class Solution {public int majorityElement(int[] nums) {int winner nums[0];int cnt 1;for (int i 1; i < nums.length; i) {if (winner nums[i]){cnt;} else if (cn…

Redis每月运维

为防止redis自动aof缩放失败 每月手动执行一次重写命令 bgrewriteaof 方式一&#xff1a; redis-cli 连接到每个服务器 认证后执行bgrewriteaof 示例 方式二&#xff1a; 通过工具连接到redis 执行命令 方式三: 定时任务系统 在定时任务系统里每天自动执行gocron - 定时任务…

基于transformers框架实践Bert系列5-阅读理解(文本摘要)

本系列用于Bert模型实践实际场景&#xff0c;分别包括分类器、命名实体识别、选择题、文本摘要等等。&#xff08;关于Bert的结构和详细这里就不做讲解&#xff0c;但了解Bert的基本结构是做实践的基础&#xff0c;因此看本系列之前&#xff0c;最好了解一下transformers和Bert…

基于SpringBoot和Hutool工具包实现的验证码案例

目录 验证码案例 1. 需求 2. 准备工作 3. 约定前后端交互接口 需求分析 接口定义 4. Hutool 工具介绍 5. 实现验证码 后端代码 前端代码 6. 运行测试 验证码案例 随着安全性的要求越来越高&#xff0c;目前项目中很多都会使用验证码&#xff0c;只要涉及到登录&…

一个用Java编写的屏幕测距工具,包括游戏地图测量功能

该程序提供了一个简单便捷的方式&#xff0c;在屏幕上测量距离&#xff0c;包括游戏地图分析在内。它允许用户准确确定屏幕上两点之间的距离&#xff0c;帮助游戏过程中的战略规划、资源管理和决策制定。 特点&#xff1a; 简单易用的界面&#xff1a;直观的控制使测量距离变得…

Marin说PCB之POC电路layout设计仿真案例---03

今天天中午午休的时候&#xff0c;我刚要打开手机的准备刷抖音看无忧传媒的学生们的“学习资料”的时候&#xff0c;看到CSDN -APP上有提醒&#xff0c;一看原来是一位道友发的一个问题&#xff1a; 本来小编最近由于刚刚从国外回来&#xff0c;手上的项目都已经结束了&#xf…

MQTT到串口的转发(node.js)

本文针对以下应用场景&#xff1a;已有通过串口通信的设备或软件&#xff0c;想要实现跨网的远程控制。 node.js安装 从 Node.js — Run JavaScript Everywhere下载LTS版本安装包&#xff0c;运行安装程序。&#xff08;傻瓜安装&#xff0c;按提示点击即可&#xff09; 设置环…