Ariadne’s Thread-使用文本提示改进对感染区域的分割胸部x线图像

论文:https://arxiv.org/abs/2307.03942, Miccai 2023

代码:GitHub - Junelin2333/LanGuideMedSeg-MICCAI2023: Pytorch code of MICCAI 2023 Paper-Ariadne’s Thread : Using Text Prompts to Improve Segmentation of Infected Areas from Chest X-ray images

其实这篇完全就是VLiT的网络结构优化,改动也不是很大,我寻思这个比较新的方向比较好发文章喔。这里背景就不多介绍了,可以直接去参考我之前博文VLiT。感觉这个名字起的蛮好玩的,Ariadne’s Thread,是这个名字来自古希腊神话,讲述了忒修斯在阿里阿德涅的金线的帮助下走出迷宫的故事。后面的拓展学习也挺有意思的。

摘要

肺部感染区域的分割对于量化肺部感染等肺部疾病的严重程度至关重要。现有的医学图像分割方法几乎都是基于图像的单模方法。然而,除非使用大量带注释的数据进行训练,否则这些仅图像的方法往往会产生不准确的结果。为了克服这一挑战,我们提出了一种语言驱动的分割方法,该方法使用文本提示来改进切分结果。在QaTa-COV19数据集上的实验表明,与单模态方法相比,我们的方法至少提高了6.09%的Dice得分。此外,我们的扩展研究揭示了多模态方法在文本信息粒度方面的灵活性,并表明多模态方法在所需训练数据的大小方面比仅图像方法具有显着优势

背景

直接参考LViT:语言与视觉Transformer在医学图像分割_Scabbards_的博客-CSDN博客,

本篇是LViT的一个后续工作,对模型结构进行优化

 主要贡献

1) 我们提出了一种语言驱动的分割方法,用于从肺部x射线图像中分割感染区域。

2) 该方法设计的导视解码器能够自适应地将文本提示足够的语义信息传播到像素级视觉特征中,促进了两种模式的一致性。

3)清理了QaTa-COV19[17]文本注释中包含的错误,并联系LViT作者发布新版本。

4)扩展研究揭示了文本提示信息粒度对我们方法分割性能的影响,并证明了多模态方法在所需训练数据大小方面优于仅图像方法的显著优势。

模型结构

我们提出的方法采用模块化设计,其中模型主要由一个图像编码器、一个文本编码器和几个guidedecoder组成。GuideDecoder用于自适应地将语义信息从文本特征传播到视觉特征,并输出解码后的视觉特征

与LViT的早期融合相比,我们提出的模块化设计方法更加灵活。例如,当我们的方法用于脑MRI图像时,由于模块化的设计,我们可以首先加载在相应数据上训练的预训练权值来分离视觉和文本编码器,然后只需要训练GuideDecoders。

Image Encoder

ConvNeXt-Tiny

输入

四个stage分别是

C为特征维度,H和W为原始图像的高度和宽度

Text Encoder

CXR-BERT

输入

获得文本特征

 C是特征维度,L是文本提示符的长度。

GuideDecoder

输入:

输出:

 在执行多模态交互之前,GuideDecoder首先处理输入的文本特征和视觉特征。

step1

Text

输入:

输出:

输入文本特征首先通过投影模块(即图中的Project),该模块将文本标记的维度与图像标记的维度对齐,并减少文本标记的数量。

 WT是一个可学习的矩阵

Conv(·)是 1 X 1 卷积

\delta(·)是 ReLU激活函数

step2

Image

输入:

输出:

,以及残差链接产物

 在加入位置编码后,利用自注意增强图像中的视觉信息去获得视觉特征

MHSA(·) 是 Multi-Head Self-Attention层

LN(·) 是 Layer Normalization

Step3

输入:

输出:多模态特征

采用多头交叉注意层,将细粒度(fine-grained)的语义信息传播到进化的图像特征中

 MHCA(·)是multi-head cross-attention

α是可学习的参数,控制剩余连接的权值

 step4

输入:

输出:

 重塑和上采样

Step5

输入:,其中fs是通过跳过连接从视觉编码器获得的低级视觉特征

输出:

通过卷积层和ReLU激活函数进行处理

其中[·,·]表示通道维度上的连接操作。

 

实验

数据集

QaTa-COV19

我们发现在扩展文本注释中存在一些明显的错误(如拼错单词、语法错误、所指不清)。我们已经修复了这些已识别的错误,并联系了LViT的作者,发布了数据集的新版本。

它由9258张带有感染肺区域像素级手动注释的COVID-19胸片组成,其中7145张在训练集,2113张在测试集。

实验设置

数据处理

80% and 20%.因此,训练集共有5716个样本,验证集有1429个样本,测试集有2113个样本。所有图像裁剪为224 × 224,数据使用10%概率的随机缩放进行增强。

硬件

我们使用PyTorch Lightning作为最终的训练和推理包装器。所有的方法都在一个NVIDIA Tesla V100 SXM3 32GB VRAM GPU上进行训练。

