【医学图像数据增强】 EMIT-Diff:扩散模型 + 文本和结构引导,生成多样化且结构准确的医学图像

news2024/10/2 1:30:38

EMIT-Diff:扩散模型 + 医学图像生成

      • 提出背景
      • 方法步骤
      • 优化目标
        • 如何将不同的条件输入(例如文本或边界框)整合到模型中?
        • 如何提高边缘检测的准确性,从而生成真实和有意义的医学图像?
        • 如何使用自动编码器架构和大规模数据集的预训练检查点,实现稳定的扩散模型?

 


提出背景

论文链接:https://arxiv.org/abs/2310.12868

医学领域大规模、高质量标注数据稀缺问题。

稀缺性是因为数据收集的劳动密集性、高成本和隐私问题,特别是在罕见疾病的背景下。

只能通过数据增强解决,受到高质量数据集稀缺的限制。

数据增强的类型:

  • 基于变换的方法:这些涉及对原始数据进行基本变换,如旋转、缩放和强度调整、切割-拼接。它们以简单和计算效率而著称。
  • 生成方法:如GANs(生成对抗网络)和DDPMs(去噪扩散概率模型)。

在生成方面,扩散模型比GAN、VAE要好。

  • 扩散模型内容:Diffusion 扩散模型:论生成领先多样性,GAN太单一;论尊贵清晰度独占鳌头,VAE常失真

扩散模型,生成既真实又多样的合成医学图像数据,同时保留原始医学图像的关键特征,并通过融入对象的边缘信息来指导合成过程。

  • 合成样本需遵循医学相关约束,保持成像数据的基本结构。

  • 通过扩散模型的随机采样过程,可以生成数量不限、外观多样的合成图像。

使用RadImageNet训练的扩散模型生成结果:

  • 第一行(Original):使用大规模医学图像数据集 RadImageNet 训练扩散模型,涵盖多种成像方式。

    预训练包含1.35 百万张 的 MRI(磁共振成像)的髋关节正常图像、CT(计算机断层扫描)的腹部正常图像、MRI 的踝关节带骨折的图像、MRI 的正常脑部图像、超声波的甲状腺图像以及 MRI 的带有椎间盘病理的脊柱图像。

  • 第二行(Edge):采用先进的全景嵌套边缘检测(HED)算法,从原始图像中提取的边缘信息。

    这些边缘图像强调了原始图像中的解剖结构轮廓,为生成过程提供了结构信息。

    生成训练提示 - 使用数据模态、器官名称和病理类别的组合作为训练提示,确保准确医学术语的使用。

    在生成过程中利用准确的医学术语和边缘信息作为条件输入,保证了生成图像的医学准确性。

    作为模型生成图像时的一个条件输入,帮助模型理解图像中的主要结构。

  • 第三行(Generated):通过微调后的 ControlNet 生成的图像。

    这些图像是由扩散模型根据原始图像和边缘图像生成的,旨在展示扩散模型可以如何生成各种不同类型的医学图像。

    虽然生成的图像在样式上与原始图像有稍稍不同,但它们保持了解剖学上的一致性和结构的准确性。

    这表明扩散模型能够理解和重现医学图像中的关键解剖结构,在图像模态(如MRI、CT、超声)不同时也是如此。

    这种增强有助于创建更多样化的数据集,帮助模型更好地理解和解释医学图像,提高实际应用中的性能和准确性。

性能比较:


每列与第一列的真实轮廓(Ground Truth)进行了对比,以显示每种方法的准确性。

轮廓线的匹配程度越高,说明分割模型的性能越好。

这张图用到的方法以及它们的英文名、中文名和各自的目的如下:

  1. Baseline

    • 英文名:Baseline
    • 中文名:基线方法
    • 目的:未应用任何数据增强技术的基本分割模型性能,作为对比基准。
  2. Random Contrast

    • 英文名:Random Contrast
    • 中文名:随机对比度调整
    • 目的:通过随机改变图像对比度来增加数据多样性。
  3. Random Noise

    • 英文名:Random Noise
    • 中文名:随机噪声添加
    • 目的:通过加入随机噪声来模拟图像在不同条件下的变化,增强模型的鲁棒性。
  4. Random Rotate

    • 英文名:Random Rotate
    • 中文名:随机旋转
    • 目的:通过随机旋转图像来增强模型对位置变化的适应能力。
  5. Random Scale

    • 英文名:Random Scale
    • 中文名:随机缩放
    • 目的:通过改变图像的大小来增加训练数据的尺度变化。
  6. DeepStack

    • 英文名:DeepStack
    • 中文名:深度堆叠
    • 目的:可能是指使用多个网络模型或技术堆叠来提高性能
  7. MedDiff Aug

    • 英文名:MedDiff Aug (likely shorthand for Medical Diffusion Augmentation)
    • 中文名:医学扩散增强
    • 目的:利用扩散模型生成的增强样本来提高分割模型的性能和泛化能力。

