一文带你解读:卷积神经网络自动判读胸部CT图像的机器学习原理(三)

简介: 一文带你解读:卷积神经网络自动判读胸部CT图像的机器学习原理(三)

可能方案:从CT生成文本

考虑到我们只有成对的图像与检查报告,一种直观的方法是尝试直接从图像生成文本。在这一方案中,我们首先将CT图像处理为低维表示(例如使用卷积神经网络),然后从该低维表示生成文本(例如使用LSTM):

image.png

截至目前为止,我还没有看到任何关于从CT影像直接生成诊断报告的研究。然而,我倒是发现了几项关于从胸部X光片自动生成报告的研究,相比之下这一课题看起来更加可行,因为胸部X光片的大小相对CT影像要小得多(小1000倍左右),而诊断报告的长度要短得多(短6倍)。然而,即使在这项更直接简单的任务中,模型也难以生成准确的报告。我怀疑一部分原因在于模型生成的句子中,有很多是描述病人的某些健康生理指标的句子。生成大量这种语句的模型可能获得一个不错的模型分数,然而这个模型却很有可能在描述病人的病理与异常的时候糟糕得一塌糊涂——而这恰好是医生最关心的部分!

尽管从CT图像生成文本可能是一项有趣的学术研究,但是这个课题有很多实际缺陷,包括:

  • 文本生成模型必须达到非常可观的正确率才可能在商业上使用。如果每10个自动生成的报告中就有一个出错,没有人敢使用这个系统,因为医疗错误的潜在成本太高,而且检查每个报告的正确性所需的时间比从头开始生成报告还要多。
  • 文本生成模型本身并不能直接体现模型对每一类病变的检测效果,然而这是放射科医生需要看到的,这样他们才能信任这个系统。有些病变比其他病变更难检测,而放射科医生想知道模型在检测不同种类的病变时分别有怎样的表现。

一个更实际的方法是建立一个机器学习系统,它可以以结构化的方式预测病变类型与位置。然后,我们可以评估模型对每一类病变的检测效果,同时,我们还可以在原始影像上高亮标记出现病变的位置。这种系统可用于自动分类(例如,“将显示气胸的所有CT影像移动到放射科医生队列的顶部”),并且结合放射科医生人工看片,以提高诊断准确性。此外,一个良好的病变类型/位置的预测模型也可以用来生成文本(如果这是人们期望的目标之一)。因为给定影像中出现的病变类型与病变位置的列表,按照特定规则生成基本的文本报告是很简单的,因为放射学语言是高度结构化的。

单一病变CT分类

由于前一节所列的原因,基于CT影像的病变分类引起了人们的极大兴趣。在单一病变CT分类中,一个模型(通常是卷积神经网络)处理一幅CT图像,并根据所关注的某种特定病变是否存在产生0或1(即二分类):

image.png

这些工作都着眼于于一次预测一种异常或一类异常,它们依赖手工制作的小型数据集,这些数据集已经由人类专家在切块或切片级别上精心标记。

这是一张我整理的表格,总结了一些先前的工作,这些工作集中于从胸部CT影像预测间质性肺病。此处显示的模型通常对每张切片指定一个类别标签,显示影像中的患者是否罹患间质性肺病:

image.png

下面是我整理的另一张表,总结了先前基于CT影像预测其他病变(包括肺癌、颅内出血和气胸)的其他工作:

image.png

训练基于切块或切片的模型的一个优点是训练好的模型可以轻易地在切块或切片水平上预测病变。而缺点在于,训练模型自然也需要切块或切片的模型标注,这在现实的医疗卫生系统中是获取不到的,这将会导致:

  • 数据集中含有的影像数量严重受限(除了Ardila与Kuo等人的研究外,其他上文所述研究使用的数据集包含的CT影像数量均不足1200张);
  • 可以同时研究的病灶数量受限(所有研究均考虑<8处病灶)。

多病变CT分类

尽管单一病变分类模型可以获得很高的性能,但是这一研究方向受限于其固有的局限性。要进行全面的CT判读,需要数百个独立的二分类器。CT自动判读的另一个研究路线是多标签分类,可以实现在一张CT图像上同时预测多种病变类型。有关多类别分类与多标签分类的综述,请参阅这篇文章。

多标签病变分类如下图所示:

image.png

直到我最近的工作之前,多标签胸部CT分类的问题还没有被深入探讨。然而,多标签胸部X光片分类已经被深入研究,这得益于多个公开的大型胸部X光片公共数据集:

image.png

受之前胸部X光片多标签分类的启发,我最近研究了胸部CT的多标签分类。我在多标签胸部CT分类方面的工作分为三个部分:

  • 生成19993例患者的36316张胸部CT影像的数据集。据我所知,这是世界上最大的多注释三维医学成像数据集。
  • 提出一种基于规则的方法,用于从平均F值为0.976的自由文本放射报告中自动提取结构化的异常标签。这些结构化异常标签是训练分类器所必需的。
  • 多器官、多疾病卷积神经网络分类器的训练和评估,该分类器可分析整张CT图像,同时预测83类病变。该模型对其中的18种病变实现了高于0.90的平均AUC,而83类病变的平均AUC为0.773。

在以后的文章中,我将更详细地分别探讨我的工作的三个方面:如何准备一个包含成对的CT图像和诊断报告的大型CT数据集;如何从报告中提取结构化标签;如何构建一个完整的CT分类器。

基于CT数据的其他任务

基于CT影像数据的其他任务包括:

  • 目标检测,即训练模型来预测感兴趣的病变点的边界框的坐标。在这一任务中,我们需要感兴趣的病变点的边界框,用于训练与评估模型。在CT影像的目标检测这一方面,这项任务的一个例子可以在DeepLesion论文中找到。
  • 图像分割,训练模型来生成像素级的分割遮罩(也即病变的轮廓)。
  • 图像配准,训练模型来对齐两张不同的扫描图像,使解剖结构处于大致相同的位置。

小结

  • 胸部CT是由大约512 x 512 x 1000灰度像素组成的三维医学图像,通过X射线源和围绕患者身体旋转的探测器获得。
  • 放射科医生从CT影像中确定病变的种类与数量,这一过程称为CT的判读;放射科医生通常会写一份诊断报告记录他们的发现。
  • 医院存储成对的CT图像与诊断报告,但是不存储目标边界框、像素级别的掩模以及图像标签。
  • 先前有关CT图像自动判读的工作集中于一次识别一种病变,例如间质性肺病或颅内出血。
  • 最近,我建立了一个含有36316张胸部CT图像的数据集,并建立了一个多标签分类模型,从单张图像上预测83类病变的数量与位置。
  • 基于CT的其他任务包括目标检测、图像分割和图像配准等。
目录
相关文章
|
17天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
9天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
9天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
25 3
|
11天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
33 3
|
20天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
22 2
|
20天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
27 1
|
10天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
27 0
|
11天前
|
机器学习/深度学习 人工智能 安全
人工智能与机器学习在网络安全中的应用
人工智能与机器学习在网络安全中的应用
34 0
|
12天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习的奇迹:如何用神经网络识别图像
【10月更文挑战第33天】在这篇文章中,我们将探索深度学习的奇妙世界,特别是卷积神经网络(CNN)在图像识别中的应用。我们将通过一个简单的代码示例,展示如何使用Python和Keras库构建一个能够识别手写数字的神经网络。这不仅是对深度学习概念的直观介绍,也是对技术实践的一次尝试。让我们一起踏上这段探索之旅,看看数据、模型和代码是如何交织在一起,创造出令人惊叹的结果。
24 0

热门文章

最新文章