AGILEFORMER:用于医学图像分割的空间敏捷 Transformer UNET

news2024/10/5 19:21:14

AGILEFORMER:用于医学图像分割的空间敏捷 Transformer UNET

  • 摘要
  • Introduction
  • Method
  • Deformable Patch Embedding
    • 2.1.1 Rigid patch embedding
    • 2.1.2 Deformable patch embedding
  • Spatially Dynamic Self-Attention
    • Deformable Multi-head Self-Attention (DMSA)
    • Neighborhood Multi-head Self-Attention (NMSA)
  • Multi-scale Deformable Positional Encoding

AGILEFORMER: SPATIALLY AGILE TRANSFORMER UNET FOR MEDICAL IMAGE SEGMENTATION

摘要

在过去的几十年中,深度神经网络,尤其是卷积神经网络,已经在各种医学图像分割任务中取得了最先进的表现。近年来,视觉Transformer(ViT)的引入显著改变了深度分割模型的格局。由于它们出色的性能和可扩展性,对ViTs的关注日益增加。然而,我们认为目前基于视觉Transformer的UNet(ViT-UNet)分割模型的设计可能无法有效地处理医学图像分割任务中感兴趣对象的异质外观(例如,不同的形状和大小)。

为了应对这一挑战,我们提出了一种结构化的方法,将空间动态组件引入到ViT-UNet中。这种适应使得模型能够有效地捕捉到具有不同外观的目标对象特征。这是通过以下三个主要组件实现的:

可变形的Patch嵌入;
空间动态的多头注意力;
可变形的位置编码。
这些组件被集成到一个称为AgileFormer的新颖架构中。AgileFormer是一个为医学图像分割设计的空间灵活的ViT-UNet。在三个分割任务中使用公开可用数据集进行的实验证明了所提出方法的有效性。

代码:https://github.com/sotiraslab/AgileFormer

Introduction

医学图像分割任务在现代医学中至关重要,因为它是许多基于图像的诊断和分析的第一步[1, 2]。基于深度学习的自动化分割方法由于其高效率和最先进的表现而在这一领域占据主导地位。其中,卷积神经网络(CNNs)[3, 4, 5, 6, 7, 8]自从UNet[3]提出以来已成为最流行的选择。这是因为CNN在处理图像驱动任务时具有固有的优势,例如它们捕捉局部性和平移不变性的能力。然而,它们主要由于受限的感受野而在捕捉全局语义方面存在困难。

相比之下,最近提出的视觉Transformer(ViT)[9]通过自注意力机制缓解了这个问题,该机制捕捉图像块之间的依赖关系,而不管它们的空间距离如何。首个基于ViT的UNet(ViT-UNet)医学图像分割模型结合了ViT编码器和CNN解码器,因此被称为TransUNet[1]。然而,TransUNet由于参数量巨大(约1亿)和计算复杂度较高而受到限制。

这是因为它采用了标准自注意力,其时间和内存复杂度与输入标记大小成二次关系。利用窗口注意力[10],它在所有图像块中对一个小窗口内的自注意力进行并行处理,SwinUNet[2]缓解了这一挑战,并且是第一个以自注意力作为主要特征提取器的纯ViT-UNet。然而,SwinUNet使用固定大小的窗口,这可能限制了其捕捉不同大小和形状目标对象的精确表示的能力。这可能限制了其在多类分割任务中的适应性和泛化能力。
在这里插入图片描述
此外,SwinUNet并没有表现出良好的扩展行为。换句话说,当增加模型大小时(如图1(a)所示),它们的性能并没有有效地扩展。这与使用自然图像的实证研究提供的证据形成对比,这些研究表明ViT表现出卓越的扩展行为。我们假设这一现象也可能归因于针对分割的目标对象在大小和形状上的异质性,这无法通过固定大小的窗口处理。

为了解决这些挑战,提高ViT-UNet的性能和可扩展性需要空间动态组件。尽管最近的工作已经探索将动态(例如,多尺度[11],可变形[12; 13])组件引入到医学成像的ViT-UNet中,但它们主要关注采用现有的可变形注意力。然而,它们没有研究将动态组件引入到ViT-UNet的其他部分(即,图像块嵌入和位置编码)。我们认为,增强这些其他部分的动态元素同样重要。关于AgileFormer如何从根本上与上述三篇工作不同,我们将在附录A中为读者提供深入讨论。

