Neuromation:一文告诉你如何用CNN检测儿童骨龄

栏目: 数据库 · 发布时间: 6年前

内容简介:雷锋网按:本文来自一直以来,NeuroNuggets和Neuromation Research系列文章都致力于介绍其优秀团队的人工智能研究人员。今天要介绍的就是曾获Kaggle Master的Alexander Rakhlin。Alexander是一位深度学习专家,专门研究与医疗影像相关的问题,包括图像分割、物体检测和广义上的卷积神经网络等领域。

雷锋网按:本文来自 Medium ,由雷锋网编译。

一直以来,NeuroNuggets和Neuromation Research系列文章都致力于介绍其优秀团队的人工智能研究人员。

今天要介绍的就是曾获Kaggle Master的Alexander Rakhlin。Alexander是一位深度学习专家,专门研究与医疗影像相关的问题,包括图像分割、物体检测和广义上的卷积神经网络等领域。

就在最近,Alexander的合著论文《使用深度卷积神经网络的儿童骨龄评估》被第四届医疗影像分析大会的深度学习研讨会收录(DLMIA 2018)。这已经不是第一篇Neuromation旗下专门研究医疗影像的论文,我们正好可以利用这个机会来讨论下这项工作的细节。

Neuromation:一文告诉你如何用CNN检测儿童骨龄

人如其骨:骨龄评估

骨骼年龄,或者说骨龄,本质上说就是你的骨头看起来有多大岁数。

随着孩子长大,他/她的骨骼会成长和成熟;这意味着,通过观察孩子的骨骼,我们可以估计出孩子拥有某种骨骼的平均年龄,从而了解孩子的年龄。这个时候,你可能想问这篇文章是不是关于考古学的:活生生的孩子们通常不会去拍X光,除非没有人知道他们什么时候出生的。

是也不是。如果孩子发育正常,骨龄应该在实际年龄的10%以内,但是也有例外。一些例外是无害的,但是最好心知肚明:比如,你的孩子在青春期的快速成长与骨龄有关。因此,如果骨龄比实际年龄大几年,孩子会更早的停止生长,如果骨头比实际年龄“年轻”几年,快速生长会延迟到来。此外,考虑到现在的身高和骨龄,已经可以相当准确地预测一个孩子最终的成年身高,这会派上用场:如果你的孩子喜欢篮球,你可能会对他是否会长到7英尺感兴趣。

其他例外就严重得多:骨龄和实际年龄之间的显著不匹配会预示各种问题,包括生长障碍和内分泌问题。骨龄的单一读数值会告诉临床医生患者在特定时间内的相对成熟度,与其他临床发现相结合,就可以将正常人与相对快速或迟缓的人区分开来。连续的骨龄读数值意味着孩子的成长方向和/或显示他或她在治疗中的进展。通过评估骨龄,儿科医生可以诊断儿童发育过程中的内分泌失调和代谢紊乱问题,如骨骼发育不良,或与营养、代谢或影响骨骺或骨成熟的未知因素有关的生长缺陷。在这种生长迟缓的情况下,骨龄和身高可能都会延迟到几乎相同的程度,但是,通过治疗,达到正常成人身高的潜力仍然存在。

由于上述种种原因,儿科医生对孩子的手部进行X光检查来估计他/她的骨龄是非常常见的……所以自然而然的,自动化就是一个很棒的尝试。

阅读手掌:通过手部和腕部评估骨龄

骨骼成熟度主要由骨骺中继发性骨化中心的发育程度和骨化程度来评价。几十年来,骨成熟度通常是通过对手和腕部骨骼发育的视觉评估来确定的。下面是放射科医生在检查你的手部X射线时所寻找的东西:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

目前估计骨骼年龄的两种最常用的技术是Greulich and Pyle和Tanner Whitehouse(TW2)。两种方法都使用左手和手腕的X线片来评估骨骼的成熟度,其依据是成熟度指标,也就是,管状骨骨骺从骨化的早期阶段到与骨骼融合的X光外观的变化,或者直到骨骼变成人形状之前扁骨的变化……不用担心,我们以前也没听说过这些词语。我们来看一张照片:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

传统的骨骼成熟度评估技术,比如GP或TW2,很冗长,也很耗时,而且在某种程度上是主观的,甚至是资深的放射科医生也不总是同意评估结果。因此,利用计算机辅助诊断系统提高骨龄评估的准确性,增加临床医生的再利用性和效率是非常吸引人的。

近年来,基于深度学习的方法在生物医学的许多问题中显示出优于传统机器学习方法的性能改进。在医疗影像领域,卷积神经网络(CNN)已经成功地用于糖尿病视网膜病变筛查、乳腺癌组织学图像分析、骨病预测和许多其他问题;可以参见我们先前的文章对这些疾病和其他应用的调查。

