深度学习在肺炎检测中的研究综述

2020-03-09 06:13郝海江刘亚荣
桂林理工大学学报 2020年4期
关键词:卷积肺部神经网络

李 新, 陈 帆, 郝海江,黄 琳, 刘亚荣

(桂林理工大学 a.信息科学与工程学院; b.广西嵌入式技术与智能系统重点实验室, 广西 桂林 541006)

0 引 言

肺炎是临床医学中最常见的感染性疾病之一[1], 其发病周期短、 成因复杂, 免疫力相对低下的儿童和老年人更是易感人群。 据世界卫生组织报告, 仅2016年, 全球就有80多万人死于肺炎, 死亡人数超过疟疾、 艾滋病和麻疹的总和[2-3]。 因此, 及时的诊断肺炎并且进行治疗是非常重要的。目前诊断肺部疾病的主要方法有X射线[4]、 计算机断层扫描(CT)[5]、 磁共振成像(magnetic resonance imaging, MRI)等[6]。 由于X射线和CT价格相对便宜, 成像质量适中等优点, 是大多数病人选择的检查方式。在肺部胸片上检测[7]是否患有肺炎,要求医生有过硬的专业知识和丰富的临床经验, 是一项极具挑战性的工作。 此外,对于医生来说, 每天花费大量时间来观察大量肺部影像, 难免存在视觉疲劳, 出现误诊、 漏诊等情况,计算机辅助诊断系统 (computer-aided designs, CAD)应运而生[8]。

深度学习作为人工智能领域的一个重要分支[9], 其出现开辟了现代计算机领域的一个新兴研究方向。它是由Hinton等在2006年所提出, 其本质是有监督的学习[10], 使用原始或者经过预处理带有明确标签的数据作为卷积神经网络算法的输入; 然后算法对数据进行分层抽象处理, 将原始的输入数据一层一层地抽象成其自身任务所需要的目标特征[11]; 最后将学习到的特性映射到任务目标作为结束。 深度学习与传统的浅层学习的主要区别在于浅层学习(图1)基本上只有输入输出和一层隐藏层; 而深度学习(图2)主要是强调模型结构的深度[12], 一般具有多层隐藏层(包含多层的卷积层和池化层), 深层网络意味着拥有更好的非线性表达能力, 可以学习到更加复杂的非线性变换, 从而拟合更加复杂的输入特征。因此,深度学习方法成为目前计算机辅助诊断领域所使用最为广泛的方法,本文就深度学习在肺炎检测中的研究现状展开详细讨论,充分描述了目前肺炎检测所取得的成果以及所面临的问题,并给出了进一步的研究建议。

图1 传统浅层神经网络结点

图2 深度神经网络一般模型结构

1 深度学习模型

在2012年ImageNet竞赛[13]上, 由Krizhevsky等[14]设计的AlexNet卷积神经网络模型(CNN)取得冠军, 使得CNN成为图像识别检测等领域的核心算法模型。 随后,大量优秀模型相继问世, 例如VGGNet[15]、 GoogleNet[16]、 ResNet[17]、 ResNext[18]等。其详细参数以及Top5错误率如表1所示。

2 数据集

肺炎图像数据集的获取途径特殊, 一般情况下只能在医院获得。文献中所用到的数据集多是通过和一些大型医院进行合作所得, 并未公开, 因此数据集获取存在一定难度; 另外, 由于医学影像的专业性, 其标注成本相对较高, 通常都是由1~2位经验丰富的专业医学影像医生进行标注, 再由1~2位医生检查标注结果, 这也是导致公开肺部医学图像数据集较少的原因之一。目前有3个比较大型的公开肺部影像数据集可以供学者进行研究。

(1)NIH Chest X-ray。此公开数据集是由美国国立卫生研究院(national institutes of health, NIH)[19]所提供, 有112 120张X射线肺部影像, 包括肺炎在内的14种胸部疾病, 研究人员在原始数据集上采用自然语言处理(NLP)的方式对图片进行标注, 正确率超过90%, 由于其自身标签就存在一定的误差性, 因此采用此数据集进行研究所得到的结果一般都没有其他两个数据集所得到的结果理想。

(2)Chest X-ray Images。此数据集是加州大学圣迭戈分校Kermany等[20]在2018年间收集的广州妇女儿童医学中心1~5岁儿童肺部的5 863张胸片, 分为正常和肺炎两个类别。 在此数据集上利用迁移学习的方法得到高达92.80%的准确率[21], 部分肺部影像如图3所示。

(3)肺炎识别比赛公开数据集。 此数据集是2018年9月由北美放射协会(RSNA®)联合Kaggle公司发起的医学图像肺炎识别比赛中提供的数据集[22]。 每组胸片还提供了患者的肺部病灶边界框值、 目标值等; 此外数据集分为肺炎和非肺炎(包括正常和非肺炎异常组)。

