程 博,薛茹惠,杨 航,祝来李,王雅丽,向 伟
(西南民族大学电子信息学院,四川 成都 610041)
在2019年发现的新型冠状肺炎,被称为“严重急性呼吸道综合症冠状病毒”,于2020年1月被宣布为国际关注的突发公共卫生事件.在2020年的2月份被世界卫生组织正式命名为COVID-19[1].目前新冠肺炎的主要传播途径是经飞沫传播、接触传播以及不同大小的呼吸道气溶胶近距离传播[2].当前疫情感染检测方式比较单一,目前新冠肺炎发展的趋势鼓励我们尝试提出一种深度网络学习模型[3].
人工智能方向的先驱们通过图像分类技术对胸部CT和X光图像进行分类[4-5].他们分别提出了不同的深度学习网络架构对患者进行诊断.Hemdan[6]使用深度学习模型诊断X射线图像中的COVID-19,并提出了包含7层卷积层的COVIDX-Net模型.Wang和Wong[6]提出了一个用于COVID19检测的深度模型(COVID-Net),该模型在对正常非COVID肺炎和COVID-19进行分类时获得了92.4%的准确率.Ioannis[7]使用224张COVID-19图像开发了深度学习模型.他们的模型分别在2分类和3分类中获得了98.75%和93.48%的精确率.Narin[8]使用与Res-Net50模型耦合的胸部X射线图像获得了98%的COVID-19检测精度.Sethy和Behera[9]使用支持向量机(SVM)分类器,使用X射线图像对从各种卷积神经网络(CNN)模型获得的特征进行了分类.他们的研究表明,带有SVM分类器的ResNet50模型具有最佳性能.最近还有一些关于COVID-19检测的研究,这些研究采用了具有CT图像的各种深度学习模型[10-11].
在本节中,我们将讨论使用的数据处理方式、模型架构的实现和训练方法.
由于获取新冠肺炎患者的胸部X光图像困难,所以我们收集的新冠肺炎病例胸部X光图像较少.用少量的数据去训练网络模型容易造成模型过拟合,导致在测试集上验证的识别准确率非常低.在计算机视觉领域,图像增强是降低深度卷积神经网络中过度拟合的常见隐式正则化技术,并被广泛用于提高[12-13]基准数据集的性能.
常见的图像增强手段包括翻转、旋转、缩放和裁剪的某些变体和组合.不同的领域,成像方式和任务可能会受益于各种不同数量的图像变换和组合[14].例如,在本文所做的医学图像分析中,与自然图像相比数据集通常很小且获取困难,并且图像中细节部分非常重要,可能就是医生判别疾病的依据.所以我们在做数据增强的时并不能过于修改原图像,否则就会消除x射线图像上的细节.在本论文的实验中经过多次尝试,发现图1所示的数据增强过程可以取得比较好的结果.整个过程经历三个步骤处理,step1:把图像的窄边缩放到224大小;setp2:从[224,n]或者[n,224]大小的图像随机裁剪一个大小为[224,224]大小的图片;setp3:把[224,224]大小的图片经过仿射变换处理:翻转、旋转、缩放.
在这个部分,我们会讨论整个网络框架,该网络是以深度学习中的卷积神经网络为基础的,整体框架如图2所示,对Covid-19 x射线图片进行分类,网络的主体框架为DPN网络[15],结构如图3所示,该网络在2017年ImageNet分类比赛中获得了冠军,结合了ResNet[16]与DenseNet[17]的优点.在本论文中,我们使用的是92层的DPN网络,一开始是一个7*7的卷积层和最大池化层,然后是4个stage,每个stage又由多个substage组成,substage的核心思想是将ResNet与DenseNet相融合,ResNet:侧重于特征的再利用,参数的共享;DenseNet:侧重于新特征的发掘.实现优缺点互补,紧接着是一个平均池化层和全连接层,最后是softmax层.但是由于DPN92由大量的卷积层组成,而卷积核作为卷积神经网络的核心,一般只能从局部感受野上去获得特征图,缺乏全局感受野的特征.所以我们在DPN92的基础上引入了注意力机制网络.
图2 网络整体框架Fig.2 Network overall framework diagram
目前注意力机制网络已经被大量地使用在自然语言处理,图像识别以及语音识别等各种深度学习应用当中.在本文中我们使用的注意力机制网络为SENet[18].
SENet主要由三个各部分构成:压缩部分、激励部分以及权重部分,压缩部分在空间维度上对图像特征压缩,把每层通道特征变为一个参数,该参数具有全局的感受野,输入维度和输入特征通道数相匹配,用全局池化来实现该功能.激励部分可以看作循环神经网络[4]中门的机制,在每个特征通道层生成权重,该参数可以进行学习调整.权重部分,把激励部分输出的权重每个特征通道层的重要程度,使用乘法逐通道加权到最开始输入的特征上.在DPN92网络当中引入SENet网络,网络部分变为DPN-SE网络,如图3所示.
图3 DPN-SE网络结构Fig.3 Framework of DPN-SE
随着人工智能的迅速发展,人工智能对各行各业也产生了深远的影响.小到美图软件,大到火车站的人脸识别,围绕人工智能建立的系统已经对医疗,交通,刑事司法,金融风险管理以及社会其他领域产生了巨大的影响.
从广义角度来讲,可解释性[19-20]就是当我们需要解决一件事情或者对其做决策的时候,我们需要从这件事中获得可以足够理解能帮助我们做决策的信息.所以在本文中我们需要将胸部X光图像上对于模型判定的特征进行明显的标注,可以让医生快速找到病灶区域并判断标注部位是否为判断依据.在机器学习模型局部可解释性研究中,一种代表性方法是由Marco Tulio Ribeiro等人提出的LIME[21].LIME的是使用可解释性模型(如线性模型,决策树)局部近似目标黑盒模型的预测,该方法不关心模型内部,对输入的数据进行轻微的改变,观察黑盒模型的输出变化,根据变化在兴趣点(原始输入)训练一个可解释性模型.值得注意的是,可解释性模型是黑盒模型的局部近似,而不是全局近似,这也是其名字的由来.LIME的数学表达式如下:
使用实例x的解释模型g,利用最小化损失函数来比较原模型f和g的近似性,符号Ω(g)表示解释模型g的复杂程度,G表示可能的解释模型,πx定义了x的领域.使用过程中模型g的范围大小和模型复杂度均需要定义.
在本节中,我们将介绍数据集的基本信息,并根据以下方面介绍分析实验数据结果.
模型训练的精确程度在很大程度上依赖于数据集.COVID-19是一个新的疾病,我们需要选取大量的X光胸片来让我们的模型充分学习到肺部的特征.而COVID-19的X射线图片在GitHub上有由Joseph[22]公开的资源,作者总结了来自北美放射学会各种真实来源的新冠肺炎胸部X光放射图像.我们的数据集是一个四分类的数据集,不仅包含了新冠肺炎的胸部X光放射图像,还包含了来自Kaggle repository“Chest X-Ray Images(Pneumonia)[23]”的细菌肺炎、病毒肺炎以及正常的胸部X光图像.这个数据集由1 203张正常胸片,660张细菌肺炎胸片以及931张病毒性肺炎胸片.而我们模型训练的数据集来自Khan[24]整理的数据.其中,新冠肺炎图片有304张;正常图片有375张;细菌肺炎有379张;病毒肺炎有354张.后期为了避免过拟合问题,我们使用了数据增强来扩展数据集.四种类别的图片如图4.
图4 肺部X射线图像的类型Fig.4 Types of lung X-ray images
在这项研究中,使用3.1节提到的胸部X射线数据集来训练模型.我们使用的网络结构为VGG16、ResNet、InceptionV4、DenseNet、DPNNet和自己设计的添加了通道自注意力机制的DPN-SE网络.首先,把经过数据增强和未经数据增强的数据训练结果进行对比(数据增强的方法在2.1小节介绍了).实验中所有的网络模型都训练地100epochs,观察代价损失图,最终都达到了收敛状态.评估分类模型的4个性能指标是:
公式(2)-(5)中的TN、TP、TN和FN分别表示真正,假正,真负和假负的数目.TP是模型预测结果被正确标记为正类的比例;FP是被错误标记为正类的比例;TN是被正确标记为假类的比例,而FN是被错误标记为假类的比例(COVID-19为正类,其他类别为假类).
在图5中,我们用混淆矩阵(CM)的形式呈现了DPN131网络结构训练出来的识别结果,a)图为未加入图像增强的识别效果,b)图为加入了图像增强的识别效果.在混淆矩阵a)和b)的对比中,我们可以观察到在加入了数据增强之后.平均准确率由0.808 9涨到了0.832 8.对于COVID-19类别准确率由0.92涨到了0.97,recall召回率由97%涨到了98%,F1-score由94%涨到了98%.其他几个类别的指标也有所增长.为了加入更多的验证实例,我们使用了其他模型做了对比.如表1所示为使用多种不同的网络模型测试使用数据增强和未使用数据增强的效果,评估指标包含准确率、精准率、召回率、F值(精准率、召回率、F值等指标的计算把COVID-19类别算为正例,其他为假例).
图5 使用resnet52网络结构训练的模型(a)without using data augmentation method,(b)using data augmentation method.Fig.5 Model trained using resnet52 network structure
从表1中的数据中可以看到,我们使用了Res-Net、DenseNet、DPNNet、VGG16、InceptionV3等10个网络模型来测试.评估指标包含准确率、精准率、召回率、F值(精准率、召回率、F值等指标的计算把covid-19类别算为正例,其他为假例).大部分模型的识别准确率在80%以上.使用ResNet50的网络模型对比.如果未经数据增强处理的数据集来训练网络,获得的平均准确率为79%,精准率为92%,召回率为98%,F1-score为95%.如果经过数据增强处理的数据集来训练网络,获得的平均准确率为80%,精准率为97%,召回率为98%,F1-score为98%.从对比中可以看出数据经过数据增强处理,训练出的网络模型可以提升1%的识别准确率.总共展示的10个网络模型中,有7个网络模型在经过数据增强处理之后识别效果有所提升,有2个网络模型识别效果有所下降,有1个网络模型识别效果基本没有变化.最后,我们可以推断在使用数据增强的手段处理了x-ray样本数据之后,再训练网络模型可以有效的提升1%左右的识别准确率.
表1 使用多种不同的网络模型测试使用数据增强和未使用数据增强的效果Table 1 Use a variety of different network models to test the effects of data enhancement and unused data enhancement
我们的目的是提升网络的识别准确率,除了使用数据增强来增加识别准确率外,还想到通过修改网络模型来使得识别准确率增加.网络的主体框架为DPN网络[15],我们使用的是92层的DPN网络,一开始是一个7*7的卷积层和最大池化层,然后是4个stage,每个stage由多个substage组成.在DPN92的基础上引入注意力机制网络.训练时候的数据集时经过2.1节介绍的数据增强处理.
如图6所示,是我们展示用经典的DPN网络和经过修改之后的增加了自注意力机制的DPN-SE网络识别效果的混淆矩阵.左侧的(a)图是的DPNNet网络模型训练的结果,右侧的(b)图是使用DPN-SE网络模型训练的结果.表2显示了在测试集上DPN的准确性、精度、召回率和F1-score.表3显示了在测试集上DPN-SE的准确性、精度、召回率和F1-score.混淆矩阵中可以看到此测试集有64例新冠肺炎病例、89例正常、76例病毒肺炎病例和64例病毒肺炎病例.分类病毒肺炎和细菌肺炎的性能比另外两类的分类性能较低从而导致了整体的精确率变低.如果我们将细菌性肺炎和病毒性肺炎合并为肺炎类,那么总体准确性将显著提高.值得令人高兴的是我们对新冠和正常肺部的检测都准确率都很高,在DPN网络上平均准确率为82%,精密度为98%,召回率为98%,F-measure为98%.在DPN-SE网络上,平均准确率为84%,精密度为97%,召回率为98%,Fmeasure为98%.平均准确率有了2%的提升.在实验的数据中得到的积极结果是关于COVID-19类别的精度和召回率很高.较高的召回率意味着较低的假阴性(FN),且假阴性(FN)数较低是我们希望得到的结果.这一点很重要,因为尽可能减少COVID-19漏诊病例是这医学诊断的重要目标.总的来说,当网络模型增加了注意力机制结构后,可以观察到DPN-SE网络的平均准确率增加了2%,说明修改的网络模型起到了作用.
表2 DPNNet模型的性能Table 2 Performance of DPNNet.
表3 DPN-SE模型的性能Table 3 Performance of DPN-SE.
图6 DPNNet和DPN-SENet模型训练的结果Fig.6 The results of DPNNet and DPNN-SE model training
我们需要将胸部X光图像上对于模型判定的特征进行明显的标注,以便让医生快速找到病灶区域并判断标注部位是否为判断依据.图7显示了使用lime可以解释模型生成的激活图实例.Lime模型的决策用红/蓝背景表示,其中红色区域表示分类模型所关注的重点特征,蓝色区域为不必要关注的区域.从图中可以观察到红色的重点特征区域基本都分布在胸腔内部,是需要重点关注的.而蓝色区域在身体中间和边缘的非肺部区域.
图7 OVID-19模型激活图示例Fig.7 Examples of COVID-19 model activation maps.
随着COVID-19流行,病例日益增多.许多地方面临着检测资源短缺的调挑战.在本文中,我们提出了一种通过胸部x射线来识别COVID-19病例的深度神经网络模型DPN-SE.并针对少量样本使用了数据增强的办法,在测试集上取得了不错的效果.DPN-SE相比与DPN网络结构拥有相同计算开销,但是却提升2%左右的识别准确率.当使用更多的训练样本时,性能可以进一步提高.该模型的识别结果准确率很高,相信可以帮助放射科医师更深入地了解与COVID-19的相关病例.
源码
为了大家很好的继续进行研究,我们提供了实验研究的代码和数据集,经过训练的模型和数据可以在这里获得:
https://github.com/ChengBo5/covid19-X-ray.git.