因此,我们开发了一种新颖的空间敏捷纯ViT-UNet,以捕捉医学图像分割任务中多样的目标对象。首先,我们用一种新颖的可变形图像块嵌入替换了ViT-UNet中的标准刚性正方形图像块嵌入。其次,我们采用空间动态自注意力[14]作为捕捉空间变化特征的建筑块。第三,我们提出了一种新颖的多尺度可变形位置编码,以在自注意力中建模不规则采样的网格。我们将这些动态组件集成到一个名为AgileFormer的新颖ViT-UNet架构中。广泛的实验证明了所提出方法在三个医学图像分割任务中的有效性。AgileFormer优于最近的医学图像分割领域的最先进的UNet模型,并展示了卓越的可扩展性。

Method

在本节中,我们提供了一个从标准SwinUNet到所提AgileFormer的路线图(见图1(b))。为了使本文内容自包含,我们首先简要介绍ViT-UNets中的基本要素。一个ViT-UNet(例如,SwinUNet)是一个带有跳跃连接的U形编码器-解码器网络,其中编码器和解码器的主要特征提取是通过自注意力机制实现的。标准ViT-UNet的构建块由三个基本组成部分组成:Patch嵌入、自注意力和位置编码。Patch嵌入将图像Patch投影到特征嵌入中。更近期的ViTs甚至将下采样(即在SwinUNet中的Patch合并)视为Patch嵌入的一部分。在本文中,我们将遵循相同的惯例。

自注意力,用于捕获图像Patch之间的依赖关系,用于主要特征提取。为了计算的可行性和局部性需求,最近的ViT-UNets使用基于窗口的自注意力机制。与卷积不同,自注意力丢弃了图像Patch之间的空间相关性,这阻碍了纯ViT在分割任务中的定位能力。位置编码用于解决这一限制。我们想指出,也有混合模型,其中编码器/解码器中的主要特征提取是通过CNN和ViT实现的。然而,本文关注于开发一个纯ViT-UNet。
在这里插入图片描述

Deformable Patch Embedding

可变形Patch嵌入是一种最近提出的技术,用于改进深度学习模型中视觉数据的表示。它特别适用于需要高分辨率输入的任务,例如语义分割和目标检测。

2.1.1 Rigid patch embedding

ViT-UNet首先将图像块转换为tokens。这个过程通常包括将图像分割成—系列不重叠的n x n (×n)(例如,在SwinUNet中为4×4(x4))固定大小的块。随后,这些块中的每一个都会被投影成一个1D特征向量。执行刚性((正方形)块嵌入的主要原因是其简单性,因为它可以很容易地通过标准卷积(卷积核大小k=n;步长s =n;膨胀系数d=1)来实现。

然而,我们认为这种刚性块嵌入对于分割任务并不是最优的选择,主要有两个原因。首先,分割需要更精确的像素级定位。然而,刚性块嵌入只能提供块级定位。其次,在大多数医学图像分割任务中(例如,多器官分割任务),目标对象的形状和大小差异显著。

2.1.2 Deformable patch embedding

为了解决刚性Patch嵌入的限制,我们提出了一个可变形Patch嵌入(见图2),通过利用可变形卷积。可变形卷积定义为
(f * k)p]=>p.eo 队(f; p+△p + p:)·k[p:],其中f ∈RLxd是一个具有L个位置的统─网格的d,维特征图p ∈RLxD(D=2为2D; D=3为3D)。k是在网格=pke]上操作的卷积核,定义了p的k-最近(即核大小)邻近位置。[Ap]是从不规则网格采样的偏移量。这些偏移量通过一个卷积层△p = Convoffset (f)学习得到。如是一个采样函数,它通过双线性/三线性插值来采样f 中的位置[p+△p+ pi],因为偏移量△p通常为分数。
首次Patch嵌入。我们用两个连续的可变形卷积层(k =3; s = n/2; d=1)替换了标准SwinUNet中的单层刚性卷积Patch嵌入。这样做的原因是,两个连续的、重叠的可变形Patch嵌入可以提取更好的局部表示,这弥补了自注意力中的局部性不足。
下采样Patch嵌入。我们还用单层卷积下采样(k=3; s = 2; d =1)替换了标准SwinUNet中的Patch合并,用于下采样。我们使用重叠核以更好地保留局部模式[22,15,20],这也与重叠的可变形Patch嵌入相一致。

Spatially Dynamic Self-Attention

自我关注是ViT UNet的基本构建块。与卷积不同,自我关注不强制任何空间感应偏差,而是纯粹通过依赖标记之间的依赖关系(主要是相似性)来做决策,同时缺乏捕捉适应多类分割的空间特征的能力。因此,我们提出使用空间动态自我关注模块作为ViT-UNet的构建块。这个模块受到[15]的启发,它包括可变形多头注意力(DMSA)[15]和邻域多头注意力(NMSA)[23]。Transformer块是通过交替这两种注意力机制构建的(见图2)。我们还将在第三编码器块中分配更多的计算,其阶段比例为1:2:5:1,而不是SwinUNet中的2:2:2:2。这是因为编码器的第三层通常比其他层捕捉到更好的特征表示[24]。