表1 卷积神经网络不同模型的参数信息

图3 胸部 X-ray部分影像[20]

3 国内外研究现状分析

3.1 传统检测方法

早期, 在肺炎检测领域大多数采用传统图像处理[23]和机器学习[24]的方法对肺炎进行检测, 如范炤等[25]提出了一种基于BP人工神经网络的肺炎预测模型,将肺炎的多个致病因素作为网络模型的输入,使用反向传播算法对参数进行更新后达到肺炎预测目的,相对于如今的卷积神经网络,出现了网络泛化能力不强、预测准确率不高等问题。袁茂州[26]使用LBP算法以及灰度共生矩阵来提取图像只含肺部区域的特征, 结合支持向量机(SVM)分类器对肺部图像进行识别, 然而新算法需要人工设置阈值, 提取到的肺部特征较为单一。王忠闯等[27]同样是采用SVM的方法,针对感染肺炎后无法准确监测病人的实时情况提出了一种基于支持向量机的呼吸器肺炎检测方案,经过交叉验证和受试者工程特征曲线对搭建后的模型进行评估,其结果为专科医师提供了一定的参考作用。 王家铭等[28]采用KNN分类器, 最终也是只达到了75%的精确率。 岳路等[29]利用经典的决策树算法, 对200例的小儿肺炎进行分类, 准确率达到了80%。 朱碧云等[30]利用小波变换的熵纹理特征进行尘肺病分类诊断的研究, 准确率达到了84.6%。 2017年傅星瑜等[31]在采用小波变换和BP神经网络的基础上提出了一种特征提取和分类不稳定的肺音信号识别方法[32]来诊断肺炎, 在识别肺炎的过程中表现良好。

这类传统方法一般需要人工提取特征, 并且对于肺部X射线影像而言, 需要研究人员有一定的医学知识或者交叉学科基础, 因此人工提取特征存在一定的误差性, 所得出的检测结果也不十分理想, 目前已逐渐淡出肺炎检测研究领域。

3.2 深度学习检测方法

深度学习方法作为目前计算机视觉分类、 目标检测领域的主流研究方法, 表现出强大的竞争力。针对传统方法检测过程中耗时耗力、 检测准确率不高等问题, 为进一步提升识别效率和结果, 研究人员将深度学习方法引入肺炎检测领域。深度学习成为提升医学图像分类识别效率的突破口, 其端到端的应用方式、 高精度的分类结果是目前肺炎识别领域的研究热点。

3.2.1 分类识别 分类是指将图片结构化为某一类别信息, 将标注好类别或者属性ID的图片经过分类算法得出类别结果。 基于深度学习的分类方法在训练阶段通过大量的训练数据优化网络的参数, 在测试阶段, 网络可以通过多层卷积快速得到待求的类别, 而无需再进行繁琐的数值优化; 不足之处在于不能对图片中特定信息(如肺炎检测中病灶区域的定位)进行更为详细的解释。

潘丽艳等[33]提出一种基于改进AlexNet方法并结合迁移学习对肺炎胸片进行了细菌型和病毒性肺炎进行了判别:先利用AlexNet的全卷积神经网络对肺部胸片进行左右肺区的分割, 排除其他非肺部组织对检测结果的干扰, 该网络使用了3个卷积层替换了原来AlexNet网络中的最后面3个全连接层, 使输入的图片大小和输出的图片大小保持一致; 算法采用Dice系数来进行分割效果评价, 最终平均Dice系数为0.90, 将分割后的图片采用改进AlexNet+SVM的分类方法, 最后得到准确率为80.48%, 特异度为82.07%, 灵敏度为77.55%。刘长征等[34]提出一种改进的卷积神经网络:该网络由3个卷积层、 3个层和1个全连接层组成, 并且对卷积层进行了特殊处理, 加入了两个标志符号, 有效抑制不活跃的肺部图像信息, 同时也防止了过拟合的出现; 前期预处理时采用赵恒等提出的阈值分割算法[35],将分割后的肺部图像送入到卷积神经网络中, 使用来自哈尔滨医科大学附属第二医院的2 000张肺部CT(该数据集并没有公开),最终达到86.75%的识别率。

虽然以上文献采用的都是深度学习技术, 但由于采用的是经典算法, 所用网络结构相对单一, 泛化能力不强, 以及使用了早期效果一般的激活函数, 在反向传播的过程中或多或少出现了梯度爆炸或者梯度消失的情况, 导致在迭代的过程中出现了识别率饱和的现象。