很明显,EMIT-Diff方法(右边第一列)在多个案例中都能生成与真实轮廓更为一致的分割结果。

表明,形成解剖结构的一致性上优于其他数据增强方法。

 


方法步骤

这幅图展示的是一个使用扩散模型进行数据增强以改善医学图像分割任务性能的三步:

第一步:预训练(Pre-Training)

  • 这个阶段包括在一个综合性的医学图像数据集(如 RadImageNet)上训练扩散模型(在图中称为ControlNet)。
  • 输入图像包括MRI、CT和超声等不同类型的医学图像,以及相应的边缘图像和文本提示(可能用于描述图像或指导生成过程)。
  • 这个模型被训练以生成合成图像,这些图像保留了原始输入图像的重要医学属性和结构。
  • 训练过程中,某些网络部分可能被“冻结”以保持在后续步骤中的特定特征或性能。

第二步:微调(Fine-tuning)

  • 这一步骤涉及将预训练的扩散模型微调到特定的下游任务数据集上。
  • 微调的目的是使模型能够捕捉到目标任务数据的独特特征和变化。
  • 为保持一致性和准确性,微调过程中继续使用文本和边缘条件输入,特别是将分割掩膜的边缘信息融入生成条件,以确保解剖结构的准确表达。
  • 微调过程包括为输入图像添加掩模(mask),以及使用文本提示来进一步指导合成图像的生成。
  • 生成的合成图像应更贴近目标任务(如乳腺超声、前列腺MRI、脾脏CT)的特定要求。

第三步:下游任务(Segmentation)

  • 在这一阶段,微调后的扩散模型被用于生成新的、增强的数据,用于提高图像分割模型(例如U-Net)的性能。
  • 生成的增强数据与原始数据一起被用于训练分割模型。
  • 这可以帮助分割模型学习更复杂的图像特征和变体,从而在实际的医学图像分割任务中实现更好的泛化和性能。

创新点

  • 在潜在特征空间中的训练
  • 将条件输入融入模型架构来控制生成步骤
  1. 潜在特征空间中的训练
  • 使用自编码器结构中的编码器将原始数据映射到一个潜在的特征空间中去。
  • 这个潜在空间的数据点,通常称为潜在变量,捕获了数据的本质特征和抽象表示。
  • 即通过编码器产生的潜在空间中的特征 ( z ) 进行扩散训练,而解码器用于从潜在特征空间生成或重建图像。
  1. 条件输入的融合
  • 在生成模型中,条件输入(如文本提示、边缘信息)通常用于指导和控制生成过程,使得生成的图像符合特定的条件或特性。
  • 在上述的DDPM框架中,文本或其他信息可以作为条件嵌入到模型中,通过交叉注意力层,影响模型在每一步生成的图像的特征。
  • 这允许模型在生成过程中考虑到这些外部信息,从而生成与之相匹配的图像。

俩者结合,具体步骤:

  • 编码器:将输入图像编码为潜在变量,这些变量捕获了图像的关键信息和结构。
  • 条件模块:将条件信息(如文本描述)编码到同一潜在空间,或者作为网络中的附加输入。
  • 扩散模型的训练:在潜在空间进行扩散过程的训练,这涉及到用模型学习如何在给定条件下从高斯噪声中重建潜在变量。
  • 解码器:从训练好的潜在变量生成或重建图像,这些图像应当满足给定的条件。
     

优化目标


比如,去噪扩散概率模型(DDPM)生成磁共振成像(MRI)图像的流程可以这样描述:

  1. 初始化: 从RadImageNet数据集中选取一个MRI图像作为起始点( x 0 x_0 x0 ),这是我们想要模型学会生成的目标图像。

  2. 前向过程: 对选定的MRI图像(x_0)添加高斯噪声,生成一系列逐渐增加噪声的图像序列。

    这个过程是通过迭代应用公式(1)和(2)来完成的。

    在每一步(t),按照噪声方案 β t \beta_t βt 的计划,从之前的图像 x t − 1 x_{t-1} xt1 生成新的更噪声的图像 x t x_t xt

  3. 逆向过程: 当噪声水平足够高时(比如经过足够多的时间步骤(T)),我们的目标是从最噪声的图像 x T x_T xT 开始,逐步去除噪声,恢复出原始的清晰MRI图像。

    这个逆向过程是通过公式(3)来近似的,但因为直接计算很困难,所以需要用到一个神经网络。

  4. 神经网络预测: 神经网络的作用是预测在每一步去噪时应该去除多少噪声。

    这里,网络不是直接预测去噪后的图像,而是预测噪声本身,这是通过公式(6)来实现的。

    网络 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t, t) ϵθ(xt,t) 的输出告诉我们每个像素位置上噪声的估计值。

  5. 训练噪声预测网络: 为了训练这个神经网络,我们会优化一个目标函数,这个目标函数是变分下界(VLB),如公式(7)所示。

    简化后的目标函数如公式(11),使得训练更高效。

  6. 生成MRI图像: 经过训练后,我们可以使用这个模型来生成新的MRI图像。

    给定一些条件输入(如疾病的文本描述或边缘信息),模型可以生成具有这些特征的MRI图像。

