眼底增强型疾病感知蒸馏模型 FDDM:无需配对,fundus 指导 OCT 分类

眼底增强型疾病感知蒸馏模型 FDDM:fundus 指导 OCT 分类

    • 核心思想
      • 设计思路
      • 训练和推理
    • 效果
    • 总结
      • 子问题: 疾病特定特征的提取与蒸馏
      • 子问题: 类间关系的理解与建模

 


核心思想

论文:https://arxiv.org/pdf/2308.00291.pdf

代码:https://github.com/xmed-lab/FDDM

 
主要解决的是使用 OCT图像进行视网膜疾病分类 的问题。

OCT图像非常详细,但它们收集起来成本高昂。

为了解决这个问题,作者原本尝试用一种称为 多模态学习 的方法,即同时利用OCT图像和眼底照片。

问题在于,要找到同一个病人的这两种图像是相当困难的,这在现实中几乎是不可能的。

那么,研究者们是怎么解决这个问题的呢?

他们提出了一种叫做 眼底增强型疾病感知蒸馏模型(FDDM) 的新方法。

这个方法的聪明之处在于,它只用到了 未配对的眼底图像 来增强OCT图像的处理能力。

这就意味着,即使我们没有同一个病人的两种图像,我们也能提高诊断的准确性。

最关键的是,这个模型采用了两种特别的技术,叫做 类原型匹配类相似性对齐

就好像我们有一个专门学习眼底照片的“老师模型”,然后这个模型会把它学到的关于疾病的知识传递给专门学习OCT图像的“学生模型”。

这样,即使学生模型只看到OCT图像,它也能利用从眼底图像中学到的信息来做出更好的判断。

如果眼底图像模型学会了识别一种特定的视网膜病变,即使OCT图像呈现的角度或细节不同,OCT 模型也能用这个知识来更准确地识别出类似的病变。

总之,通过这种方式,我们能在 没有成对数据 的情况下,更有效地使用 OCT 图像进行视网膜疾病的分类。


三种不同的学习方法在视网膜疾病分类的应用中的差异:

  1. 单模态学习 (Single-modal Learning)

    • 在训练阶段,只使用OCT图像。
    • 在测试阶段,同样只使用OCT图像进行疾病的分类。
  2. 多模态学习 (Multi-modal Learning)

    • 在训练阶段,同时使用眼底照片和OCT图像。
    • 在测试阶段,仍然需要同时使用这两种图像来进行分类。
  3. 蒸馏增强方法 (Proposed Distillation Enhancement Method)

    • 在训练阶段,使用眼底照片作为“教师”模型来增强OCT图像的“学生”模型。
    • 在测试阶段,仅使用OCT图像进行分类,不需要眼底照片。

关键点是,使用蒸馏增强方法,附加的模态(即眼底照片)只在训练过程中使用,而在实际的推理或测试过程中则不需要。

这可以简化实际应用中的流程,因为在测试阶段不需要收集额外的眼底照片,降低了成本和复杂性。

 


设计思路

我们现在有一堆复杂的视网膜图像,我们需要从这些图像中识别出各种不同的眼疾。

但这个任务有点像在一个嘈杂的房间里试图听到一个人的声音,因为每张图像都有可能带有它自己的“噪声”,也就是一些我们不需要的信息。

首先,我们有类原型匹配这个技巧:

  • 问题是:每个单独的图像都可能有自己的噪声,这会干扰我们准确识别疾病。
  • 所以解法就是:我们把所有同一种疾病的图像放在一起,然后找到一个平均值,这样就能代表这个疾病的一般特征,而不是某个个别图像的特点。就好比我们从一大堆人的声音中找到一个平均的音调,这样我们的模型就能更清楚地“听到”疾病的声音。

然后是类相似性对齐

  • 这里的问题是:有时候,不同的疾病之间会有一些相互关系,这对于诊断也很重要,尤其是当一个病人可能同时有多种眼疾的时候。
  • 解法:我们让模型学会识别这些疾病间的关系,就像是教它们理解不同声音之间的和谐或不和谐。这帮助我们的模型更全面地理解每种疾病,以及它们如何可能一起出现。

