【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类

news2025/1/11 21:54:23

GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类

      • 提出背景
        • 子解法1:多标签信息样本的选择
        • 子解法2:生成信息丰富且非冗余的合成样本
      • 例子:胸部X射线图像分析
        • 传统方法的操作和局限
        • GaNDLF方法的优势
      • 工作流程
      • 图多集合变换器
      • 数据增强的采样与评分

提出背景

论文:GANDALF: Graph-based transformer and Data Augmentation Active Learning Framework with interpretable features for multi-label chest Xray classification

代码:https://github.com/mlcommons/GaNDLF

目的:GaNDLF旨在通过合成训练数据的方式,提高多标签医学图像分类任务的学习效率和分类性能。

解法拆解

  1. 多标签信息样本的选择(因为标签间的相互影响) +
  2. 生成信息丰富且非冗余的合成样本(因为训练样本的多样性和信息量)
子解法1:多标签信息样本的选择
  • 特征:在多标签学习场景中,不同疾病标签之间的相互影响可能会影响模型的判断和学习。
  • 解法说明:通过构建一个图形模型,每个节点代表一个疾病标签的显著图,节点之间的边代表不同标签之间的相互关系。使用图转换器来评估和选择具有高度信息交互的样本,从而更有效地捕获多标签之间的复杂关系。
  • 例子:在胸部X射线图像中,某些疾病(如肺炎和肺结核)可能表现出相似的影像特征。有效地识别和利用这些相互关系可以帮助模型区分这些相似的疾病,提高诊断的准确性。
子解法2:生成信息丰富且非冗余的合成样本
  • 特征:仅靠原始的训练样本,可能不足以覆盖所有的特征变异,限制了模型的泛化能力。
  • 解法说明:使用变分自编码器(VAE)从选定的信息丰富样本中生成新的合成图像。这些新图像不仅保持原有的类标签,还引入了新的变化,增加了数据的多样性,同时避免了信息的冗余。
  • 例子:如果原始数据集中大部分图像展示的是早期肺炎,通过合成技术可以生成展示更多不同阶段和表现形式的肺炎图像,这样模型可以学习到肺炎在不同阶段的多样性,提高识别不同阶段肺炎的能力。

这两种子解法结合,通过在样本选择和数据增强中都注重信息的多样性和质量,为多标签分类任务提供了一种更有效的学习策略。

例子:胸部X射线图像分析

医疗研究人员需要对胸部X射线图像进行分类,识别图中可能存在的多种疾病(如肺炎、肺结核、肺癌等)。

传统方法的操作和局限
  • 数据集:使用一个固定的、预先标注的数据集,其中可能缺乏某些疾病的表现形式多样性。
  • 数据增强:应用基本的图像处理技术(如翻转、旋转),这些技术虽然增加了图像数量,但并未实质增加关于疾病特征的新信息。
  • 样本选择:随机或基于简单规则选择样本,这可能导致关键信息样本被忽略,从而影响模型的准确性和泛化能力。
GaNDLF方法的优势
  • 动态样本选择
    • 使用图注意力变换器(GAT)分析未标记的胸部X射线图像,根据疾病标签间的相互影响动态选择信息量最大的样本。例如,如果系统发现某些图像中肺炎和肺结核的特征同时显著,它会优先选择这些样本进行训练,因为这样的样本能帮助模型更好地学习区分具有相似表现的不同疾病。
  • 高级数据增强
    • 利用变分自编码器(VAE)根据选定的高信息量样本生成新的图像。这些合成图像在保留原有疾病标签的同时,引入了新的变体(如不同阶段的病变),从而丰富了模型的训练数据。例如,对于初始阶段肺炎的图像,VAE可以生成显示肺炎后期更严重病变的图像,这有助于模型学习识别疾病的不同阶段。
  • 减少冗余,确保新增样本的质量
    • 通过结合标签保持评分和避免冗余评分,确保生成的样本在增加新信息的同时,避免与已有训练样本重复。这一策略确保了每一个新增样本都能为模型训练提供真正的价值。

结果比较:

  • 传统方法可能导致模型在遇到未包含在初始数据集中的疾病变异时性能下降。
  • GaNDLF方法通过提供更广泛的病变样本和更精确的样本选择,显著提高了模型的诊断准确性和泛化能力。

通过这个例子,我们可以看到GaNDLF方法不仅使模型训练更为有效,还增强了模型在实际应用中的可靠性和准确性。

工作流程

在这里插入图片描述