因此,我们自然也试着将现代深度神经结构也应用于骨龄评估。下面,我们利用北美放射学会(RSNA)组织的儿科骨龄挑战赛(Pediatic Bone Age Challenge)的数据,描述一种完全自动化的骨龄评估的深度学习方法。虽然达到尽可能高的准确度是一个基本目标,但我们的系统也被设计成针对各种医疗中心在不同硬件上产生的射线照片的质量不足和多样性依然能保持鲁棒性。

数据

数据集由北美放射学会(RSNA)提供,RSNA还组织了2017年儿童骨龄挑战赛。这些照片是从斯坦福儿童医院和科罗拉多儿童医院获得的,他们在不同的时间、不同的条件下拍摄了不同的硬件。这些图像由专业的儿科放射学家负责解释,他们在放射报告中记录了骨骼的年龄,记录基于Greulich and Pyle的手和手腕骨骼发育的放射图解的视觉比较。另外,组委会从放射报告中自动提取骨龄标志以作为模型训练的基本依据。

射线照片的大小、方向、曝光量各不不同,而且通常具有特定的标记。整个RSNA数据集包含12611次训练,1425次验证和200个测试图像。由于测试数据集明显太小,而且在开发期间其标签未知,因此我们只在训练集保留的1000张射线照片上对模型进行了测试。

训练数据包括5778个女性和6833个男性的照片。年龄1~228个月,主要为5~15岁儿童。

Neuromation:一文告诉你如何用CNN检测儿童骨龄

预处理I:分割与对比

我们工作的主要贡献之一是严格的预处理流水线。为了防止模型与失真图像学习发生错误关联,我们首先通过分割手来去除背景。

对于图像分割,我们使用的是U-Net深层结构。自2015年被发明以来,U-Net已成为处理分割任务的主流。它由捕获上下文的收缩路径和允许精确定位的对称扩展路径组成;由于这不是本文的主题,因此我们将仅展示一下结构并推荐去阅读可以获得细节的论文:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

我们也使用了批量归一化,以提高训练过程中的收敛性。在我们的算法中,我们使用了广义损失函数。

Neuromation:一文告诉你如何用CNN检测儿童骨龄

标准二进制交叉熵损失函数为

Neuromation:一文告诉你如何用CNN检测儿童骨龄

其中

Neuromation:一文告诉你如何用CNN检测儿童骨龄

像素的真值为

Neuromation:一文告诉你如何用CNN检测儿童骨龄

是像素的预测概率,以及

Neuromation:一文告诉你如何用CNN检测儿童骨龄

Jaccard指数的一个可微推广:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

我们通过去除小而无关的连通分量和均衡对比度来完成分割步骤。下面是我们的预处理流水线的工作原理:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

就像你所看到的,X线片的质量和对比度确实有了很大的提高。在这里你可以停下来训练用于分类/回归的标准卷积神经网络,用我们的预处理和标准化技术(如缩放和旋转)来扩展训练集。我们试了一下这种方法,结果虽然不如我们的最终模型准确,但还是令人相当满意的。

然而,最初的GP和TW方法侧重于特定的手骨,包括指骨、掌骨和腕骨。我们决定尝试使用这些信息,并在几个特定区域上以高分辨率训练单独的模型,以数值评估和比较它们的性能。为了正确定位这些区域,我们必须将所有图像变换到相同的大小和位置,即,将它们全部带到相同的坐标空间,这个过程称为图像配准。

预处理Ⅱ:关键点的图像配准

我们的图像配准方案很简单:我们只需要检测手上的几个特征点的坐标。然后我们将能够计算仿射变换参数(缩放、旋转、平移和镜像)以将图像拟合到标准位置。

为了创建一个训练集的关键点模型,我们使用VGG图像注释器(VIA)手动标记了800张照片。我们选择了三个特征点:第三指远端指骨的尖端,拇指远端指骨的尖端和头骨的中心。关键点的像素坐标就作为我们回归模型的训练目标。

关键点模型再次被实现为深度卷积神经网络,其灵感来自流行的VGG模型族,但是具有回归输出。VGG模块由两个卷积层组成,具有指数线性单元激活、批量标准化和最大池化。下面是结构:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

该模型训练的均方误差损失(MSE)和Adam 优化器:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

为了提高泛化性,我们将标准扩充应用于输入,包括旋转、平移和缩放。该模型输出6个坐标。

找到关键点后,我们计算所有射线照片的仿射变换(缩放、旋转、平移)。我们的目标是保持图像的纵横比,但将其适配到一个均匀的位置,每个射线照片都是如此:

1.中指的尖端水平对齐并定位在图像的上边缘下方大约100个像素;

2.头骨水平对齐并定位在图像底部边缘上方大约480个像素处。

按照惯例,骨龄评估使用左手的X射线照片,但有时数据集中的图像会被镜像。为了检测这些图像并适当地调整它们,我们使用了拇指的关键点。