最后,整个框架的目的是将这些知识结合起来:

  • 我们面临的问题:我们需要一种方式来确保我们的模型能同时学习到如何识别疾病和它们之间的关系。
  • 所以作者用了:一个综合的损失函数,这是一个计算公式,用来指导模型在训练时如何调整自己,以便它能同时在两方面做得很好。

所以,FDDM 就像是在给模型上了两门课程:

  • 类原型匹配 是基础课,教模型如何识别每种疾病的基本特征。
  • 然后,类相似性对齐 是高级课,教模型理解不同疾病是如何相互联系的。
  • 整体框架 则确保模型能把这两门课学好,最终能在真实世界中准确地诊断出视网膜疾病。
  • 这样做的好处是,我们甚至不需要所有的图像都是成对的,模型仍然能学到很多有用的信息。

 


训练和推理

训练阶段

  1. 眼底图像通过眼底模型 ( F_t ) 处理,而OCT图像通过OCT模型 ( F_s ) 处理。
  2. 两个模型分别产生特征图,这些特征图通过全局平均池化(GAP)层来减少维度。
  3. 对于眼底图像特征 ( v_f ),采用多层感知机(MLP)投影器进行处理,并计算出类原型,这是类原型匹配的一部分。
  4. 同时,OCT图像特征 ( v_o ) 经过Sigmoid激活后进入分类器。

推理阶段

  1. 分别对眼底和OCT模型得出的特征进行类别均值计算,得到类原型。
  2. 对于OCT模型,它还包括计算类别均值的logits ( q_s ),并通过余弦相似度进行类相似性对齐。

类原型匹配的目的是将眼底模型中关于疾病的特定特征提炼到OCT模型中。

它通过计算每个类别的特征均值来建立一个“原型”,这个原型代表了该类疾病的平均或典型特征。

类相似性对齐则是在推理阶段对OCT图像的类别关系进行调整,以使其与眼底图像的类别关系保持一致。

这通过比较类别均值的logits的余弦相似性矩阵来实现,促使OCT模型学习到不同疾病间的关系。

上图解展示了一个两阶段的过程,其中利用眼底图像来增强OCT图像分类的能力,而在实际应用时,只需要使用OCT图像。

这个过程利用了深度学习,包括特征提取、降维、非线性激活和分类器,同时注重在两种不同模态之间转移和蒸馏知识。

 


效果

在实验中,研究者面对的问题是确定新方法——基于类原型匹配和类相似性对齐的方法——在性能上是否优于现有的单模态、多模态和知识蒸馏方法。

为了解决这个问题,他们采取了以下步骤:

  1. 性能比较:他们将新方法的性能与其他几种方法进行了比较。

    这些方法包括仅使用OCT图像的单模态方法、同时使用OCT和眼底图像的多模态方法,以及使用知识蒸馏技术的方法。

  2. 评估指标:他们使用了准确性指标,如平均精度(MAP)和F1分数,来衡量每种方法的性能。

    MAP是一种衡量模型对所有类别平均表现的指标,而F1分数则是精确度和召回率的调和平均,这两个都是多标签分类任务中常用的性能评估指标。

  3. 实验数据:他们使用了新收集的数据集TOPCON-MM,这个数据集包含了来自369只眼睛的成对的眼底和OCT图像,以及另一个公开可用的多模态数据集MMC-AMD。

解决方案的目的是展示新方法在视网膜疾病多标签分类任务上的优越性。

通过与现有方法的直接比较,研究者可以展示出以下几点:

  • 如果新方法在MAP和F1分数上都优于现有方法,那么它就可以被认为在统计上是有效的。
  • 这种比较可以揭示新方法是否能更好地利用眼底图像中的信息来辅助OCT图像的分类,即使眼底图像不是在所有情况下都可用或是质量较差的情况。
  • 通过在多个数据集上验证新方法,可以证明其稳健性和广泛的适用性,这对于临床实践中的应用尤其重要。

上图表展示了不同模型在视网膜疾病分类任务上的性能比较,具体是通过平均精度(MAP)指标来衡量的。