这个过程的关键在于逆向过程的神经网络预测,它允许模型生成与训练数据分布相匹配的新图像,即使是在数据集中原本不存在的图像。

通过这种方式,我们可以增加用于训练其他下游任务(如分割或分类)模型的数据多样性和数量。
 


如何将不同的条件输入(例如文本或边界框)整合到模型中?

条件编码: 先将条件输入,如文本描述或边界框信息,编码为模型能理解的形式。

例如,文本输入可以通过自然语言处理模型(如BERT或GPT)编码成向量。

对于边界框,可以使用卷积神经网络(CNN)来提取特征。

整合编码: 将这些编码的条件输入作为附加信息整合到 DDPM 的输入中。

在生成过程中,这些条件信息会指导模型重点关注某些特征,比如增强对比度的文本提示可能会让模型生成更对比度更强的图像。

模型训练: 在训练模型时,这些条件输入会和图像一起输入到网络中。

网络学会将条件信息和图像信息相结合,生成与条件相匹配的输出。

 


如何提高边缘检测的准确性,从而生成真实和有意义的医学图像?

使用高级算法: 比如全景嵌套边缘检测(HED)算法,它可以通过深度学习技术提取图像的边缘信息。

HED通过深度监督学习丰富的层次表示,这有助于精确地识别图像边界。

多尺度特征: HED考虑多尺度的图像特征来检测边缘,这允许在不同的解析度下捕捉边缘信息,增加了边缘检测的准确性。

深度监督: 在每一层中使用深度监督确保学习到的特征在所有层次上都与边缘信息对齐,从而提高了整体的边缘检测性能。
 


如何使用自动编码器架构和大规模数据集的预训练检查点,实现稳定的扩散模型?

自动编码器架构: 使用编码器(Encoder)将图像编码到一个潜在空间,解码器(Decoder)从潜在空间重建图像。

这种结构有助于学习数据的内在表示,是生成任务的基础。

预训练: 在大规模数据集上预训练编码器和解码器。

这样做可以让模型学习到从大量数据中提取关键特征的能力。

检查点: 保存预训练的模型状态作为检查点。

这些检查点可以在后续任务中加载,以快速适应新的任务需求,从而避免从零开始训练。

微调: 载入预训练的检查点,并在特定的医学图像数据集上微调模型。

微调可以使模型更好地适应特定的医学图像特征和分布。

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

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

相关文章

python写一个彩票中奖小游戏修订版本