Deformable Multi-head Self-Attention (DMSA)

第h个头部的可变形多头(即H个头部)注意力[15]被表述为
DMSAn(f) = softmax(Qnkh /√de)Vh
其中:
= fwR,k= fwK,V1= fwX,f =(f;p+pn ).
这里,我们重用了方程(1)中的表示法,其中p是均匀的点网格,△p是为第h个头部生成的偏移量,p是一个插值函数。{W;, w}∈ Rd×dk和WK ∈ Rdr×d是可训练的参数,dx和d.分别是DMSA中键K,和值Vh的线性投影的隐藏维度。DMSA中的偏移量也是通过将查询通过一个卷积层△p = Convoffset(Qh)生成的。方程(3)中表示的由此产生的非规则采样特征图记为f。与可变形卷积类似,非规则采样的特征图随后通过使用非规则采样的键K,和值Vn应用于自注意力(见方程(2))。

Neighborhood Multi-head Self-Attention (NMSA)

此外,这重新将局部操作引入自注意力机制,允许平移等方差,从而增强更好地保留局部信息的能力。按照方程(2)中的记法,位置pr的邻域多头注意力计算如下:
NMSAn(f[p])= softmax(Q,lp]Kn [pi]T / √dx)Vh pi]
其中:
kn[P]=[Kn[Pu],………,Kn [Puk]],K)= fWAV, pi]= [Vh[Pu]T,…., Vh[Pu]T]T,VA= fWX.
这里,[pu;]表示给定位置pr的第 k个邻域位置。值得注意的是,所得到的注意力的维度是RLxK,其中K=k x k(×k),而不是标准自注意力或窗口注意力中的RLxL

Multi-scale Deformable Positional Encoding

在之前的ViT UNets中,位置编码(PE)的设计几乎没有被探索。大多数ViT-UNets要么忽略位置编码[1],要么继承自其祖先模型[25; 2; 16]。具体来说,[25]使用了绝对位置编码(APE),为每个标记分配一个绝对值。而其他研究[2; 16; 20]使用了相对位置编码(RPE)[26]来编码标记之间的相对位置。然而,这些设计都是针对1D信号而忽略空间相关性。因此,它们并不很好地适应于具有空间相关性的2D/3D信号的建模。最近,条件位置编码(CPE)[27]被设计用于视觉任务,同时具有APE和RPE的能力。

更重要的是,标准的APE、RPE和CPE并不直接适用于不规则采样的网格,因为它们都是在刚性网格中公式化的。与本文提出的非规则采样DMSA相一致,我们提出了一个多尺度可变形位置编码(MS-DePE),旨在跨多个尺度编码非规则采样的位置信息(见图3)。
在这里插入图片描述

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

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

相关文章

Java | Leetcode Java题解之第11题盛最多水的容器

题目&#xff1a; 题解&#xff1a; public class Solution {public int maxArea(int[] height) {int l 0, r height.length - 1;int ans 0;while (l < r) {int area Math.min(height[l], height[r]) * (r - l);ans Math.max(ans, area);if (height[l] < height[r]…

Docker之镜像与容器的相关操作

目录 一、Docker镜像 搜索镜像 下载镜像 查看宿主机上的镜像 删除镜像 二、Docker容器 创建容器 查看容器 启停容器 删除容器 进入容器 创建/启动/进入容器 退出容器 查看容器内部信息 一、Docker镜像 Docker 运行容器前需要本地存在对应的镜像&#xff0c; 如…

OWASP TOP10 漏洞详解

前言 该内容是 OWASP TOP 10 的学习笔记&#xff0c;笔记内容来源 B 站龙哥的视频【12.Top漏洞10&#xff1a;服务器请求伪造_哔哩哔哩_bilibili】 一、访问控制崩溃 概念 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据&#xf…

一篇文章Linux技术急速入门,掌握这些命令可以解决日常 99% 的问题

一篇文章Linux技术急速入门&#xff0c;掌握这些命令可以解决日常 99% 的问题。 当你听到Linux[1]时&#xff0c;大多数人会想到只有程序员才会使用的复杂操作系统。但是&#xff0c;其实并非如此&#xff0c;虽然Linux给普通用户的感觉可能很深奥&#xff0c;需要很多操作命令…

逆向案例14——cnki学术翻译AES加密分析,涉及保持会话和获取token值