在图(a)中,我们看到了几种不同模型在 MMC-AMD 数据集上的MAP得分:

  • “Fundus CNN” 表示仅使用眼底图像的卷积神经网络模型。
  • “OCT CNN” 是仅使用OCT图像的卷积神经网络模型。
  • Two-Stream” 是一个多模态学习模型,同时使用眼底和OCT图像。
  • “FitNet” 可能是一种网络结构,用于多模态学习或知识蒸馏。
  • “KD” 代表知识蒸馏模型。
  • Ours” 是指提出的FDDM模型。

可以看到,“Ours”(即作者们提出的模型)在MAP得分上优于其他所有模型,达到了92.29%。

在图(b)中,我们看到了模型从其他眼底数据集转移到TOPCON-MM数据集时的MAP得分:

  • “OCT CNN” 表示的是基准OCT卷积神经网络模型。
  • “Ours” 代表应用了提出的FDDM模型。

在两种不同的转移设置中:

  • 从 MMC-AMD 数据集转移到 TOPCON-MM 数据集。
  • 从 RFMiD 数据集转移到 TOPCON-MM 数据集。

在这两种情况下,"Ours"模型的性能都优于仅使用OCT图像的卷积神经网络模型,分别提高了4.26%和2.21%。

这些图表证实了提出的FDDM模型在处理多模态视网膜图像分类任务时,无论是在单一数据集上还是从其他数据集转移学习时,都能取得比现有技术更好的性能。

 


总结

FDDM 的逻辑关系可以拆解成两个主要的子问题。

子问题: 疾病特定特征的提取与蒸馏

  • 问题: 如何确保OCT模型能够学习到疾病的核心特征,而不是由于图像中的噪声或样本差异造成的误差?
  • 解法: 类原型匹配(CPM)。
  • 为什么: 类原型匹配通过计算同一疾病类别内所有样本特征的平均值来生成代表性的特征向量(即原型),这样可以提炼出与个体样本噪声无关的疾病核心特征。
  • 目的: 这个解法使OCT模型能够集中学习对疾病诊断最重要的特征,而忽略样本间的非疾病相关变异。

子问题: 类间关系的理解与建模

  • 问题: 如何使OCT模型理解不同疾病类别之间的关系,尤其是在多标签分类场景中,这些关系可能包含对诊断有用的信息?
  • 解法: 类相似性对齐(CSA)。
  • 为什么: 类相似性对齐通过比较不同疾病类别的特征表示之间的相似度,从而使模型能够学习到疾病间的共现模式和关联性。
  • 目的: CSA的目的是使OCT模型能够在不仅识别单一疾病的同时,也理解和识别疾病间可能存在的复杂关系,这对于精确的疾病分类和诊断至关重要。

假设我们的OCT模型正在尝试学习识别黄斑变性,这是一种常见的视网膜疾病。

每个患有黄斑变性的患者的OCT图像可能会因为机器的差异、扫描的角度、病情的严重程度等因素而有所不同,因此,这些图像可能包含很多个体特异性的噪声。

类原型匹配(CPM)就像是在找到所有黄斑变性图像的“共同语言”。

它把所有黄斑变性的图像特征取平均,创建一个典型的黄斑变性特征向量,这个向量捕获了与这个疾病相关的关键特征,而忽略了每个单独图像中的个别差异。

因此,OCT模型通过学习这个“共同语言”,即类原型,就能更准确地识别出黄斑变性,而不会被单个图像中的噪声所干扰。

 

FDDM = 类原型匹配 + 类相似性对齐

  • 类原型匹配的目的是提供稳健的疾病特征表示,以便模型能够更准确地识别每种疾病。
  • 类相似性对齐的目的是提高模型对不同疾病类别之间关系的理解,这对于多疾病识别和诊断非常关键。

在很多情况下,眼睛疾病并不是孤立发生的,比如,糖尿病视网膜病变(DR)和黄斑水肿(DME)经常一起出现。

类相似性对齐(CSA)的目标是帮助OCT模型捕捉到这些疾病间的联系。

例如,如果模型在训练时发现当DR出现时,DME的几率也增加,那么在实际应用中,当模型在一个图像中检测到DR的特征时,它会考虑到DME的可能性,即使DME的特征不是非常明显。