训练细节

我们使用Dice loss + Cross-entropy loss作为损失函数,并使用批大小为32的AdamW优化来训练网络。我们利用余弦退火学习率策略,初始学习率设为3e-4,最小学习率设为1e-6。

评价指标

Accuracy、Dice Loss 和Jaccard系数。Dice系数和Jaccard系数都计算给定的预测掩模和地面真值的联合区域上的相交区域,其中Dice系数更能反映小目标的分割性能。

Dice系数和Jaccard系数都计算给定的预测Mask和Ground Truth的联合区域上的相交区域,其中Dice系数更能反映小目标的分割性能。

(所以个人感觉Jaccard这个不是很必要)

实验结果

定性实验结果如图2所示。仅图像的单模态方法容易产生一些过度分割

多模态方法是指通过文本提示对感染区域的具体位置进行分割,使分割结果更加准确。

 消融实验

 由表2可以看出,随着模型中使用的guidedecoder数量的增加,模型的分割性能也随之提高。这些结果可以证明导解码器的有效性。

拓展学习

不同粒度的文本提示对分割性能的影响

将每个样本扩展为包含不同粒度位置信息的三个部分的文本注释,如图所示

 图表展示了不同粒度的文本以及分割表现

 表中的结果表明,我们的方法由文本提示符中包含的位置信息的粒度驱动。

我们提出的方法在给出包含更详细位置信息的文本提示符时获得了更好的分割性能

同时,我们观察到,当使用两种类型的文本提示时,即Stage3单独和Stage1 + Stage2 + Stage3性能几乎相同。这意味着文本提示中最详细的位置信息对提高分割性能起着最重要的作用。但这并不意味着文本提示符中其他粒度的位置信息对分割性能的改善没有贡献。即使输入文本提示只包含最粗略的位置信息(Stage1 +)在表3中的Stage2项中,我们提出的方法比没有文本提示的方法获得的Dice分数高1.43%

训练数据大小对分割性能的影响

我们提出的方法即使在减少训练数据量的情况下也显示出高度的竞争性能。

仅使用四分之一的训练数据,我们提出的方法比UNet++的Dice得分高2.69%,UNet++是在完整数据集上训练的表现最好的单模态模型。这为多模态方法的优越性提供了充分的证据,合适的文本提示可以显著提高分割性能。

 我们观察到,当训练数据减少到10%时,我们的方法才开始表现出比UNet++更差的性能,UNet++是用所有可用数据训练的。类似的实验也可以在LViT论文中找到。因此,可以认为,多模态方法只需要少量的数据(在我们的方法中少于15%)就可以达到与单模态方法相当的性能

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

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

相关文章

2、Tomcat介绍(下)

组件分类 在Apache Tomcat中&#xff0c;有几个顶级组件&#xff0c;它们是Tomcat的核心组件&#xff0c;负责整个服务器的运行和管理。这些顶级组件包括&#xff1a; Server(服务器)&#xff1a;Tomcat的server.xml配置文件中的<Server>元素代表整个Tomcat服务器实例。每…

vmware网络配置

效果&#xff1a; 虚拟机和物理机网络互通&#xff1b; 虚拟机可以上外网 环境&#xff1a; vmware version 17.0.0 Centos 7.9 配置 1&#xff0c;vmware 菜单 - 编辑 - Virtual Network Edit 2&#xff0c; 选择VMnet8 VMnet information:NAT&#xff1b; 勾选2个…

运输层---概述

目录 运输层主要内容一.概述和传输层服务1.1 概述1.2 传输服务和协议1.3 传输层 vs. 网络层1.4 Internet传输层协议 二. 多路复用与多路分解&#xff08;解复用&#xff09;2.1 概述2.2 无连接与面向连接的多路分解&#xff08;解复用&#xff09;2.3面向连接的多路复用*2.4 We…

Html5播放器按钮在移动端变小的问题解决方法

Html5播放器按钮在移动端变小的问题解决方法 用手机浏览器打开酷播云视频&#xff0c;有时会出现播放器按钮太小的情况&#xff0c;此时只需在<head>中加入下面这段代码即可解决&#xff1a; <meta name"viewport" content"widthdevice-width, initia…

c语言指针的运算

1、通过指针计算数组的元素&#xff08;指针相减&#xff0c;类型需要一致&#xff09;&#xff0c;比如数组元素指针相减得到的是中间相差的元素个数&#xff0c;可以用于计算数组元素的个数等 #include "stdio.h" #include <stdlib.h>int main() {int a[10]…

SuperNova论文赏析

1. 引言 前序博客有&#xff1a; Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记 卡内基梅隆大学 Abhiram Kothapalli 和 微软研究中心 Srinath Setty 2022年论文《SuperNova: Proving universal machine executions without universal circuits》…

责任链模式