此图展示了GANDALF方法的整体工作流程:

  1. 未标记样本:从一个可用于主动学习周期的未标记样本池开始。
  2. 使用可解释显著图创建输入图:显著图用于创建输入图。这些图突出显示图像中对分类最关键的区域。
  3. 来自GAT(图注意力变换器)的多标签样本信息评分:然后使用图注意力变换器处理图,根据图中表示的标签间互动评估每个样本的信息量。
  4. 选择顶尖n个样本:选择最具信息量的样本。
  5. 信息数据增强:选定的样本用于生成合成且具有信息量的样本,这些样本对训练数据进行了非冗余的增强。
  6. 添加到训练集:原始样本和新生成的合成样本都被添加到训练集中,用于下一个主动学习周期。

一个医疗研究中心希望通过机器学习模型提高其对胸部X射线图像中多种疾病(如肺炎、肺结核和肺癌)的自动诊断能力。

GANDALF方法的操作步骤:

  1. 未标记样本

    • 医院收集了大量的胸部X射线图像,这些图像尚未进行疾病标记。这些未标记的样本构成了主动学习周期的样本池。
  2. 使用可解释显著图创建输入图

    • 研究人员使用计算机视觉技术分析每张X射线图像,创建显著图。这些显著图突出显示了图像中对于诊断最为关键的区域,如异常阴影或肺部结构变化。
  3. 来自GAT的多标签样本信息评分

    • 利用图注意力变换器(GAT),分析由显著图构建的图形数据。GAT评估不同疾病标签在显著区域间的互动和联系,识别出潜在的复合疾病特征,计算每个样本的信息量。
  4. 选择顶尖n个样本

    • 系统根据信息评分选择信息量最大的前n个样本,这些样本表现出高度的疾病特征复杂性和诊断价值。
  5. 信息数据增强

    • 选定的信息丰富样本被用于生成新的合成样本。使用变分自编码器(VAE)在保持原有疾病标签的同时引入图像变体,如模拟疾病的不同发展阶段或轻微的解剖差异。
  6. 添加到训练集

    • 原始的信息丰富样本及其合成的衍生样本都被添加到训练集中。这些数据将用于训练和优化机器学习模型,模型随后在下一个主动学习周期中更精准地诊断和识别复杂的疾病模式。

通过GANDALF方法,该医疗中心的机器学习模型能够更有效地识别和分类胸部X射线图像中的多种疾病。

模型不仅学习从单一病变中识别疾病,还能识别多疾病共存的复杂情况,大大提高了诊断的准确性和效率。

图多集合变换器

在这里插入图片描述

此图详细说明了GANDALF方法中使用的图多集合变换器的过程和组件:

  1. 输入图:显示基于样本的多标签信息的显著图创建的初始图。
  2. 图注意力(GMH):利用基于图的注意力机制来关注图中的重要特征和关系。
  3. GMH输出:图注意力阶段的输出。
  4. 图池化(GMPool):通过基于节点的连通性和相似性合并节点,将图简化为更简单的形式,有效地总结图的信息。
  5. 自注意力(SelfAtt):应用自注意力机制进一步细化节点特征,考虑其中的相互作用。
  6. 最终池化到ML_Info:最终的图表示被汇总为单一分数(ML_Info),量化样本的总体信息量。

假设一家医院希望利用深度学习模型识别和分类患者的胸部X射线图像,特别是能够同时识别多种肺部疾病的共存,如肺炎和肺癌。

  1. 输入图

    • 医生收集了一系列胸部X射线图像,这些图像未经标记且疑似包含多种肺部疾病。使用计算机视觉技术对这些图像生成显著图,突出显示对诊断至关重要的区域。例如,图中可能突出显示了肺部的异常阴影区域和肿块。
  2. 图注意力(GMH)

    • 利用图注意力机制,模型分析这些显著图构建的输入图。图中的每个节点代表一个特定区域的显著特征,而边则表示这些区域之间的相互关系。这一步骤帮助模型聚焦于那些可能指示多种疾病共存的关键特征。
  3. GMH输出

    • 注意力机制处理后的输出图,其中包括了经过优化的节点和边,这些信息代表了图像中最关键的相互作用和特征关系。
  4. 图池化(GMPool)

    • 通过图池化技术,进一步简化图结构,合并那些具有高度相似性或连通性的节点。例如,如果多个节点都指向同一区域的疾病特征,这些节点可以合并为一个,从而简化模型的复杂性并增强信息的清晰度。
  5. 自注意力(SelfAtt)

    • 自注意力机制用于加强模型对各节点特征的理解,它通过比较各节点间的相互作用强化了模型对图中信息的总体把握。这有助于模型更好地理解不同疾病标签之间的复杂关系。
  6. 最终池化到ML_Info

    • 将所有处理过的图信息汇总为一个单一的分数(ML_Info),这个分数量化了整个样本图的总体信息量。这个分数可以直接用于训练模型,帮助预测胸部X射线图像中的疾病类型。