这种对类间关系的理解,提高了模型在真实世界复杂病例中的准确性和可靠性。

 

归纳:这两个子解法共同构成了FDDM的核心,它们使得该模型能够在未配对的数据上进行训练,并且在测试时不需要眼底图像,大大提高了模型的实用性和效率。

通过这种方式,FDDM能够在复杂的临床场景中提供更精确的疾病分类性能。

应用场景:提高OCT图像的疾病分类性能

  • 知识蒸馏:即使你没有足够的OCT图像,FDDM可以帮助你从现有的眼底图像中蒸馏疾病相关的信息,以增强OCT图像分类器的性能。
  • 多模态学习:如果你有成对的眼底和OCT图像,FDDM能够提取这两种图像模式中的互补信息,从而提高疾病分类的准确性。

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

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

相关文章

【笔试常见编程题02】字符串中找出连续最长的数字串、数组中出现次数超过一半的数字、计算糖果、进制转换

1. 字符串中找出连续最长的数字串 读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述 个测试输入包含1个测试用例,一个字符串str,长度不超过255。 输出描述 在一行内输出str中里连续最长的数字串。 示例 1 输入 abcd12345ed125s…

java数据结构与算法刷题-----LeetCode328. 奇偶链表

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 将链表按奇偶顺序,分成两个链表。最后将偶数链表放在…

计算机网络-编制与调制(基带信号 基带传输 宽度信号 宽度传输 编码 调制 )

文章目录 基带信号与宽带信号编码与调制数字数据编码为数字信号数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号小结 基带信号与宽带信号 信道上传输的信号除了可以分为数字信号和模拟信号,也可以分为基带信号和宽带信号,只是分类…

【每日一题】最大合金数

文章目录 Tag题目来源解题思路方法一:二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】【2024-01-27】 题目来源 2861. 最大合金数 解题思路 方法一:二分枚举答案 思路 如果我们可以制造 x 块合金,那么一定也可以制造 x-1 块合金。于…

支持下一代网络IpV6的串口服务器,IpV6串口485接口转网口

和IPv4比较,IPv6有两个极具吸引力的特点:一个是IPv6采用的128位地址格式,而IPv4采用32位的地址格式,因此IPv6使地址空间增大了296;另一个是IPv6物联网数据业务具有更强的支持能力,成为未来物联网的重要协议…

Ps:创建基于饱和度的蒙版

能够区分图像上哪些区域的饱和度高,哪些区域的饱和度低,在调色过程中是相当有用的。 比如,使得饱和度高的区域更加饱和,可增加图像色彩反差,让画面更引人注目。 或者,使得饱和度区域趋于饱和,让…

技术书评和笔记【01】脑机接口-电路与系统 【2020版】

前言: 荷兰作者,Amir Zjajo博士,毕业于荷兰代尔夫特理工大学,方向 面向移动健康的低功耗混合型号电路与系统,以及,面向认知的神经形态电路。 ,脑机接口 - 电路与系统一书,系统介绍了,脑机接口电路与系统的实现技术,尤其,提到了量产和设计的问题,难能可贵,摘录如…

JVM篇----第九篇

系列文章目录 文章目录 系列文章目录前言一、分代收集算法二、新生代与复制算法三、老年代与标记复制算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、分代…

MySQL-删除重复数据

在实际应用中,遇到一个这样的问题,MySQL中存储的数据为资讯类数据,在页面展示时会出现多个平台的新闻报导相同的内容,导致页面会出现重复数据。因为数据是每天定期更新,所以最快捷有效的方式是在更新完数据后增加一个去…

YOLOv8融合改进 更换检测头同时改进C2f模块

一、Detect_DyHead检测头和C2f-EMSC,C2f-EMSCP模块 详细介绍和代码在往期的博客里: Detect_DyHead: (YOLOv8改进检测头Detect为Detect_Dyhead-CSDN博客) C2f-EMSC和C2f-EMSCP: (YOLOv8改进之多尺度转换模块C2f-EMSC和C2f-EMSCP-CSDN博客) 二、算法实现 1、将检测…