来看看我们的图像注册模型如何工作。正如你所看到的,手已经成功地旋转到我们的首选标准位置:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

这里有整个预处理流水线的诸多案例。包括分割结果,标准化和注册都展示在第四行里。

Neuromation:一文告诉你如何用CNN检测儿童骨龄

骨龄评价模型

遵循Gilsanz和Ratib的手部骨龄:骨骼成熟度数字地图集,我们从注册的X线照片中选择了三个特定区域,并为每个区域训练了一个单独的模型:

1.整手

2.腕骨

3.掌骨和近侧指骨。

这里是真实射线照片的区域和一些样本对应的分割片段:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

Neuromation:一文告诉你如何用CNN检测儿童骨龄

卷积神经网络通常用于分类任务,但骨龄评估本质上是一个回归问题:我们必须预测年龄,它是一个连续变量。因此,我们想要比较两套CNN架构,回归和分类,所以我们实现了这两个。模型共享相似的参数和训练协议,并且仅在两个最终层中有所不同。

我们的第一个模型是一个定制的VGG风格的架构,具有回归输出。该网络由六个卷积模块组成,具有32、64、128、128、256、384个滤波器,接着是两个全连接的层,每个层由2048个神经元和一个输出组成(我们将在下面展示图片)。输入大小根据图像的考虑区域而变化。为了更好的泛化,我们在完全连接层之前应用正则层。我们将回归目标,即骨龄重新调整到范围[-1, 1 ]。为了避免过度拟合,我们将训练时间放大与缩放,旋转和换档。通过最小化平均绝对误差(MAE),利用Adam优化器对网络进行训练:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

第二个模型用于分类,除了两个最终层之外,与回归模型非常相似。一个主要区别是分配给每个骨龄不同类别。在数据集中,骨龄是以月份表示的,所以我们考虑了所有240个类,倒数第二层变成了具有240个输出的softmax层。该层输出概率的向量,其中类的概率在范围[0, 1 ]中取实值。在最后一层中,概率向量乘以不同骨龄的向量[1,…,239, 240]。由此,模型输出骨龄的单个期望值。我们使用与回归模型相同的协议来训练该模型。

这是用于分类的模型体系结构;除了缺少softmax和binning层之外,回归模型是相同的:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

结果

我们评估了1000个放射线照片训练组的验证集上的模型。按照考虑性别的GP和TW方法,对于每个空间区域,我们分别针对女性和男性训练了性别特定模型,并将其与针对整个人群训练的性别不可知模型进行比较。这里是我们的结果的总结,我们将讨论:

Neuromation:一文告诉你如何用CNN检测儿童骨龄

事实证明,增加性别的输入之后大大提高了准确性,平均1.4个月。最左边的列代表两个性别的回归模型的表现。掌骨和近指骨区(C区)平均绝对误差(MAE)为8.42个月,全手(A区)平均绝对误差(MAE)为8.08个月。三个区域的线性集合提高了7.52个月的总体准确度(表中的下一行)。

性别特定性回归模型(第二栏和第三栏)将MAE提高到男性的6.30个月,女性为6.49个月。注意,对于女性队列,掌骨和近指骨的区域MAE等于6.79个月,甚至比整个手更精确,MAE只有7.12个月!

性别特定性分类模型(第四和第五列)表现略好于回归模型,分别表现出6.16个月和6.39个月的MAE(下行)。

最后,在第六列中,我们展示了所有性别特定模型的集合(分类和回归)。在验证数据集上,它达到了6.10个月的最新精确度,无论从骨龄评估挑战还是从实际应用的角度来看,这都是很棒的结果。

结论

总结一下:在这篇文章中,我们展示了如何开发一个自动化的骨龄评估系统,该系统能够以惊人的准确性评估骨骼的成熟度,类似于或优于专业放射学家。我们用数值方法评估了手的不同区域,发现骨龄评估可以只针对掌骨和近端指骨进行,而不会显著损失准确性。为了克服射线照片的质量多样性,我们引入了严格的清洗和标准化过程,显著提高了模型的鲁棒性和准确性。

该模型在临床环境下具有很大的应用潜力,可以帮助临床医生做出准确和实时的骨龄评估决策,甚至拓展到难以到达的医疗边界。这将确保及时诊断和治疗他们小病人的生长障碍。 雷锋网雷锋网 (公众号:雷锋网)

雷锋网原创文章,未经授权禁止转载。详情见 转载须知

Neuromation:一文告诉你如何用CNN检测儿童骨龄

以上所述就是小编给大家介绍的《Neuromation:一文告诉你如何用CNN检测儿童骨龄》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Visual C++/Turbo C串口通信编程实践

Visual C++/Turbo C串口通信编程实践

熊光明 / 电子工业出版社 / 2004-10 / 55.0

一起来看看 《Visual C++/Turbo C串口通信编程实践》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具