Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Neuromation新研究:利用卷积神经网络进行儿童骨龄评估

近日,Neuromation 团队在 Medium 上撰文介绍其最新研究成果:利用卷积神经网络(CNN)评估儿童骨龄,这一自动骨龄评估系统可以得到与放射科专家相似或更好的结果。该团队评估了手骨不同区域,发现仅对掌骨和近端指骨进行评估,得到的结果与对整个手骨进行评估的结果相差无几。为了克服放射图像的质量和多样性问题,该团队引入了严格的清理和标准化过程,以增强模型的鲁棒性和准确率,提升骨龄评估的准确率、提高结果的可复现性以及临床医生的效率。

Alexander 的论文《Pediatric Bone Age Assessment Using Deep Convolutional Neural Networks》(Vladimir Iglovikov、Alexander Kalinin 以及 Alexey Shvets 联合完成的一项工作)已经发表在第 4 届 Deep Learning in Medical Image Analysis(DLMIA 2018)Workshop 上。这不是 Neuromation 在医学影像方面发表的第一篇论文,但这是一个深入了解该研究细节的好机会。与我们之前发表的关于医疗概念规范化的文章(https://medium.com/neuromation-io-blog/neuromation-research-medical-concept-normalization-in-social-media-posts-f06504200cec)相似,这是一件严肃且相当复杂的事。

骨龄反映了你的年龄:骨龄评估

骨龄,基本上就是指你的骨头看起来多大了。随着孩子的成长,他的骨骼也在逐渐成长。这就意味着你可以通过观察儿童的骨骼,根据具备此类骨骼的儿童的平均年龄来了解这个孩子多大了。这时候你可能会想这是不是一篇考古学方面的文章:毕竟活着的小孩应该并不怎么拍 X 光。

这么想是对的,但是也不对。正常发育的话,儿童的骨龄应该在生理年龄(日历年龄)的上下 10% 区间内波动。但也有例外,例如,孩子青春期的生长突增可能会影响骨龄。因此,如果骨龄比生理年龄大几年的话,该儿童就会提前停止生长,而如果骨骼比较「年轻」的话,则可能会出现延迟的生长突增。此外,在给定身高和骨龄的情况下,你可以准确预测这个孩子的成年身高,这也可以派上一些用场:如果你的孩子喜欢篮球,你可能想知道他未来身高能否超过 7 英尺。

还有一些例外情况:骨龄和生理年龄严重不匹配是预示着身体出现问题,如成长障碍和内分泌问题等。骨龄只能告诉医生患者在特定时间时骨骼的相对成熟度,还要和其他临床指标结合才能区分出是正常生长还是生长相对提前或迟缓。连续的骨龄读数可以说明儿童的发育方向或治疗进展。通过评估骨龄,儿科医生可以诊断儿童发育过程中的内分泌和代谢紊乱问题,如骨发育不良或受营养、代谢或其他未知因素影响的生长缺陷,这可能会损害骨骺或骨质成熟。在这种生长迟缓情况下,骨龄和身高可能会有相同程度的延迟,但是经过治疗,此类儿童仍可达到正常成年人的身高。

综上所述,儿科医生常常会用 X 光照射儿童手部来评估其骨龄……所以自动化是一个很大的问题。

读手骨:从手掌和手腕评估骨龄

骨骼成熟度主要是通过骨骺中次级骨化中心的发育和骨化程度来评估的。几十年来,评估骨骼成熟度通常是根据对手骨和手腕的骨骼发育情况进行可视化评估来进行的。以下是放射科医生在查看手部 X 光片时看到的内容:

现在评估骨龄的两种最常用的技术是 Greulich-Pyle 法和 Tanner-Whitehouse(TW2)法。这两种方法都是根据成熟度指标,用左手手掌和手腕的放射图像评估骨骼成熟度,即管状骨的骨骺从骨化的最早阶段到它们和骨干融合的过程中放射影像呈现出的变化,或者是扁骨在变成成年人骨骼形状之前在放射影像上呈现出来的变化……别担心,我们在此之前也没听过这些。我们将这一过程展示在下图中:

像 GP 或 TW2 这样的传统评估骨骼成熟度的技术耗时较久,从一定程度上说也太过主观,因此一些高级的放射科医生也不总是认可这些结果。因此,使用计算机辅助诊断系统提升骨龄评估的准确率、提高结果的可复现性以及临床医生的效率就变得很诱人了。

近期,一些基于深度学习的方法已经证明在解决生物医学领域的多个问题时性能优于传统的机器学习方法。而在医学成像领域,卷积神经网络已经成功应用于糖尿病视网膜病变筛查、乳腺癌组织学成像分析、骨骼疾病预测以及一些其他问题中。如果你想深入了解这些应用,请参阅我们之前的文章(https://medium.com/neuromation-io-blog/artificial-intelligence-technologies-could-help-solve-the-global-healthcare-crisis-441a51ac45b8)。

因此我们试着将现代深度神经网络架构应用于骨龄评估。下文将描述用全自动深度学习方法解决骨龄评估问题的完整过程,我们所用的数据来自儿科骨龄估计挑战赛(http://rsnachallenges.cloudapp.net/competitions/4),该比赛由北美放射学会(RSNA)举办。尽管我们的主要目标是要获得尽可能高的准确率,但还是要保持系统的鲁棒性,克服不同医疗中心的不同硬件所生成 X 光片的质量问题和多样性问题。

数据

数据集来自于举办了儿科骨龄挑战赛 2017 的 RSNA。他们从斯坦福儿童医院和科罗拉多儿童医院获取了放射图像,这些图像是在不同时间不同条件下用不同设备拍出来的。专业的儿科放射医师对这些图像进行注释,他们将这些图像与 Greulich 和 Pyle 所著《手部骨骼发育放射图解》进行比较,并在报告中记录骨龄。大赛组委会从这些报告中提取了骨龄信息,并将其作为模型训练的真值。

放射图像在比例、方向、曝光等方面各不相同,而且通常会带有特定的标记。完整的 RSNA 数据集包含 12,611 个训练图像、1,425 个验证图像以及 200 个测试图像。显而易见测试集特别小,且在开发阶段我们并不知道其标签,因此我们从训练集中取出 1000 张放射图像,在这些图像上对模型进行测试。

训练数据包含 5778 名女性和 6833 名男性的放射图像。他们的年龄从 1 个月到 228 个月不等,受试者多为 5 到 15 岁的儿童:

预处理 I:分割和对比

我们工作的关键贡献之一是进行了严格的预处理。为了防止模型因图像伪影学习到错误信息,我们首先通过图像分割来移除图像背景。

我们用 U-Net 深度架构(https://arxiv.org/abs/1505.04597)进行图像分割。自 2015 年 U-Net 出现以来,它就成为分割任务中的主力。它由一个获取上下文信息的收缩路径(contracting path)和一个用于精准定位的对称扩张路径(symmetric expanding path)组成;因为本文主题不是 U-Net,我们简单地展示一下其架构即可,细节请参阅论文。

我们还在训练过程中使用了批归一化使函数收敛。我们的算法使用的是广义损失函数(generalized loss function)式中 H 是标准的二进制交叉熵损失函数,式中 y_i 是像素 i 的真值,是像素的预测概率,J 是 Jaccard 系数的可微泛化:

我们通过移除小的无关的连接组件和均衡对比度完成了分割步骤。下图是我们进行预处理的流程:

如你所见,放射图像的质量和对比度有了显著的提升。你可以到这里停止预处理,用我们的预处理方法和标准技术(如缩放和旋转)来增强训练集,然后训练一个标准的卷积神经网络用于分类或回归。我们试了这种方法,尽管结果不如我们的最终模型,但是也很令人满意。

之前的 GP 和 TW 方法关注的是手骨的特定部位(包括指骨、掌骨和腕骨)。我们决定试着用这些信息,针对几个解析度较高的特定区域分别训练模型,再评估和比较它们的性能。为了正确定位这些区域,我们要将所有图的大小和位置转换成一样的,也就是说将它们放在相同的坐标空间中,该过程通常被称为图像配准(image registration)。

预处理 II:基于特征点进行图像配准

我们的图像配准策略很简单:检测手骨中几个特征点的坐标,然后计算仿射变换参数(缩放、旋转、平移和反射),使图像与标准位置一致。

为了创建特征点模型的训练集,我们用 VGG 图像注释器(VIA)手动标注了 800 张放射影像。我们选择了三个特征点:第三根手指远端指骨的顶端,拇指远端指骨的顶端以及头状骨的中心。我们将特征点的像素坐标作为回归模型的训练目标。

再说一次,特征点模型是受一系列 VGG 族模型启发、通过深度卷积神经网络实现的回归模型。VGG 模块由两个带有指数线性单元激活、批归一化和最大池化的卷积层组成。下图是其架构:

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

为了提升泛化性能,我们对输入应用了包括旋转、平移和缩放在内的标准增强。模型输出 6 个坐标,即 3 个特征点中每个特征点有 2 个坐标。

找到特征点后,我们就可以计算所有放射影像的仿射变换(缩放、旋转、平移)。我们的目标是在保持图像纵横比的情况下,将其调整到统一的位置:

1. 中指顶端水平对齐,在图像上边缘以下约 100 个像素处。

2. 头状骨水平对齐,在图像下边缘以上约 480 个像素处。

通常用左手的放射影像评估骨龄,但有时候数据集中的图像会呈镜像。为了检测这些图像并对其进行适当调整,我们使用拇指作为特征点。

来看一个图像配准模型起作用的例子。如你所见,手骨成功地旋转到我们希望的标准位置了:

此处展示了更多经过完整预处理的样本。分割、归一化以及配准结果见第四行:

骨龄评估模型

遵循 Gilsanz 和 Ratib 的《Hand Bone Age: a Digital Atlas of Skeletal Maturity》,我们从经过配准的放射影像中选择了三个特定区域,针对每一个区域训练了一个单独的模型:

1. 完整的手骨;

2. 腕骨;

3. 掌骨和近端指骨。

下图是真实放射影像中的上述区域以及相对应的分割样本:

卷积神经网络常用于分类任务,但是骨龄评估本质上是一个回归问题:我们必须要预测年龄,而年龄是一个连续的变量。因此,我们需要比较两种 CNN 架构设置——回归和分类。我们分别实现了二者,它们的参数和训练方法类似,区别只在于最后两层。

我们的第一个模型是自定义的 VGG 架构,其输出结果是回归结果。网络堆叠了 6 个卷积核大小分别为 32、64、128、256、384 的卷积模块,接着是两个有 2048 个神经元的全连接层和一个输出层(见下图)。输入的大小取决于需要预测的图像区域。为了更好地进行泛化,我们在全连接层之前应用了 dropout 层。我们还重新调整了回归目标也就是骨龄的范围,将其定在 [-1,1]。为了避免过拟合,我们还使用缩放、旋转和位移等方式增强训练数据。该网络是用 Adam 优化器通过最小化平均绝对误差(MAE)训练得到的:

第二个模型是分类模型,该模型和回归模型很像,只是最后两层不同。一个主要的区别是分配给每个骨龄的类别不同。在数据集中,骨龄是以月为单位的,所以我们可以将其视为 240 类,将倒数第二层变成有 240 个输出的 softmax 层。这一层输出的是概率的向量,这里的类别概率真值范围在 [0,1] 区间内。最后一层中,概率向量与不同骨龄的向量 [1,…,239,240] 相乘。因此,该模型会输出骨龄的期望值。我们用和回归模型同样的训练方法训练了这个模型。

下图是分类模型的架构,除了多了 softmax 层和分箱层(binning layer)外,其他和回归模型相同:

结果

我们从训练集中取出 1000 张放射图像作为验证集来评估模型。遵循 GP 和 TW 方法将性别考虑在内,对每个空间区域我们都针对性别训练了性别特定模型,并与在整个数据集上训练得到的不区分性别的模型做了比较。以下是结果总结:

结果证明在输入中添加性别可以将模型准确率平均提高 1.4 个月。最左边这一列表示针对两个性别的回归模型的表现。掌骨和近端指骨区域(区域 C)的 MAE 为 8.42 个月,整个手骨(区域 A)的 MAE 为 8.08 个月。对这三个区域进行线性集成可以将准确率提高到 7.52 个月(表中最后一行)。

性别特定的回归模型(第二列和第三列)将针对男性的模型的 MAE 改善为 6.30 个月,将针对女性的模型的 MAE 改善到 6.49。需要注意的是,就女性而言,掌骨和近端指骨区域的 MAE 为 6.79 个月,甚至比对整个手骨进行预测的结果还准确,后者的 MAE 仅为 7.12 个月。

性别特定的分类模型(第四列和第五列)的结果比回归模型的结果略好,它们的 MAE 分别为 6.16 个月和 6.39 个月(最后一行)。

最后,在第六列,我们将所有性别特定的模型(分类和回归)进行集成。在验证集上,集成模型得到的准确率为 6.10 个月,这也是当前最佳的结果,无论从骨龄评估挑战赛还是从实际应用来看,这都是一个很好的结果。

结论

本文介绍了如何开发可以准确评估骨骼成熟度的自动骨龄评估系统,该系统可以得到与放射科专家相似或更好的结果。我们评估了手骨不同区域,发现可以仅对掌骨和近端指骨进行评估,得到的结果与对整个手骨进行评估的结果相差无几。为了克服放射图像的质量和多样性问题,我们引入了严格的清理和标准化过程,以显著增强模型的鲁棒性和准确率

我们的模型有极大的潜力部署在临床环境中,帮助临床医生实时判断骨龄。这可以保证在患病儿童出现成长障碍时能进行及时的诊断和治疗。


原文地址:https://medium.com/neuromation-io-blog/neuromation-research-pediatric-bone-age-assessment-with-convolutional-neural-networks-ad539ffb671f

理论医学影像计算机视觉
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

提前停止技术

在机器学习中,提前停止是一种正则化形式,用于在用迭代方法(例如梯度下降)训练学习器时避免过度拟合。 这种方法更新了学习器,使其更好地适合每次迭代的训练数据。 这提高了学习器在训练集之外的数据上的表现。 但是,提高学习器对训练数据的适应性是以增加的泛化误差为代价的。 提前停止规则提供了在学习器开始过度训练之前可以运行多少次迭代的指导。提前停止规则已经在许多不同的机器学习方法中使用,理论基础不尽相同。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

规范化技术

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

指数线性单元技术

一种激活函数, ELUs是对ReLU激活函数的一种演变,将激活函数更能够保持一个noise-robust状态。所以提出一个具有负值的激活函数,这可以使得平均激活接近于零,但它会以更小的参数饱和为负值的激活函数ELUs。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

暂无评论
暂无评论~