责任链模式 1、定义&#xff1a; 将能够处理同一类请求的对象连成一条链&#xff0c;所提交的请求沿着链传递&#xff0c;链上的对象逐个判断是否有能力处理该请求 &#xff0c;如果能则处理&#xff1b; 如果不能则传递给链上的下一个对象 2、场景&#xff1a; 大学中奖学…

如何用python做自然语言处理

如何用python做自然语言处理 使用Python进行自然语言处理&#xff08;NLP&#xff09;是非常常见和强大的。以下是一些基本步骤&#xff1a; 安装所需的库&#xff1a; 首先&#xff0c;您需要安装一些用于自然语言处理的Python库&#xff0c;如NLTK&#xff08;自然语言工具包…

二十三种设计模式第十九篇--命令模式

命令模式是一种行为设计模式&#xff0c;它将请求封装成一个独立的对象&#xff0c;从而允许您以参数化的方式将客户端代码与具体实现解耦。在命令模式中&#xff0c;命令对象充当调用者和接收者之间的中介。这使您能够根据需要将请求排队、记录请求日志、撤销操作等。 命令模…

(具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

今天小陶在训练CGAN的时候出现了绷不住的情况&#xff0c;那就是G_loss&#xff08;生成器的loss值&#xff09;一路狂飙&#xff0c;一直上升到了6才逐渐平稳。而D_loss&#xff08;判别器的loss值&#xff09;却越来越小&#xff0c;具体的情况就看下面的图片吧。其实这在GAN…

arcgis字段计算器

1、两字段叠加。要求待叠加的字段类型为文本或字符串类型。如下&#xff1a; 2、字符串部分提取。

为Win12做准备?微软Win11 23H2将集成AI助手:GPT4免费用

微软日前确认今年4季度推出Win11 23H2&#xff0c;这是Win11第二个年度更新。 Win11 23H2具体有哪些功能升级&#xff0c;现在还不好说&#xff0c;但它会集成微软的Copilot&#xff0c;它很容易让人想到多年前的“曲别针”助手&#xff0c;但这次是AI技术加持的&#xff0c;Co…

编写SPI_Master驱动程序_新方法

编写SPI_Master驱动程序_新方法 文章目录 编写SPI_Master驱动程序_新方法一. SPI驱动框架1.1 总体框架1.2 怎么编写SPI_Master驱动1.2.1 编写设备树1.2.2 编写驱动程序 二、 编写程序2.1 数据传输流程2.2 写代码 致谢 参考资料&#xff1a; 内核头文件&#xff1a;include\lin…

Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】

文章目录 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】前言探究隐藏网络端口netstat分析隐藏网络端口的原理关键数据结构隐藏网络端口源码 效果演示 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】 前言 Rookit是个老生常谈的话…

python中*与**的使用

文章目录 前言一、*与**在函数定义时二、*与**在函数调用时 前言 在python中*与**的使用要区分是在函数定义时还是在函数调用时。 一、*与**在函数定义时 def deng(*args,**kwargs):print(args)print(kwargs)deng(1,2,3,a 4,b 5)在函数定义时参数前面使用*&#xff0c;代表…

vue echart3个饼图

概览&#xff1a;根据UI设计需要做3个饼图且之间有关联&#xff0c;并且处理后端返回的数据。 参考链接&#xff1a; echart 官网的一个案例&#xff0c;3个饼图 实现思路&#xff1a; 根据案例&#xff0c;把数据处理成对应的。 参考代码&#xff1a; 1.处理后端数据&am…

Android Tencent Shadow 插件接入指南

Android Tencent Shadow 插件接入指南 插件化简述一、clone 仓库二、编译运行官方demo三、发布Shadow到我们本地仓库3.1、安装Nexus 3.x版本3.2、修改发布配置3.3、发布仓库3.4、引用仓库包 四、编写我们自己的代码4.1、新建项目导入maven等共同配置4.1.1、导入buildScript4.1.…

DoIP学习笔记系列:(四)用CAPL脚本读取DID的关键点

文章目录 1. 如何在CAPL中读取DID?1.1 避坑如何新建CAPL工程,在此不再赘述,本章主要分享一下如何在CAPL中调用DoIP接口、diag接口进行DoIP和诊断的测试。 1. 如何在CAPL中读取DID? 通常在实际项目中,会有很多DID,各种版本号、各种观测量,如果手动点,显然很麻烦,如果要…

PHP实现首字母头像

<?php $name"哈哈"; $logoletter_avatar($name);echo <img src".$logo." style" border-radius: 50%;">;function letter_avatar($text) {$total unpack(L, hash(adler32, $text, true))[1];$hue $total % 360;list($r, $g, $b) hs…

【网络基础进阶之路】设计网络划分的实战详解

PS&#xff1a;本要求基于华为的eNSP模拟软件进行 具体要求&#xff1a; 完成步骤&#xff1a; 1、对192.168.1.0/24进行子网划分 2、对每一个路由器进行IP的配置 3、开始静态路由的书写&#xff0c;在写之前&#xff0c;我们可以先对每一个路由器写一条通向右边的缺省路由&…