QT之 QDebug 调试(一)

在QT中&#xff0c;进行调试&#xff0c;则需要在头文件地方加上 #include <QDebug> 加上之后&#xff0c;在编译之后则其输出的信息则在应用程序输出那里显示信息。 其QDebug 信息调试则如&#xff1a; qDebug() << " 需要插入的信息 "…

RPC教程 7.服务发现与注册中心

0.前言 这一节的内容只能解决只有一个服务的情况。要是有多个服务(即是多个结构体&#xff09;这种就解决不了&#xff0c;也即是没有服务ip地址和服务实例的映射关系。 1.为什么需要注册中心 在上一节中&#xff0c;客户端想要找到服务实例的ip,需要硬编码把ip写到代码中。…

猿媛员的专属春联来咯

我们“因程序汇聚&#xff0c;因猿份相识”&#xff0c;今天来给辛苦了一年的“猿媛员”们送上几幅恶搞对联&#xff0c;为图一笑 &#x1f604; 闲言少叙&#xff0c;上对联 龙行多福 上联&#xff1a;龙龙龙龙龙龙龙 下联&#xff1a;福福福福福福福 形象版 上联&#…

centos 7安装MySQl

本文参考借鉴&#xff1a;https://cloud.tencent.com/developer/article/2353312&#xff0c;非常赞&#xff01; 为了避免权限不足的问题&#xff0c;建议切换至root用户进行安装 1.MySQL的清理与安装 查看是否存在MySQL服务 安装mysql之前&#xff0c;需要先看看要安装系…

【极数系列】Flink搭建入门项目Demo 秒懂Flink开发运行原理(05)

文章目录 引言1.创建mavenx项目2.包结构3.引入pom依赖4.增加log4j2.properties配置5.创建主启动类6.构建打jar包7.flinkUI页面部署 引言 gitee地址&#xff1a;https://gitee.com/shawsongyue/aurora.git 源码直接下载可运行&#xff0c;模块&#xff1a;aurora_flink Flink 版…

phar反序列化漏洞

基础&#xff1a; Phar是一种PHP文件归档格式&#xff0c;它类似于ZIP或JAR文件格式&#xff0c;可以将多个PHP文件打包成一个单独的文件&#xff08;即Phar文件&#xff09;。 打包后的Phar文件可以像普通的PHP文件一样执行&#xff0c;可以包含PHP代码、文本文件、图像等各…

Python爬虫---Scrapy框架---CrawlSpider

CrawlSpider 1. CrawlSpider继承自scrapy.Spider 2. CrawlSpider可以定义规则&#xff0c;再解析html内容的时候&#xff0c;可以根据链接规则提取出指定的链接&#xff0c;然后再向这些链接发送请求&#xff0c;所以&#xff0c;如果有需要跟进链接的需求&#xff0c;意思就是…

Redis实现多种限流算法

一 常见限流算法 1 固定窗口限流 每一个时间段计数器&#xff0c;当计数器达到阈值后拒绝&#xff0c;每过完这个时间段&#xff0c;计数器重置0&#xff0c;重新计数。 优点&#xff1a;实现简单&#xff0c;性能高&#xff1b; 缺点&#xff1a;明显的临界问题&#xff0c…

有手就行!阿里云上3分钟搞定幻兽帕鲁联机服务器搭建

幻兽帕鲁最近在社区呈现了爆火的趋势&#xff0c;在线人数已突破百万级别&#xff0c;官方服务器也开始出现不稳定&#xff0c;卡人闪退的情况。对于有一定财力的小伙伴&#xff0c;搭建一个私人服务器是一个最稳定而舒服的解决方案。 本文萝卜哥将讲解一下如何快速搭建 palwo…

看图说话:Git图谱解读

很多新加入公司的同学在使用Git各类客户端管理代码的过程中对于Git图谱解读不太理解&#xff0c;我们常用的Git客户端是SourceTree&#xff0c;配合P4Merge进行冲突解决基本可以满足日常工作大部分需要。不同的Git客户端工具对图谱展示会有些许差异&#xff0c;以下是SourceTre…