基于ChXNet的胸部X光肺炎检测方法
2022-10-17谭泽贤张永梅
叶 青,谭泽贤,张永梅
(北方工业大学 信息学院,北京 100144)
0 引 言
基于深度学习的肺炎X光片检测很早就有应用,可以追溯到2017年Rajpurkar P等[1],他们指出可以将胸部X光片(chest X-Ray,CXR)检查作为肺炎的主要筛查工具。而接下来就有越来越多的研究人员投入到基于X光片的肺炎诊断,例如Wang等[2]、Zhang等[3]、Khobahi等[4]、Hammoudi等[5]和Hemdan等[6]。这些研究算法主要可以分为二分类和三分类,二分类算法的分类结果为肺炎阳性和肺炎阴性,三分类算法结果则为健康、新冠肺炎(COVID-19阳性)、非新冠肺炎(普通病毒性肺炎/细菌性肺炎)。
由于二分类复杂度低,不确定性小,所以检测准确而又快速。Hemdan等采用7种经典的深度学习模型训练二分类网络,发现VGG19和DenseNet201均能达到83%的最高准确率。但这样的准确率还是有所不足,因此Narin等[7]使用经过ImageNet数据集预训练的模型来训练,其中经预训练的ResNet50模型能够达到98%的诊断准确率。
三分类的难点在于如何区分新冠肺炎(COVID-19阳性)和非新冠肺炎(普通病毒性肺炎/细菌性肺炎),两者的X光片有着相似之处,而与正常人的胸片差别较大。为了应对这种情况,Hammoudi等设计了两阶段分类法,准确率达到了90.7%。
国内针对肺炎的四分类(正常、细菌性肺炎、普通病毒性肺炎、新型冠状病毒肺炎)研究还很少,本研究认为四分类的研究难点在于如何区分普通病毒引起的肺炎和新型冠状病毒引起的肺炎,两种肺炎都属于病毒性肺炎,在X光胸片上可能存在相似的情况,所以在区分上述两种肺炎X光图像时需要网络具备多尺度的特征提取能力,能够提取特征之间的细微不同。作为三分类的延伸发展,目的在于更好让计算机辅助医疗,降低误诊率,但在这方面仍需要投入大量的研究。
1 图像获取与预处理
目前,肺炎的胸部X光数据很少。网络上的一些开源数据集非常相似,相互包含一部分数据。因此,我们选择了两个经典的肺炎数据集,Chest X-ray Images (pneumonia)[8]和COVID-19 Chest X-ray Database[9],它们被包含在大多数数据集中。
Chest X-ray Images(pneumonia)数据集包括5863张正常人、细菌性肺炎患者和普通病毒性肺炎患者的胸部X光图像。该数据集包含在大多数肺炎数据集中,是区分肺炎患者与正常患者的高质量基础数据集。
COVID-19 Chest X-ray Database共包含2905张来自正常人、细菌性肺炎患者和COVID-19患者(COVID-19阳性)的胸部X射线图像。数据集由M.E.h.Chowdhury等[9]从所有发表的文章和在线资源中收集和索引。为了避免重复,M.E.h.Chowdhury等还将这些文章和胸部X光图像与GitHub数据库进行了比较。因此,数据集在数据的完整性和准确性上有很好的保证。
本研究将上述两个数据集进行了整合,并对位置不正、非正面X光和各组织对比反差不明显等质量不佳的图像进行了剔除。整合后数据集中正常人肺部X光与其它三类肺炎患者的X光如图1所示,图1(a)为正常胸部X光片,可以显示清晰的肺部,在图像中没有任何不正常的混浊区域;图1(b)为细菌性肺炎,通常表现为局灶性叶实变;图1(c)为病毒性肺炎,在两肺中表现为弥漫性“间质”型。图1(d)为新型冠状病毒肺炎,新冠肺炎早期胸部X光图像多无异常,可出现两肺多发小斑片影或见质性改变。如果病情进一步发展至危重行时,表现为两肺弥漫性实变阴影,会出现白肺的表现。
本文的数据分布见表1。由于本文使用的是整合数据集,数据集中数据的大小、亮度和对比度差异是不同的,因此我们需要对图像进行预处理。同时,为了丰富图像数据,随机一半的图像被翻转并顺时针(或逆时针)旋转10°,这样也可以降低过度拟合的风险。由于本文采用的是ImageNet的预训练模型,因此需要对基于ImageNet的图像数据进行标准化。我们调用torchvision提供的transforms方法来标准化数据。标准差和方差分别为[0.485,0.456,0.406]和[0.229,0.224,0.225]。
表1 用于研究的数据分布
2 研究方案
基于深度学习的图像识别通常包括以下几个部分:图像采集、图像预处理和特征提取与分类。本文提出了一种胸部X光分类网络,它能够增强特征的利用率,增强对相似特征的描述能力,减少冗余特征。首先我们对胸部X光数据进行翻转、旋转和标准化等预处理操作来丰富特征的多样性,再将预处理后的特征送入密集连接的高效通道注意力机制网络来增强有用信息的传递同时抑制无用信息的传递,最后使用参数平滑过渡的特征分类层来增强对相似特征的描述能力,减少冗余特征。考虑到肺炎的X光数据较少,而深卷积神经网络需要大量的数据,所以采用迁移学习的方法进行训练。根据图2所示的系统框架,对胸部X光分类网络进行了测试,并与现有的研究方案进行了比较,ChXNet在整合后的数据集上取得了较好的效果,具有一定的实际应用价值。
2.1 胸部X光分类网络(ChXNet)
本文提出了一种胸部X光分类网络(ChXNet)来辅助肺炎的检测。与传统卷积网络相比,胸部X光分类网络使用密集连接的高效通道注意力机制网络来增强有用信息的传递同时抑制无用信息的传递,这样使网络能够对X光图像特征图中不同通道的特征进行有重点的学习,同时抑制对诊断疾病没有用的特征信息。再通过多层过渡分类结构来增强对相似特征的描述能力,减少冗余特征。该分类结构使用了Dropout方法[10]来减小冗余特征,并通过多层的全连接层进行特征的过渡,相较于传统一层的分类网络对特征有着更好的特征描述性。本文提出的ChXNet网络架构其整体网络结构如图3所示。
将预处理后的胸部X光图像经过密集连接的高效通道注意力机制网络之后,就能得到胸部X光图像的特征图,特征图中包含着X光图像的像素级特征,将大量的特征图进行拼接得到全通道特征,再送入多层过渡分类结构,该结构会剔除全通道特征中的冗余特征,增强特征的描述性,从而得到更准确的分类结果。将分类结果与常用的5种卷积网络进行比较,从而测试ChXNet的性能。
2.2 胸部X光分类网络的原理及实现
在ChXNet的特征提取结构中,本文借鉴了DenseNet[11]的密集连接机制和ECA-Net的高效通道注意力机制[12],提出了密集连接的高效通道注意力机制网络作为ChXNet的特征提取网络,其结构见表2,其中DECA模块为密集连接的高效通道注意力模块。
DenseNet通过连接通道上的特征来实现特征重用。这些特性使得DenseNet能够以较少的参数和计算开销获得比ResNet[13]更好的性能。ResNet网络添加了跳跃链接, 用恒等函数绕过非线性变换,即输入改变
X=H(X)+X
(1)
ResNet的优点是梯度直接通过特征函数从后面层流向前面的层,然而特征函数和H输出求和可能阻碍网络中的信息流。
与ResNet相比,DenseNet引入了从任何层到所有后续层的直接连接:即H层是有前面每一层进行拼接得到的特征
表2 ChXNet的特征提取结构
X=H([X0,X1,…,X])
(2)
这样的做法使得DenseNet能够提高特征的利用率,减少参数量。对于胸部X光分类网络来说能够充分利用X光图像的特征,从而提高检测准确率和检测速度。
Wang等提出的高效通道注意力模块(efficient channel attention module,ECA)是一种轻量级注意力机制模块,一种无降维的局部跨通道交互策略,该策略可以通过快速一维卷积有效地实现。此外,Wang等开发了一个通道维数的函数来自适应地确定一维卷积的核大小,它代表了局域交叉通道相互作用的覆盖范围。
ECA模块的结构如图4所示,ECA模块使用一维卷积来生成通道权重,其中卷积核大小k由通道维数C*自适应确定。给定大小为 [X,C,H,W] 的特征经全局平均池化后,再经过卷积核自适应的一维卷积得出未激活的权重信息,使用Sigmoid函数激活后与出示给定的特征进行相乘,得到大小为 [X′,C,H,W] 的特征,该特征包含着增强后的有用信息和被抑制的无用信息。
ECA模块使用一维卷积而避免降维,使通道与其权重之间直接对应,更容易得到最准确的权重信息,与其它通道注意力相比降低了计算复杂度。公式表示如下
ω=σ(C1Dk(y))
(3)
其中,y表示通道特征,ω表示通道特征y的权重,C1D表示一维卷积,σ表示Sigmoid激活函数,下标k表示一维卷积的自适应卷积核大小。
自适应卷积核大小k与通道维数C*有着映射关系,映射关系如公式所示
C*=φ(k)≈2(γ*k-b)
(4)
式中:φ表示核大小k与通道维数C*之间的映射关系,γ和b在本文中分别为2和1。
借鉴DenseNet的密集连接机制,我们将ECA模块与密集连接机制结合,提出了密集连接的高效通道注意力机制网络。
DenseNet的密集连接与ChXNet的密集连接的不同之处如图5所示。DenseNet直接将前面所有卷积单元在通道维度相连后作为当前单元的输入,我们提出的网络与之不同, 密集连接的高效通道注意机制网络将前面所有卷积单元的特征图在通道维度相连后先进行加权,即将一维卷积获得的权重与特征图进行相乘,之后再作为当前卷积单元的输入,从而形成了高效通道注意力模块。因此通过学习网络能够高度地关注 X 光图像特征图不同通道的重要程度,从而抑制对诊断无用信息的表达,促进有用信息的表达,以此来增强网络对肺炎的分类性能。
在ChXNet的多层过渡分类结构如图6所示。从特征提取层出来的全通道特征首先通过一个全连接层,输出1024个通道特征,经过ReLU函数激活后进入Dropout层,Dropout层会随机对一半的特征进行“删除”(即图中p=0.5),接下来再进入一个全连接层,输出512个通道特征,同样再次经过ReLU激活函数作用后进入Dropout层进行冗余信息的剔除,最终进入最后一个全连接分类层,得到我们的分类结果。与传统一层的全连接层分类网络不同,这样的结构能够剔除冗余特征,增大关键特征的利用率。多层过渡的分类结构对特征有着更好的描述性,能够更加准确的对特征进行分类。
3 实验结果
本实验是在两个经典的肺炎数据集上进行的,即Chest X-ray Images (pneumonia)和COVID-19 Chest X-ray Database。实验在三分类和四分类检测下进行。分别让5种常用卷积模型和ChXNet进行对比实验,同时与已有的研究结果进行了比较。本文的实验条件为:系统为Win10,CPU为I9-9900KF,GPU为RTX2080Ti,内存32 GB,采用pytorch框架。在上述硬件条件下,经过大量的实验验证,本文提出的ChXNet具有准确率高速度快的特点,可以作为一种可靠的快速分诊和辅助诊断方法。
3.1 三分类检测
在三分类检测中,我们将数据分为正常、新型冠状病毒肺炎、非新型冠状病毒肺炎(细菌性肺炎和普通病毒性肺炎)三类。实验结果见表3,我们的ChXNet在准确率上高于5种常用卷积网络。
表3 三分类实验结果
InceptionV3[14]模型内部含有非对称的卷积拆分结构,相比于其它层数相同的网络结构提取出的特征更丰富,冗余特征较少,所以准确率甚至比层数更多的网络高。由于新冠相关实验数据较少,所以使用结构过于复杂的网络不一定能够获得更好的结果,反而会导致一定程度的准确率下降(过拟合),如表3中的DenseNet121和DenseNet169,网络加深并没有让DenseNet169取得更高的准确率,反而低于DenseNet121。本文提出的ChXNet在与DenseNet169相近的网络层数下,减小了因过拟合带来的准确率下降,使得其准确高于DenseNet121,可见本研究提出的ChXNet在降低过拟合的风险,减少冗余的特征向量上有着显著的作用。
本文比较了5种卷积网络与ChXNet在训练过程中的验证概率,结果如图7所示。图7(a)是InceptionV3与ChXNet的对比,得益于非对称卷积的结构[14],InceptionV3虽然没有很深的网络层数,仍有着不错的准确率,但我们的ChXNet准确仍比InceptionV3高。在图7(e)中,在层数相近,同样使用密集连接的机制下,我们的ChXNet比DenseNet169取得了更高的准确率。以上充分说明ChXNet在对肺炎的检测上有着优于传统卷积网络的准确率。
每个类别的具体情况如图8所示的混淆矩阵。使用ChXNet作为胸部X光分类网络在识别肺炎上有着极高的准确率,但非新冠肺炎(细菌性肺炎和普通病毒性肺炎)和正常患者存在着混淆,正常人的肺部X光胸片相较于肺炎患者特征不明显,若X光片存在锐利度和影像密度不佳的区域,则会被网络作为特征进行提取。使用ChXNet进行肺炎X光检测,在区分非新冠肺炎(细菌性肺炎和普通病毒性肺炎)和新冠肺炎上有了提升,有着极低的误诊率。
本研究将实验结果与现有国内外研究进行了对比,这些研究使用的数据集与本研究使用的数据集存在较大的交集,对比数据见表4。
在三分类检测下,使用本研究的检测方法。每张胸部X光片检测时间约为1.15 s,即只需要约1.15 s就能判断出是否为新冠肺炎。远超具有丰富临床经验的医生。
三分类实际检测结果如图9所示。本文的方法对检测肺炎X光片有着极高的准确性。非新冠肺炎、正常和新冠肺炎图中的准确率分别为99.49%、98.79%和99.54%。
表4 三分类与近期研究对比
3.2 四分类检测
在四分类检测中,我们将数据分为正常、新型冠状病毒肺炎、细菌性肺炎、普通病毒性肺炎4类。四分类的难点在于如何分清病毒性肺炎之间的区别。在这方面国内外的研究还很少,大多数都止步于三分类,所以这是在基于X光胸片的肺炎检测上新的尝试。
实验结果见表5,我们的ChXNet在准确率上高于5种常用卷积网络。得益于ChXNet中密集连接的高效通道注意力网络和多层过渡分类网络,提取特征时对诊断的有用的特征被增强,无用的特征被抑制,分类时减少了冗余特征,对特征有着更好的描述性。我们的ChXNet在同样的深度下减小了过拟合的情况,提升了准确率,针对肺炎有着更好的检测效果。
表5 四分类实验结果
为了更贴近实际人为诊断,我们对ChXNet进行了混淆测试,混淆矩阵如图10所示。从图中可以看出,ChXNet对于COVID-19的检测效果很好,相对容易混淆的在普通病毒性肺炎和细菌性肺炎之间,新型冠状病毒肺炎和非新冠肺炎(细菌性肺炎和普通病毒性肺炎)之间,但总体仍好于传统医生。
现有基于X光胸片的肺炎四分类研究较少,本研究只与Mangal A等[15]的研究进行了对比,在数据集有着很大交集的情况下,对比结果见表6。
采用ChXNet进行四分类检测,每幅胸片的检测时间约为1.22 s。也就是说只需要1.22 s就可以检测出一个人患有哪种类型的肺炎。
表6 四分类与近期研究对比
四分类检测示例如图11所示。新冠肺炎、细菌性肺炎、正常和普通病毒性肺炎的准确率分别为98.99%、98.98%、98.97%和97.46%。
4 结束语
在本研究中,我们提出了胸部X光分类网络(ChXNet),该网络在提升肺炎检测率上有着显著的作用。实验取得三分类和四分类检测的最高准确率分别为99.845%和97.842%,并且高于同期其它研究成果。在混淆测试中,使用ChXNet进行混淆测试能够有效区分正常与肺炎、细菌性肺炎与其它肺炎,极大地降低了误诊率。和传统医生相比,不需要丰富的诊断经验,不会疲劳,有着极低误诊率的同时节省了大把的时间。以上说明本研究提出的胸部X光分类网络在肺炎的检测上有着极大的应用价值,可作为快速分诊、辅助检测的手段,对今后肺炎的辅助诊断具有前瞻性的意义。