先说规则: print("下面介绍双色球颜色规则:")print("一等奖,投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖")print("二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖&q…

详解SpringCloud之远程方法调用神器Fegin

第1章:引言 咱们作为Java程序员,在微服务领域里,Spring Cloud可谓是个耳熟能详的大名。它提供了一套完整的微服务解决方案,其中就包括了服务间的通信。在这个微服务中,有一个成员特别引人注意,它就是Feign。 那Feign到底是什么呢?简单来说,Feign是一个声明式的Web服务…

Windows7关闭谷歌浏览器提示“若要接收后续 Google Chrome 更新,您需使用 Windows 10 或更高版本”的方法

背景 电脑比较老,系统一直没有更新,硬件和软件版本如下: 操作系统版本:Windows7 企业版 谷歌浏览器版本:109.0.5414.120(正式版本) (64 位) 该版本的谷歌浏览器是支持…

2023年CSDN年底总结-独立开源创作者第一年

2023年最大的变化,就是出来创业,当独立开源创作者,这一年发起SolidUI开源项目,把知乎重新开始运营起来。CSDN粉丝破万,CSDN博客专家和AI领域创作者。 2023年年度关键词:创业 https://github.com/CloudOrc…

c语言实现—动态通讯录

一.前言 上次带大家认识了一下顺序表,其实我们可以在顺序表的基础上实现一个通讯录的小项目,通讯录的本质仍然是顺序表,所以如果下面的代码你有问题的话,先去看看我的上篇文章哦~。 通讯录的功能大家应该都知道吧,这次…

记 Rxjava zip操作符遇到的问题

在项目中遇到了类似下面这样的代码 本意是希望当zip操作符中三个Observable执行完毕之后,将他们返回的数据统一进行处理 Observable.zip(startFirst(), startSecond(), startThird(),(first, second, third) -> {Log.i("Rxjava", "handle all dat…

鸿蒙开发(八)添加常用控件(下)

添加控件的文章分成了上下两篇,上篇介绍了文本显示、文本输入、按钮、图片、单选框、切换按钮这六种常用控件,本篇继续介绍其他几种很重要但略微复杂的控件。 鸿蒙系列上一篇: 鸿蒙开发(七)添加常用控件(…

网络安全防御保护实验(二)

一、登录进防火墙的web控制页面进行配置安全策略 登录到Web控制页面: 打开Web浏览器,输入防火墙的IP地址或主机名,然后使用正确的用户名和密码登录到防火墙的Web管理界面。通常,这些信息在防火墙设备的文档或设备上会有说明。 导…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)-机器人、强化学习

专属领域论文订阅 关注{晓理紫},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 分类: 具身智能,机器人强化学习开放词汇&…

[C++开发 03_2/2 _ STL(185)]

知识点1:STL初始 概述: STL是标准模板库的意思,STL从广义上来讲分为:容器,算法,迭代器。 容器算法之间通过迭代器进行无缝连接。 知识点2:STL初始 2.1 STL诞生 C中面向对象的三大特性&#xff1…

九、Kotlin 注解

1. 什么是注解 注解是对程序的附件信息说明。 注解可以作用在类、函数、函数参数、属性等上面。 注解的信息可用于源码级、编译期、运行时。 2. 注解类的定义 使用元注解 Retention 声明注解类的作用时期。 使用元注解 Target 声明注解类的作用对象。 定义注解类时可以声…

8.6 代理设计模式

文章目录 一、代理模式(Proxy Pattern)概述二、代理模式和观察者设计模式三、模式结构四、协作角色五、实现策略六、相关模式七、示例八、应用 一、代理模式(Proxy Pattern)概述 代理模式是一种设计模式,它通过引入一个…

Windows Defender存在威胁执行操作无反应且一直存在红叉(已解决)

文章目录 前言问题如图一、原因二、解决办法(亲试有效)总结 前言 Windows安全中心(Windows Defender)执行快速扫描/完全扫描后一直存在威胁,执行隔离或者删除操作后下次扫描还会扫出该威胁,但看威胁文件位置…

38、Flink 的CDC 格式:canal部署以及示例

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

leetcode1237. 找出给定方程的正整数解

1237. 找出给定方程的正整数解https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/ 难度中等 101 给你一个函数 f(x, y) 和一个目标结果 z,函数公式未知,请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满…

java生成验证码工具类,java生成图片验证码

java生成验证码工具类,java生成图片验证码 java生成验证码工具类,java生成图片验证码,java生成彩色图片验证码,带干扰线验证码。 调用结果: 工具类调用: GetMapping("/validateCode")public vo…

ubuntu设置右键打开terminator、code

前言: 这里介绍一种直接右键打开本地目录下的terminator和vscode的方法。 一:右键打开terminator 1.安装terminator sudo apt install terminator 2.安装nautilus-actions filemanager-actions sudo apt-get install nautilus-actions filemanager…

【大数据】Flink 中的事件时间处理

Flink 中的事件时间处理 1.时间戳2.水位线3.水位线传播和事件时间4.时间戳分配和水位线生成 在之前的博客中,我们强调了时间语义对于流处理应用的重要性并解释了 处理时间 和 事件时间 的差异。虽然处理时间是基于处理机器的本地时间,相对容易理解&#…

可视化智慧水电站EasyCVR视频智能监控系统方案设计与技术应用介绍

一、背景需求 水电站作为国家重要的能源基地,其安全运行对于保障能源供应和社会稳定具有重要意义。然而,传统的人工监控方式存在着诸多问题,如人力成本高、监控范围有限、反应不及时等。因此,水电站急需引进一种先进的视频智能监…

《Q年文峰》GPT应用的交互式非线性体验

Phoncent博客创始人庄泽峰把自己的小说《Q年文峰》做成GPT应用,显然这是一件值得探索且具有创新意义的事情。 因为传统的阅读体验是线性的,读者只能按照固定的情节顺序进行阅读,而把小说制作成GPT应用后,读者阅读小说的方式是非线…