这种方法使模型能够准确识别并分类图像中的多种疾病,如正确区分并同时识别存在于同一患者图像中的肺炎和肺癌。

这对于提早诊断和治疗计划的制定极为关键,特别是在复合疾病的情况下。

数据增强的采样与评分

在这里插入图片描述

此图解释了增强和选择信息样本所涉及的步骤:

  1. 采样机制:使用变分自编码器(VAE)生成有信息量的基础样本的变体。VAE在当前数据集上训练,以确保它产生相关的变体。
  2. 评分系统:生成的样本根据两个标准进行评分:
    • 标签评分(Score_label):评估生成样本在保留原始样本的类标签方面的表现。
    • 避免冗余评分(Score_red):评估生成的样本与原始样本的差异,确保它们在不复制现有数据的情况下添加新信息。
  3. 选择顶尖样本:得分最高的样本,表明它们既有信息量又具多样性,被选中添加到下一个主动学习周期的训练集中。

假设一家医院正在研究一个新的机器学习模型,用以分析心脏超声图像,以诊断心脏瓣膜病变、心肌病变以及心包积液等多种心脏疾病。

  1. 采样机制

    • 医疗研究团队使用变分自编码器(VAE)处理一组心脏超声图像。VAE模型在包含各种心脏病状的广泛数据集上训练,使其能够生成包含不同心脏状况的合成图像。例如,VAE可能生成一些展示不同程度心肌肥厚或瓣膜泄漏的图像,这些都是原始数据集中可能未充分代表的病变。
  2. 评分系统

    • 标签评分(Score_label):每个生成的图像会被评估其在保留心脏病变特征(如瓣膜泄漏的特定标记)方面的准确性。如果合成图像能准确地保持原始图像的病理标签,则获得高标签评分。
    • 避免冗余评分(Score_red):此外,还会评估合成图像与原始图像的差异性,确保新增的图像为模型训练提供新的信息。例如,如果生成的图像展示了与原始数据集不同阶段的病变,而且这种差异足够大以避免简单的重复,则获得高避免冗余评分。
  3. 选择顶尖样本

    • 基于上述两种评分,选择得分最高的样本以添加到模型的训练集中。这确保了选中的图像不仅在医学上具有高度的相关性和准确性,而且能够增加训练集的多样性和信息量。这对于提升模型在实际诊断中的准确性和泛化能力至关重要。

通过这种方法,新的心脏疾病诊断模型能够接触到更广泛的心脏病变表现,包括那些在原始数据集中未充分代表的病变阶段和类型。

这使得模型在现实世界应用中能更准确地识别和分类心脏疾病,特别是在处理罕见或复杂病例时表现出更高的效率和准确性。

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

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

相关文章

多用户挂售转卖竞拍闪拍商城系统后端PHP+前端UNIAPP源码

玩法简介 ①、后台可添加商品进行挂单 ②、后台设置场次以及场次开始时间 ③、用户抢单 ④、抢单以后可选择提货或者转售 ⑤、玩家寄售需按照后台设置百分比进行加价 ⑥、玩家寄售需支付手续费(余额支付、支付宝APP支付、支付宝H5支付、微信APP支付) ⑦、玩家提货可获得商品相应…

数据结构 —— 并查集