为解决肺炎数据集中数据量不够的问题, 迁移学习目前已经成为了深度学习中医学图像辅助检测的主流方法, 不仅解决了医学图像数据规模不够的问题, 同时也解决了难以从开始就训练大型网络的问题,它采用已在大型数据集上(如ImageNet或者特征相近其他大型数据集)训练好的权重, 将权重文件迁移到新的网络中后再对网络进行优化改进。如邓棋等[36]采用了一种基于知识蒸馏[37]并结合优化后的卷积神经网络的方法, 根据肺部CT图像的特点, 选用AlexNet和Inception V3深度学习模型网络, 利用迁移学习的方法有效避免了由于数据量过小而易引起的过拟合等问题, 具体实现过程如图4所示。

图4 知识蒸馏网络模型

先将Teacher Module的训练结果用指定的参数T“软化”, 再利用激活函数softmax得到经过T软化后的概率, 具体计算式为

其中:i表示某一类别;qi为教师模型所得出的某一类结果的可能性;zi为教师模型中第i类的输出值,zj为教师模型中总输出值,j为分类类别数,本文为作二分类问题,j取值为1,2;T为软化参数。模型的最终准确率达到了92.48%, 损失为0.023。

Liang等[38]同样采用了迁移学习的思路, 基于ResNet残差网络, 通过引入残差的思想, 来解决随着网络深度不断增加, 效果越差的问题。该网络由49个卷积层和2个全连接层组成, 通过空洞卷积[39]的方式, 使得原始网络分辨率不变, 图像空间分辨率损失最小化, 空洞卷积的原理如图5所示, 可看出, 空洞卷积支持在不增加核参数的情况下增加卷积核的感受域, 有效避免了过度丢失特征图的分辨率, 达到了90.50%的准确率。

何新宇等[40]采用在ImageNet数据集上预训练好的GoogleNet Inception V3模型进行特征提取, 在该深度学习模型中加入由2层全连接层(神经元个数分别为1 024和512)和1个Dropout层所组成的特征融合层, 并结合随机森林分类器, 在公开数据集Chest X-Ray Images肺炎数据集上进行了一系列的测试, 准确率达到了96.77%, 敏感度达到97.56%, 特异度达到94.26%, 此成果为目前肺炎检测中所取得的最好研究成果。

图5 膨胀系数为1(a)、 2(b)、 3(c)的3×3空洞卷积结构图

在有关肺炎检测研究中, 使用的大多是层数较深的网络, 多层卷积以及多样化的卷积核具有更好的特征拟合泛化能力。2017年Wang等[41]使用自建的Chest X-ray8, 即前文面所提到的公开数据集NIH Chest X-ray的子数据集, 来判定和定位肺不张、 心脏肥大、 肺炎等8种胸部疾病, 其中肺炎识别的精确率最高达到了63.33%。 Yao等[42]利用标签之间的统计依赖关系来进行更加准确的预测, 其结果优于文献[19]研究中14个分组中的13个, 其中肺炎的精确率为71.3%,识别精确率较低的原因是因为数据集本身存在部分错误标签, 并且多种胸部疾病的影像特征相近、 分类类别较多, 因此最终识别效果不高。 Rajpurkar 等[43]设计了一种叫作CheXNet的121层卷积神经网络, 在目前最大的胸部X射线数据集Chest X-ray14上训练、 测试, 所得结果与4位从事学术研究的放射学家的标注结果进行了对比, 结果表明在CheXNet上得到的指标中F1-score超过了放射科医生的平均水平。Varshni等[44]使用在ImageNet上预训练好的Xception[45]、 RestNet-50、 DensNet-121、 DensNet-169[46]等卷积神经网络, 随后结合随机森林、 KNN、 朴素贝叶斯、 SVM分类器对其性能进行了评估, 最后在Chest X-ray14数据集上进行数据处理, 挑选出了1 431张带有肺炎标签的图片; 为了平衡数据集, 同样在该数据集上挑选出了1 431张标记为无发现的正常胸片, 然后将数据集分为训练集和测试集, 结果显示:在RestNet-169结合带rbf核的SVM分类器并对网络进行超参数调节后表现出了最好结果, 其评价指标AUC(area under the curve)值达到了0.800 2, 结合多种网络和多种分类器, 进一步提升了分类效果。

3.2.2 目标检测定位识别 深度学习具有自动从网络中学习深层次、 鉴别特征的能力, 已在医学图像检测定位领域广泛应用。 目标检测的深度学习方法优点在于不仅进行了类别识别, 同时也根据标签信息将感兴趣的区域(病灶区域)检测出来, 在肺炎检测领域更好地帮助医生快速定位病灶点; 其缺点在于当图片存在多个感兴趣区域时检测难度大大增加, 检测结果准确性有待提高。