python代码&#xff1a; import execjs import requests UA "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" token_url "https://dict.cnki.net/fyzs-front-api/getToken" url …

测试工程师求职是选自研公司还是选外包公司呢?

大家好&#xff0c; 今天我们一起来聊一聊测试工程师求职是选自研公司&还是选外包公司呢&#xff1f; 今天来谈谈我的个人看法&#xff0c;作为一个在测试岗位上多年的我来说&#xff0c;自研公司比较好&#xff0c;外包公司其实也不会差。各自都有特点特色&#xff0c;根据…

能否安全地删除 Mac 资源库中的文件?

在管理Mac电脑存储空间时&#xff0c;用户确实可能考虑对资源库&#xff08;Library&#xff09;文件夹进行清理以释放空间。Mac资源库是一个系统及应用程序存放重要支持文件的地方&#xff0c;其中包括但不限于配置文件、临时文件、缓存、插件、偏好设置、应用程序支持数据等。…

Django路由配置

简单说一下django路由配置&#xff0c;发现很多同学出错。 首先&#xff0c;先创建自己的app文件&#xff08;用 python manage.py startapp myApp来创建自己的app&#xff09; 这个是自己 在Django的配置文件setting.py添加自己的项目文件myapp ok&#xff0c;此时就可以添加路…

JavaWeb后端——Mybatis

概述 Mybatis&#xff1a;Java程序来对数据库进行操作&#xff0c;一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 SSM&#xff1a;SpringMVC、Spring、Mybatis 快速入门 步骤2&#xff1a;注意数据库连接的四要素 application.properties&#xff1a;springboot 的默…

百度富文本编辑器配置(vue3)

今天分享一下我做的项目里面的一个百度富文本的配置问题&#xff0c;安装配置流程以及如何解决的 1.首先是安装组件 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x 2. 下载 UEditor UEditor 并不支持通过 npm 的方式…

mid格式是什么文件?怎么把mid转换成MP3?

MID&#xff08;Musical Instrument Digital Interface&#xff09;文件格式可以追溯到20世纪80年代&#xff0c;当时音频技术正在蓬勃发展。为了促进不同音乐设备之间的数据交流&#xff0c;MID格式应运而生。其初衷是作为一种标准的音乐数据传输协议&#xff0c;使得各类乐器…

C之结构体初始化10种写法总结(九十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【NLP】关于BERT模型的一些认知

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;模型是由Google在2018年提出的预训练Transformer模型&#xff0c;用于自然语言处理任务。 一. BERT模型的架构 1.1 输入表示 / Encoder模块 BERT中的Encoder模块是由三种Embedding&…

初识C++ · 类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1 访问限定符 4.2 封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 C语言是一门面向过程的语言&#xff0c;注重的…

ASP.Net添加Swagger注释

文章目录 Swagger添加Swagger注释 Swagger 添加Swagger注释 1、右击项目->选择属性->点击生成->输出&#xff0c;选中文档文件 2、配置服务 在program.cs 文件里配置SwaggerUI //增加项一 builder.Services.AddSwaggerGen(c> {c.SwaggerDoc("v1", ne…

pytorch 演示 tensor并行

pytorch 演示 tensor并行 一.原理二.实现代码 本文演示了tensor并行的原理。如何将二个mlp切分到多张GPU上分别计算自己的分块,最后做一次reduce。 1.为了避免中间数据产生集合通信,A矩阵只能列切分,只计算全部batch*seqlen的部分feature 2.因为上面的步骤每张GPU只有部分featu…

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候&#xff0c;我们⼀般会选择如下三种数据结构。 数组set &#xff08;集合&#xff09;map&#xff08;映射&#xff09; 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候&#xff0c;就要考虑哈希法。如果在做⾯试题⽬的时候…

搭建好WordPress网站后的基本操作流程

考虑到很多朋友是第一次使用WordPress&#xff0c;这里给大家分享一下基本的WordPress操作流程&#xff0c;你可以跟着实际情况决定操作步骤。 1.设置网站SSL安全证书。 我采用的是Hostease家的Linux主机产品&#xff0c;自带免费SSL证书 。支持一键安装wordpress程序。 2.进…

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进&#xff0c;智慧驿站作为一种多功能城市部件&#xff0c;正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能&#xff0c;为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案…

MyBatis操作数据库(1)

前言 在应用分层的学习时, 我们了解到web应用程序一般分为三层,即Controller, Service, Dao. 之前的案例中, 请求流程如下: 浏览器发起请求, 先请求Controller, Controller接受到请求后,调用Service进行业务逻辑处理, Service再调用Dao, 但是Dao层的数据是Mock的, 真实的数据…