数据结构 —— 并查集 并查集并查集实现省份数量并查集的优化 今天我们来了解一下并查集: 并查集 并查集(Disjoint Set Union, DSU)是一种高效的数据结构,用于处理集合的合并(Union)和查询(Fi…

Linux应急响应靶机 2

一、靶机介绍 应急响应靶机-Linux2 前景需要:看监控的时候发现webshell告警,领导让你上机检查你可以救救安服仔吗!! 1,提交攻击者IP 2,提交攻击者修改的管理员密码(明文) 3,提交第一次Webshell的连接URL(http://xxx.xxx.xxx.…

使用MyBatis的动态SQL注解实现实体的CRUD操作

使用MyBatis的动态SQL注解实现实体的CRUD操作 1. 引言2. 准备工作2.1 创建数据表2.2 创建实体类 Book2.3 修改Mapper接口 BookMapper 3. 测试CRUD操作3.1 配置日志3.2 查询操作3.3 新增操作3.4 修改操作3.5 删除操作 4. 与MyBatis Plus的对比5. 动态SQL注解的适用场景5.1 动态查…

Python中相关软件安装

1. python安装 1.下载地址 https://www.python.org/downloads/2.选择安装版本 1. Anaconda安装 安装地址 -- 清华大学镜像站点 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/查看anaconda是否安装成功 2.conda安装好后,将镜像源修改为清华大学的镜像…

Python项目-文本语音转换器【附源码】

文本–>语音转换器 本项目是一个简单的从文本到语音这样一个转换器的图形用户界面应用,使用了Python的tkinter库来构建界面,以及pyttsx3库来执行转换。以下是对该项目代码的详细解释,后面会附上本项目的完整代码: 实现效果&am…

文本情绪指数与上证指数的VAR模型构建

大家好,我是带我去滑雪! 在前一篇文章中,笔者爬取了东方财富网上证指数股吧的495775条评论数据,并对文本进行了情感分析,基于自制的股票情感词典,使用了深度学习模型对爬取的文本数据进行分类标注&#xff…

24V 350W开关电源电路原理图+PCB工程文件 UC3843AD lm193芯片

资料下载地址:24V 350W开关电源电路原理图PCB工程文件 UC3843AD lm193芯片 1、原理图 2、PCB

算法题 — 接雨水

给定 n 给非负整数,表示每个宽度为 1 的柱子的高度图,计算按照此排列的柱子,下雨之后能能接到多少雨水。 输入:height [0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1] 输出:6 解释:上面是由数组 [0, 1, 0, 2, 1,…

有了这5款在线去除图片水印工具,妈妈再也不用担心图片水印问题了

Inpaint Inpaint是一款功能强大的图像处理软件,主要用于去除图片中的水印、杂物等不需要的元素。它的主要功能包括: 去除水印:用户可以通过Inpaint轻松去除图片中的水印。只需在软件界面中打开带有水印的图片,然后使用标记工具选…

深入探索Java开发世界:Redis~类型分析大揭秘

文章目录 深入探索Java开发世界:Redis~类型分析大揭秘一、数据结构类型二、分布式锁类型三、事物命令类型四、事物三大特性类型 深入探索Java开发世界:Redis~类型分析大揭秘 Redis数据库基础知识,类型知识点梳理~ 一、数据结构类型 Redis是一…

Pycharm导入内置库或者第三方库时标红,no module named ‘xxx‘

各版本的Pycharm都有可能会出现这样的问题:有些时候内置库和第三方库被标红为“No module named xxx”,而自己的库却能被正常导入。 本人是在使用远程ssh解释器时遇到的。实际运行该代码文件时,能够正常运行(若不能正常运行则可能…

Stop Motion Studio Pro for Mac:Mac上的动画大师,让你的创意无限流动!

Stop Motion Studio Pro for Mac为创作者们提供了一个直观且易于使用的平台,让他们能够将静态的物体和场景转化为生动有趣的定格动画。🎥 无论是制作简单的玩具动画,还是复杂的电影级场景,这款软件都能轻松应对,让你的…

浅谈Mysql Innodb存储引擎

一、Mysql整体架构 二、MySQL 5.7 支持的存储引擎 类型 描述 MyISAM 拥有较高的插入、查询速度,但不支持事务 InnoDB 5.5版本后Mysql的默认数据库,5.6版本后支持全文索引,事务型数据库的首选引擎,支持ACID事务,支…

真正的智慧——诺:九九归一,以简驭繁

一、九九归一 国学道家中有物极必反的理念,所以,中国人有九九归一的说法,在基本数字中,九是大数,九九之意,相当于后天八卦一样,相当于一个系统完成了一次大的循环,九九归一&#xf…

数据资产赋能企业决策:通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企业提供决策支持,助力企业实现精准营销、风险管理、产品创新等目标,提升企业竞争力

一、引言 在信息化和数字化飞速发展的今天,数据已成为企业最宝贵的资产之一。数据资产不仅包含了企业的基本信息,还蕴含了丰富的市场趋势、消费者行为和潜在商机。如何通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企…

【Confluence】markdown格式转换为Confluence

简单的文本可以使用网站来快速转换,但是发现很多格式不能正确转换,所以研究了一个Py的方法来实现,如下: 安装Py插件 本方法主要借用markdown2 来实现,开始之前需要先安装一些库。 pip install markdown2 beautiful…

葡萄串目标检测YoloV8——从Pytorch模型训练到C++部署

文章目录 软硬件准备数据准备数据处理脚本模型训练模型部署数据分享软硬件准备 训练端 PytorchultralyticsNvidia 3080Ti部署端 fastdeployonnxruntime数据准备 用labelimg进行数据标注 数据处理脚本 xml2yolo import os import glob import xml.etree.ElementTree as ETxm…

如何在写代码中找到乐趣

平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。 如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。 参考资料: 实战!工作中常用到…

【C++进阶9】异常

一、C语言传统的处理错误的方式 终止程序,如assert 如发生内存错误,除0错误时就会终止程序返回错误码 需要程序员自己去查找对应的错误 z如系统的很多库的接口函数都是通 过把错误码放到errno中,表示错误 二、C异常概念 异常:函…