在目标检测方面:Mubarok等[47]使用了由北美放射协会RSNA®联合Kaggle公司提供的肺炎挑战赛中的公开数据集, 基于ResNet和Mask-RCNN[48]两个深度学习模型, 在ResNet的基础之上实现了在每次卷积和使用激活函数之后进行批处理归一化, 并且在训练的过程中采用余弦退火算法来优化学习率; 对于损失函数, 结合了IOU和二元交叉熵。在Mask-RCNN上采用了自底而上和自顶而下两种提取特征的路径, 采用准确率、 敏感度、 特异度3个医学图像检测常用的评价指标, Residual Network和Mask-RCNN的结果分别为85.60%、 51.52%、 94.83%和78.06%、 36.12%、 85.54%,并且利用Mask-RCNN进行了病灶区域的定位, 具体定位结果如图6所示。

图6 由Mask-RCNN给出的定位信息[53]

文献[49]使用与前文所述都不相同的深度神经网络——CoupleNet[50]的全卷积神经网络: 先通过基本网络将图片信息传送到区域建议网络来产生Proposal区域; 然后每一个Proposal被传送给两个分支, 第一个分支使用位置敏感RoI pooling[51]来获取本地信息, 第二个分支用来提取全局的上下文信息; 最后合并这两个分支的输出, 生成基于本地信息和全局信息的预测, 预测结果如图7所示(红色为预测框信息, 绿色框为真实信息)。

从某种程度上看, 在肺炎识别领域目标检测的方法要优于分类方法。 分类的方法仅是给出是否患有肺炎, 而目标检测方法不仅区分出是否患有肺炎并且还给出了具体病灶区域的候选框, 真正达到了辅助医生进行疾病的诊断,减少了医生的负担, 不足之处在于目前此方面的相关文献不多, 同时相关文献中肺炎病灶区域定位准确率还有待提高。

3.3 算法总结

由于多数研究者是利用不同的方法在不同的数据集上进行实验, 而且不同的实验环境和设备以及不同的数据集预处理方式和评价指标都会对最后的结果产生影响。在Chest X-ray Images数据集上进行研究的文献较多, 对此数据集上的研究成果进行了对比总结, 其结果如表2所示。

图7 文献[49]中的定位结果

表2 在Chest X-ray Images数据集上已有研究成果对比

4 总结与展望

随着深度学习浪潮的涌起, 很多文献在研究利用深度学习方法来进行肺炎的检测诊断需求, 尽管取得了一定的进展, 但是其效果仍不能完全满足实际的肺炎诊断。 究其原因, 主要是医学疾病诊断的严谨性, 在当前技术不成熟的情况下仍然需要专业医生再次把关, 最终结果还是需要医生根据以往的临床诊断经验和专业知识来做最后的判别。多数研究人员只是对肺部影像进行了是否属于肺炎的判别, 而肺炎具有多种类型, 例如大叶型肺炎、 支气管肺炎、 间质肺炎、 SARS等, 仅文献[34]通过和医院合作利用未公开的数据集对肺炎的类型进行了判别, 因此在未来的技术挑战和发展方向上对相关研究人员给出几点建议:

(1)更多肺炎数据集的公开: 目前只有3个比较大型的肺炎公开数据集, 对于深度学习领域而言, 通常需要大量的肺部医学影像经过长时间的训练才能取得较好的效果, 因此需要更多的大型肺部影像数据集来为肺炎检测作出贡献。

(2)对相关肺炎数据集进行具体信息标注:对一般的肺部影像数据集而言, 如果没有给出具体信息(如病灶区域的位置信息, 病灶区域的大小,x、y轴信息), 仅能识别出是否是患有肺炎, 无法具体定位病灶区域以及通过候选框框出, 因而不能良好地快速帮助医生定位病灶大小, 给出建议性的治疗方案。

(3)研究方向倾向于病灶定位以及快速定位:仅将肺部影像区分为肺炎和正常还远远不够, 目前分类方面研究已取得较好效果, 未来的重点应该是采用目标检测的方法进行肺部炎症病灶区域的快速定位和精准定位, 使得计算机辅助诊断系统能够快速精确诊断。

(4)提出更加高效的算法: 目前深度学习算法参数量以及计算量基本上是少则几十万, 多则上亿, 需要非常优秀的硬件设备(显卡和CPU等), 这无形之中大大增加了科研成本;另一方面也要求研究人员在算法方面进行创新。

深度学习方法作为一项新技术, 其在影像医学领域应用研究还有很长的路要走, 针对医学领域的实际情况, 需要投入更多的人力和物力去不断改进与创新; 并且由于深度学习技术在图像信息处理方面的卓越表现能力, 其未来可能成为影像医学临床诊疗中的得力辅助工具。

猜你喜欢
卷积肺部神经网络
星形诺卡菌肺部感染1例并文献复习
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
基于傅里叶域卷积表示的目标跟踪算法
基于神经网络的拉矫机控制模型建立
探讨早期气管切开术对防治重型颅脑损伤术后并发肺部感染的作用
基于支持向量机回归和RBF神经网络的PID整定