一种基于深度神经网络的X光片手骨成熟度判读方法
技术领域
本发明涉及医学图像分析领域及机器学习领域,特别涉及一种应用于人体手骨X光片影像的智能骨成熟度判读方法,属于基于深度学习的医学影像分析领域。
背景技术
骨骼年龄,简称骨龄,是由儿童的骨骼钙化程度所决定的。骨龄是衡量儿童生长发育的重要指标之一,有着广泛的应用价值。骨龄作为一个人体生长发育的重要指标和参数已经广泛地被应用于儿童青少年生长发育的评估、儿童内分泌疾病的诊治、运动员选材等工作中。
传统上,放射科医生通过对比儿童手部的X光片和他们对应年龄的标准状态,来测量儿童的骨龄。骨龄评估的方法主要分为图谱法和计分法。前者判读速度相比后者较快但精度低,后者精度较高但速度慢。且这两种方法都需要放射科医生花费比较大的时间去判读骨龄,并存在不同观察者间判读结果不同、同一观察者前后判读结果不同的误差情况。实践中,如果骨龄误差在±1岁以上,计算得到的预测终身高的结果将完全偏离甚至出现误诊的情况,造成贻误治疗时机或过度治疗的后果。因此,进一步提高自动识别的精度,研发一种准确度适用于实际临床工作的神经网络模型和算法,意义重大。
发明内容
为了解决现有技术精度低、结果稳定性差的不足,本发明提出了一种基于深度学习的高精度、高稳定性的骨龄分类评估方法。此方法结合了TW计分法和GP图谱法,从而客观上保证了评估结果的高精度和高稳定性。
本发明采用的技术方案是:
一种基于深度神经网络的X光片手骨成熟度判读方法,包括以下步骤:
步骤一,对原始手骨X光图像进行统一预处理,统一X光片灰度值分布,增亮颜色较暗的手骨X光图像得到Output1;
步骤二,将Output1作为输入对象,训练模型M1,从手骨X光图像中提取出关键的整个手骨,去除噪音,并统一尺寸,得到关键手骨图像Output2;
步骤三,采用Faster-RCNN模型,训练13块关键骨块的采样数据得到模型M2,使之可以准确分割得到13块关键骨块,并统一尺寸,得到Output3;
步骤四,建立骨块成熟度网络M3,以Output3得到的13个关键骨块训练模型M3,使之可以初步预测13个骨块的成熟度分值,预训练完成后,该模型输出特征图F1;
步骤五,建立网络模型M4,将预处理后的图像即Output1作为输入,以该图像的骨龄值作为标签,回归训练模型M4,输出特征图F2;
步骤六,通过拼接特征图F1、F2的方式合并M3、M4模型,得到模型M5,训练模型M5,使其可以通过学习F1、F2两种特征图输出最优的骨龄预测结果。
进一步,所述步骤一中,对手骨X光片进行统一化处理的方法是直方图匹配,分为两步:
步骤1.1在所有手骨X光片数据中选择成色最好的一张,将其作为模板;
步骤1.2使用直方图匹配技术,将其他所有的手骨X光片图像转化到与模板相同的直方图分配,从而得到Output1。
再进一步,所述步骤二中,M1网络的构建思路为:在三种不同特征图上进行目标位置预测,最后平均三种结果,由此得到更可靠、稳定的结果,构建过程为:
步骤2.1输入图像经过5个卷积层模块提取局部特征,每个卷积模块由一个Conv2D卷积层,BatchNorm层、leaky relu激活层函数层,和Maxpooing池化层组成;
步骤2.2在第5个卷积模块之后进行反卷积操作并与之前第3个卷积块得到的特征图进行Concat融合,得到下采样倍率较小的特征图;
步骤2.3分别对三种特征图进行目标检测预测,平均三个预测果,并进行回归训练。
更进一步,所述步骤三,使用Faster-RCNN进行13块关键骨块分割的步骤如下:
步骤3.1根据RUS-CHN标准,人工标注出13个目标骨块作为数据样本;
步骤3.2根据Faster-RCNN模型,以上面的数据样本,得到分割出来的13个骨块;
步骤3.3统一输出的13的骨块,尺寸放缩至(28,28)。
所述步骤四中,预训练模型M3的过程为:将步骤三中得到的13 张关键骨块灰度图,按固定顺序组合成13通道输入到回归网络模型 M3。对于每一组图像,输出一个包含13个骨块的预测分级。分级范围参考RUS-CHN标准。模型训练完成后,得到尺寸为7*7的局部特征图F1。
所述步骤五中,训练模型M4,使用DenseNet-121进行迁移学习并改进全连接层和softmax层为回归模型,该模型以处理后的原图像 Output1为输入,模型训练完成后,得到全局特征图F2。
所述步骤六中,整合模型M3与模型M4,将M3模型中最后得到的特征图作为局部特征图,将M4模型最后得到的特征图作为全局特征图,融合F1和F2,然后经过卷积模块和全连接层,从而组成完整的模型M5,该模型训练时会更新原来M3和M4的预训练参数,该模型的输出包含13块骨块的成熟度分值,最后通过计算可评估骨龄。
本发明的技术构思为:利用深度学习技术,根据RUS-CHN标准提取出手骨X光片中关键的13块关键骨块。训练两个模型分别学习13 个骨块的特征和整个手骨的特征,再融合两种特征图,再次训练第三个模型,学习融合的特征,从而进行评估。
采用深度神经网络分别对13个关键骨块和整张手骨图片进行回归训练,得到两种特征图和预训练参数。然后融合两种特征图,再次训练模型,对融合的特征图进行卷积、回归,从而得到最后预测分值。
本发明给出的流程中,第一个模型M1,针对已经在之前预处理后统一改善后的图片,主要作用为提取X光中整个手骨,从而去掉其他干扰因素。第二个模型M2通过Faster-RCNN模型提取出13个关键骨块。第三个模型M3是基于Densenet建立的网络模型,主要用来提供 13个骨块的特征图,该模型在单独预训练时通过预测每个骨块的成熟级别来回归更新参数。第四个模型M4,主要提供全局特征图,使用迁移学习DenseNet-121的方式,在预训练期间通过预测整块手骨的总分值来回归更新参数。第五个模型M5,融合M3、M4得到的两种特征图,并在融合特征图后经过卷积层和回归层,输出包含每个骨块预测分数的向量)。
跟传统的人工打分的方法相比,本发明的有益效果在于:不仅大大提高了骨龄预测的效率,而且能够有效消除不同观察者之间的差异。与现有的深度学习的方法相比,本发明同时考虑了手骨局部和全局的信息,大大提高了判读精度。
附图说明
图1是整体流程图。
图2是数据处理流程图,包括输出手骨部分和13块关键骨块。
图3是模型M1网络结构图,用于提取手骨部分。
图4是模型M3网络结构图,用于提供局部信息特征图。
图5是模型M5网络结构图,用于最后预测骨龄。
具体实施方式
下面结合附图对本发明做进一步说明。
参照图1~图5,一种基于深度神经网络的X光片手骨成熟度判读方法,包含了操作流程中的六个步骤,各个模块的细节分别在下图中给出,包括以下步骤:
步骤一,对原始手骨X光图像进行统一预处理,统一X光片灰度值分布,增亮颜色较暗的手骨X光图像得到Output1;
步骤二,将Output1作为输入对象,训练模型M1,从手骨X光图像中提取出关键的整个手骨,去除噪音,并统一尺寸,得到关键手骨图像Output2;
步骤三,采用Faster-RCNN模型,训练13块关键骨块的采样数据得到模型M2,使之可以准确分割得到13块关键骨块,并统一尺寸,得到Output3;
步骤四,建立骨块成熟度网络M3,以Output3得到的13个关键骨块训练模型M3,使之可以初步预测13个骨块的成熟度分值,预训练完成后,该模型输出特征图F1;
步骤五,建立网络模型M4,将预处理后的图像即Output1作为输入,以该图像的骨龄值作为标签,回归训练模型M4,输出特征图F2;
步骤六,通过拼接特征图F1、F2的方式合并M3、M4模型,得到模型M5,训练模型M5,使其可以通过学习F1、F2两种特征图输出最优的骨龄预测结果。
图2为数据处理流程图,数据预处理包括M1模型提取手骨部分以及M2提取的13块关键手骨,将分别作为M3、M4的输入。
图3为输入512*512的图像后,经过五层卷积模块后得到16*16 的特征图。在本例中,其中每个卷积模块中,Conv2D卷积层不改变特征图尺寸,每次进行最大值池化Maxpooling时,缩小一倍特征图。之后进行两次反卷积操作,并分别于第4层、第3层的卷积模块输出的特征图并接,得到32*32、64*64的特征图。分别对这三种进行预测坐标,将预测坐标映射到原图像空间后,平均得到的三个坐标以及宽高信息。输出结果。
图4为网络结构基于Densenet经典网络结构,采用Dense Block 和Transition块来构成网络结构,增长率为K=13。Transition块将特征图通道变为322(骨龄等级一共161级,2*161=322)。最后的回归层预测由1*13的向量构成,表示13个骨块的级别。
图5为模型M5接受来自模型3、4的输出,通过拼接Channel的方法融合来自两个模型的特征图,最后再次使用普通的卷积模块,并使用全连接层和回归层,为防止过拟合,在全连接层后添加了Dropout 层。回归预测输出与模型M3的格式一致。
使用手骨X光影像包含年龄范围0岁到18岁,共944个样本。其中632例样本作为训练集,剩余312例样本作为测试集。每份样本对应整块手骨的位置标注信息,13个关键骨块的位置信息和对应分值。
模型M1的构建过程:
步骤1.1构建深度学习卷积神经网络。具体结构如图2所示。具体结构在之前附图描述时已经解释过,这里不做赘述。
步骤1.2设置目标检测方法。这里采用YOLOV3中的Bounding Box Prediction预测方法。先将原图像划分为8*8的网格,预测时b-box 中心点相对于网格单元左上角的相对坐标,然后再通过计算得到绝对坐标。预测向量为(Tx,Ty,Tw,Th,To),其中五个值分别表示预测框的中心相对于网格左上角的(x,y)坐标,Tw,Th分别表示预测框的宽高,To表示预测框内存在预测对象的概率。
步骤1.3模型训练。手骨X光图片为灰度图,通道数为1。读取对应手骨位置的标注信息。按7:2:1的比例将数据集划分为训练集、验证集、训练集。采用batch训练方式,每个batch样本数为32,共训练200轮次,optimizier选用Adam。模型保留正确率最高的模型。
步骤1.4模型测试,用测试集数据测试模型。
模型M2的构建过程:
步骤2.1模型构建。使用Faster-RCNN经典模型。分类层设置为 14类,分别表示13种手骨和背景。输入通道数设为1。
步骤2.2数据采样与模型训练。使用模型1得到的手骨有效部位位置信息,截取有效部位,同时将原有的13块骨块标注位置信息转换到截取有效部位后的坐标空间。使用batch训练方式,训练集生成器和验证集生成器每个batch的样本数均为32,共训练300轮次, optimizer选用adam。模型仅保留正确率最高的模型。
步骤2.3模型测试。
模型M3的构建过程:
步骤3.1模型构建。网络借看如附图3所示。整个网络结构三个 DenseNet Block和Transition layer构成。输入通道为13。
步骤3.1.1第一个DenseNet Block含有5个基本卷积模块 (BN->ReLU->Conv(1×1)->BN->ReLU->Conv(3×3)),第二个 DenseNet Block含13个单元,第三个含8个单元。
步骤3.1.2每个Transition layer有一个bottleneck和平均池化层构成。DenseNet增长率K为13,在最后一个Transition layer中将特征图压缩为322通道。
步骤3.2数据采样。通过标注数据,截取每个手骨X光图(经预处理后)的13个关键骨块,并按固定顺序组成13通道的数组。
步骤3.3模型训练与测试。训练步骤与模型之前类似,Batch训练,100轮,该模型只保留最优模型参数。
模型M4的构建过程:
步骤4.1网络构建。使用Pytorch提供的DenseNet-121模型,同时替换掉其自带的分类层。
步骤4.2数据采样。使用标注数据,数据集分类与之前保持一致。
步骤4.3模型训练。使用Pytorch提供的预定义的训练参数,进行迁移学习。同样使用batch训练方法,batch size=32,epoch=100。
模型M5的构建构成:
步骤5.1网络构建。
步骤5.1.1参考附图5,组合模型M3,M4。禁用模型M3,M4的回归层。融合模型M3,M4最后输出的特征图,融合前通过类似模型3 中Transition Layer的结构,将M4输出的特征图通道加以控制,本例中将M4通道数转换为344与M3输出的通道数一致。
步骤5.1.2拼接特征图后,进入简单的卷积层,本例中使用一个残差卷积(ResNetBlock)。最后添加全连接层接受卷积层的输出,其自身输出预测1*13尺寸的向量,表示对每块骨块的预测分数。
步骤5.2数据采样。模型训练时,13块关键骨块有经数据预处理后的X光手骨(output1),经标注信息直接截取。整块手骨部分,也是直接使用output1经标注信息截取。
步骤5.3模型训练。训练模型5时,使用之前得到的M3,M4部分的预训练参数。同时M3,M4部分参数在M5训练时依然会更新。使用霸batch训练方法,遍历参数400次。
步骤5.4模型测试。模型输出具体分值,可通过对应分值表找到对应的骨龄。
经过上述步骤的操作,即可实现利用手骨X光片影像对骨龄进行高精度的判读。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例,用于解释本发明,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。