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

news2024/11/18 14:01:26

论文: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.coloradmin.cn/o/852415.html

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

相关文章

[保研/考研机试] KY129 简单计算器 浙江大学复试上机题 C++实现

描述 读入一个只包含 , -, *, / 的非负整数计算表达式,计算该表达式的值。 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中…

聪明灵犀:智能AI对话问答工具

这是一款功能强大的人工智能软件,支持ai智能对话与聊天。简单输入问题,即可快速获取相应答案,能够帮助用户快速生成各类文章,内容连贯、结构完整,能够满足用户的写作需求,有效提高写作效率。具备广泛的知识…

消息队列 (9)-消费者核心类的实现

目录 前言消费者类设计思路核心API总体代码 前言 我们上一篇博客,写了虚拟主机的实现, 在虚拟主机中需要用到俩个未实现的类,分别是验证绑定关键字和消费者类,接下来我们实现消费者类的核心代码 消费者类设计思路 在这个类中,首先我们要持有virtualHost对象来操作数据, 然后…

第十六次CCF计算机软件能力认证

第一题:小中大 在数据分析中,最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…

【数据结构】‘双向链表’冲冲冲

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

【雕爷学编程】Arduino动手做(199)---8x32位WS2812B全彩屏模块6

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

git 报错 protocol ‘https‘ is not supported解决

报错原因:选择不了其他分支代码,甚至都看不到其他分支,我这边解决了两次报错,情况如下: 第一种报错: idea中刷新分支报错如下: Fetch Failed protocol https is not supported 话不多说&#…

echats词云无法显示空白问题解决

<script src"https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js"></script> <script src"https://oisanjavax.github.io/echarts-wordcloud/dist/echarts-wordcloud.min.js"></script>展示为空 原因为导入版本过高不…

如何共享笔记本电脑网络

为了让手机连接笔记本网络&#xff0c;我们通常通过在笔记本上安装诸如WiFi共享精灵来实现&#xff0c;其实没有那么麻烦&#xff1a; 1、在电脑上打开“设置”—>选择“网络和Internet”—>选择“移动热点”&#xff08;如果系统是Windows 7或更低版本&#xff0c;则需要…

Ansible从入门到精通【六】

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 专栏名称&#xff1a;Ansible从入门到精通 立志成为ansible大佬 ansible templates 模板&#xff08;templa…

机器学习复习题

1 单选题 ID3算法、C4.5算法、CART算法都是&#xff08; &#xff09;研究方向的算法。 A . 决策树 B. 随机森林 C. 人工神经网络 D. 贝叶斯学习 参考答案&#xff1a;A &#xff08; &#xff09;作为机器学习重要算法之一&#xff0c;是一种利用多个树分类器进行分类和预测…

【交换排序】冒泡排序 与 快速排序

交换排序基本思想&#xff1a; 所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&#xff1a;将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。 目录 1.冒泡排序 2.快…

Day 76:通用BP神经网络 (3. 综合测试)

1 代码&#xff1a; package dl;import java.util.Arrays;/*** Full ANN with a number of layers.** author Fan Min minfanphd163.com.*/ public class FullAnn extends GeneralAnn {/*** The layers.*/AnnLayer[] layers;/*********************** The first constructor.*…

Python爬虫——selenium的安装和基本使用

1.什么是selenium&#xff1f; selenium是一个用于web应用程序测试的工具selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样支持通过各种driver&#xff08;FrifoxDriver&#xff0c;ItenrentExploreDriver&#xff0c;OperaDriver&#xff0c;ChromeDrive…

【linux开发基础知识】

基础--图形界面 基础--终端 基础-用户/组 基础-目录 基础-文件 Shell-基础 Shell-参数 Shell-if Shell-while/for Shell-until/case Shell-函数 Shell-正则表达式 Shell-常用命令 开发-svn 开发-编辑(vim) 开发-编译 开发-调试 开发-部署 建议 ● http://linux.vbir…

海外应用商店关键词优化之如何提高应用可见度

应用商店关键词优化是确保用户可以在Google Play和Apple应用商店中找到我们应用的重要一步。我们需要选择正确的关键词&#xff0c;将它们放在正确的位置&#xff0c;并合并一系列不同的关键词&#xff0c;同时确保拥有良好的转化率。 1、了解当前的元数据是关键字选择的第一步…

selenium环境搭建

文章目录 1、下载谷歌浏览器2、下载谷歌驱动 1、下载谷歌浏览器 浏览器下载完成后&#xff0c;在任务管理器中禁止浏览器的自动更新。因为驱动版本必须和浏览器一致&#xff0c;如果浏览器更新了&#xff0c;驱动就用不起了。 2、下载谷歌驱动 谷歌驱动需要和谷歌浏览器版本…

Eigen在QT中的配置

Eigen简介 Eigen支持包括固定大小、任意大小的所有矩阵操作&#xff0c;甚至是稀疏矩阵&#xff1b;支持所有标准的数值类型&#xff0c;并且可以扩展为自定义的数值类型&#xff1b;支持多种矩阵分解及其几何特征的求解&#xff1b;它不支持的模块生态系统提供了许多专门的功能…

浏览器自动访问打开网址的软件小工具模拟测试

用微软框架写了个浏览器自动访问和打开网址的工具&#xff0c;进行测试模拟&#xff1a; 1、获取链接方式&#xff0c;可通过API接口返回JSON链接格式&#xff0c;也可以集成到文档手动录入链接由软件进行循环运行。 2、配置一些参数&#xff1a;数量、次数、时间间隔等 看下演…

常用dbGet命令

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f;拾陆楼知识星球入口 Examples of dbGet Command 1. Find the top name of the design dbGet top.name 2. Get all the attributes of a selected object dbGet selected.?? If you press tab key…