1. 引言
传统肺炎检测采用逆转录聚合酶链式反应(RT-PCR)方法来诊断患者患病与否,然而该方法存在一定缺陷,其主要表现为诊断耗时过长且具有较高假阳性率。与正常肺部X光图像相比,肺炎X光图像具有较多阴影区域,然而其他肺部问题,如肺水肿等也会增加肺部X光图像阴影区域,这无疑增加了通过肺部X光图像判断肺炎患病与否的难度。肺部X光图像具有丰富病理信息,经验丰富的医师可快速通过肉眼观测肺部X光图像并给出合理判断,大多数缺乏丰富经验的医生往往不能给出合理判断,但,即便是具有丰富经验的医生也会由于疲劳度等不可抗因素给出错误诊断结果 [1] 。综上所述,我们迫切需要一种更加准确的肺炎X光图像检测手段。
当下人工智能已经展现出卓越的性能,其中基于卷积神经网络的医学图像分类技术也愈加成熟。使用卷积神经网络对肺部X光图像进行预处理、训练、特征提取、依据特征信息进行分类,最终精确预测肺炎类别,在提高肺炎检测准确率的同时,减轻了医生的医疗压力。因此,将基于卷积神经网络的深度学习技术应用于肺炎检测是一种非常有效的诊断解决方案 [2] 。
2. 相关工作
大量研究表明,利用深度学习对肺部X光图像进行检测比人工肉眼检测具更高的准确度以及更少的检测时间。周天奕 [3] 等,提出了一种模糊逻辑引导的多粒度深度神经网络,可充分提取病理图像特征信息,该模型在组织病理图像分类上具有较高的准确率。J. Zhang [4] 等提出了置信度感知异常检测(CAAD)模型,该模型在区分病毒性肺炎和非病毒性肺炎的任务中取得了和人工检测相近的结果,该模型的准确度达到83.16%,灵敏度达到71.7%,虽然在分类结果上与人工不相上下,但对区分病毒性肺炎和非病毒性肺炎的速度远超人工区分,且比人工区分更具稳定性。J. Wang [5] 提出了一种人工智能肺炎检测系统AIRBiS,AIRBiS基于高性能人工神经网络和交互式用户界面,可实现有效的操作和监控,其评估结果表明,其所提出的系统对肺炎的检测准确率达到94.4%。E. J. Palomo [6] 等等提出了一种用于胸部X射线图像中肺炎检测的计算机辅助诊断系统,该系统基于卷积神经网络(CNNs),该系统的二分类肺炎分类准确率达到98.59%。S. Pappula [7] 等提出了一种自动肺炎诊断方法CAD (计算机辅助诊断),可显著减少收集CXR图像数据的时间和成本。裴颂文 [8] 等人提出了一种用于图像降噪的生成对抗网络模型(TriGAN),对CT图像进行降噪并增强图像特征,与DnCNN以及GAN等网络相比,图像峰值信噪比平均提高4.5%,结构相似性平均提高1.5%。王科平 [9] 等人,提出基于伪全局Swin Transformer的遥感图像识别算法,有效提升模型对所有目标的感知能力。V. Dediu [10] 提出了一种轻量级的筛查工具,可以协助医生高效的对肺炎患者进行分类。J. Joby [11] 等提出了PneumoGAN的模型,PneumoGAN在公开二分类肺炎数据集上的准确率、召回率和F1-score分别为87.71%、91.4%和89.52%。H. Agrawal [12] 等利用迁移学习和图像增强的概念,设计了一种新的基于图像处理的深度学习方法来检测肺炎。D. Abin [13] 等利用图像去雾技术来提高原始肺炎图像的质量,在数据集层面来优化肺炎分类准确性。S. Jamil [14] 等提出了一种基于AlexNet和SVM的肺炎检测算法,与传统机器学习算法相比,该算法表现出了更好的性能,并且简单易用。Yadavendra [15] 等将Mask R-CNN应用于肺部X图像不透明区域快速检测并取得了优异效果。Budi Nugroho [16] 等提出了使用RMSprop优化算法来提升神经网络性能,在三分类肺炎数据集上的分类精确率达到88%,准确率到达87.99%,敏感度达到86%,F1-score达到87%。谢星星 [17] 等提出了一种动态特征融合网络,降低了输入图像中目标尺度对特征融合的影响。许金亚 [18] 等人针对医学图像小目标病灶区域检测,提出了一种具有注意力机制的特征金字塔模型,该模型较3DCE模型平均检测精度提高了5.2%,较MSE模型平均精度提高了4.4%。江泽涛 [19] 等提出了一种结合特征增强和多尺度感受野的低照度目标检测算法,在低照度目标检测精度方面取得了较好的表现。
上述方法实验中涉及的肺部X光图像广泛应用于肺炎分类检测任务中,但由于肺部X光图像数据集存在较大类别不平衡性,导致分类结果与现实情况具有一定的偏差。
本文提出并对比分析了3种肺炎图像分类模型,首先对实验数据进行预处理,减小由于数据集的不平衡性所带来的影响;随后将融合双信道注意力模块的网络模型在ImageNet数据集上进行迁移学习,使得模型更具健壮性;最后将处理后的数据集放入模型中进行训练、分类,最终得到最优分类模型。
3. 基于双信道注意力机制肺炎图像分类方法
3.1. 双信道注意力机制模块
双信道注意力机制模块(CBAM)由通道注意力模块(CAM)及空间注意力模块(SAM)组成,CAM用于提取特征图通道特征,SAM用于提取特征图空间特征。图像进入神经网络得到对应特征图,首先经过两个并行的MaxPool和AvgPool对特征图进行初步处理,使得特征图大小由C*H*W变为C*1*1,然后再经ShareMLP模块处理,先将通道数压缩为原来的1/n,再扩张到原通道数,再经ReLU激活函数得到两个激活后的结果。将两个输出结果逐元素相加,随后通过sigmoid激活函数得到CAM模块的输出结果,最后将输出结果与原始特征图相乘,使特征图维度恢复为C*H*W。SAM将CAM的输出结果通过MaxPool和AvgPool得到两个维度为1*H*W的特征图,并对这两个特征图进行Concat操作,通过7*7卷积变为1通道的特征图,随后经sigmoid处理得到SAM的特征图,最后将输出结果再与原始特征图相乘恢复特征图初始维度。
通道注意力公式如下:
(1)
空间注意力公式如下:
(2)
其中:F代表输入特征图,AvgPool表示平均池化,MaxPool表示最大池化,MLP为多层感知机,σ表示sigmoid激活函数,
表示一个7*7的卷积,Mc(F)表示经通道注意力模块后得到的特征图,Ms(F)表示经空间注意力机制后得到的特征图。
3.2. 残差模型
ResNet的核心思想是使用残差模块(Residual Block)构建深度神经网络。传统神经网络每一层输入都会经过一系列线性变换和非线性激活函数后输出给下一层。由于信号在逐层传递的过程中不可避免地会产生信息损失,因此随着网络深度的增加,在模型训练过程会出现梯度消失和梯度爆炸等问题,导致网络深度受到限制,ResNet通过引入残差模块来解决这个问题。残差模块由两个卷积层和一个跨层连接组成,跨层连接将输入信号直接传递到输出端,使得输入信号可以直接流到下一层,从而解决了信号传递过程中的信息损失问题。残差模块使得网络深度可以更加容易地加深,同时也提高了网络的精确度和稳定性。残差模块公式如下。
(3)
其中,y代表残差块输出值,σ代表激活函数,F代表残差函数,x代表输入特征,W代表权重。
3.3. DenseNet模型
DenseNet的核心思想是在各层之间增加密集连接。DenseNet各层都接收来自前面所有层的输出。这种密集连接使网络更加有效地利用参数,在避免梯度消失和梯度爆炸的同时,提高了网络的信息流动性和特征重用性。
DenseNet主要特点包括:1) 密集连接:每个层都与前面所有层连接,使信息更加充分地流动。2) 特征重用:由于每个层都能够接收前面所有层的输出,可以更好地利用共享的特征。3) 参数共享:由于每个层都可以接收前面所有层的输出,可以大大降低网络中参数的数量。4) 降低梯度消失和梯度爆炸:由于每个层都能够接收前面所有层的输出,可以避免在网络深度加深时出现的梯度消失和梯度爆炸的问题。5) 减少过拟合:DenseNet中引入了Dropout和Batch Normalization等技术,可有效减少模型过拟合。DenseNet模型公式如下。
(4)
其中X1,X2,X3,Xi-1代表特征图,Hi代表非线性变换,[]表示将所有特征图按在通道维度上进行拼接。
3.4. ResNext模型
ResNext模型采用一种全新的卷积操作,称为分组卷积(Group Convolution),该卷积操作将输入通道分组,将各分组的通道分别进行卷积计算,最后将各分组的结果进行拼接,得到最终的输出。与传统卷积操作相比,分组卷积可减少运算量,提高计算效率,与此同时ResNext模型融合了ResNet的残差连接(Residual Connection)思想,即将输入与输出进行加和操作,将前一层的输出直接传递到后一层,从而避免了由于网络深度增加带来的梯度消失问题,使得网络更加容易训练。ResNext模型公式如下所示。
(5)
其中x代表输入特征,τi(x)代表分支结构,C代表卷积组大小。
3.5. 基于CBAM的神经网络模型结构
本文提出并构建了三个基于CBAM的神经网络模型,分别如图1、图2和图3所示。其中图1为ResNet50 + CBAM模型结构,图2为DenseNet201 + CBAM模型结构,图3为ResNext50 + CBAM模型结构。三个模型接收到的输入图像维度均为1*224*224。除固有结构差异外,三种模型之间的核心差异在于双通道注意力模块(CBAM)的插入位点不同。
ResNet50 + CBAM模型由以下几部分组成,首先是一个维度为1*224*224的图像输入层,其后是一个7*7的卷积层,卷积后进入4个不同的瓶颈模块组,每个瓶颈模块组由3个卷积层和一个CBAM模块拼接而成,其中第一个瓶颈模块组额外多一个最大池化层,各层的具体参数如下图所示,其中Conv代表卷积操作,c代表通道数,s代表卷积步长,p代表padding数。ResNet50 + CBAM模型结构以及具体参数,如图1所示。
Figure 1. ResNet50 + CBAM model structure
图1. ResNet50 + CBAM模型结构
Figure 2. DenseNet201 + CBAM model structure
图2. DenseNet201 + CBAM模型结构
DenseNet201 + CBAM模型整体结构由以下几部分组成,首先是一个维度为224*224的输入图像输入层,其后是一个7*7的卷积层,卷积后进入4个不同的DenseBlock层,每个DenseBlock层由若干个小体结构构成,每个小体积结构又由一个1*1卷积、一个3*3卷积,以及一个CBAM模块构成,相邻DenseBlock结构间存在一个Transition层,Transition层由一个1*1卷积以及一个2*2的平均池化层构成,最后分类输出层由7*7平均池化和4个完全连接的分类层组成。DenseNet201 + CBAM模型结构如图2所示。
ResNext50 + CBAM模型由以下几部分组成,首先是一个大小为224*224的输入图像,其后是由64个7*7的卷积核构成的卷积层以及一个3*3的最大池化层,池化后进入4个组卷积层,分别重复3、4、6、3次,每个组卷积层都由2个1*1的卷积以及一个Group数为32的分组卷积构成,ResNext50 + CBAM模型结构以及具体参数如图3所示。
Figure 3. ResNext50 + CBAM model structure
图3. ResNext50 + CBAM模型结构
在三个模型的训练过程中,使用交叉熵作为损失函数来计算每次反向传播的损失值。优化器选择SGD (随机梯度下降),学习率为0.001,动量为0.5。选择SGD的优点是,SGD引起的波动有利于优化方向从当前局部极小点跳到另一个更好的局部极小点。因此,对于非凸函数,它会收敛到一个好的局部极值点,甚至全局极值点。此外,优化器一次只更新一个样本的模型参数,训练速度快,有利于模型的快速收敛。交叉熵损失函数及SGD优化器公式如下。
(6)
其中Loss表示交叉熵损失值,y表示真实标签,p表示模型预测概率值。
(7)
其中ωt表示某一时刻模型参数,x代表样本,y代表样本标签,∇ωL(ωt; xi; yi)代表在(xi, yi)点处模型梯度,ρ代表学习率。
4. 实验
4.1. 实验流程
实验总体流程,如图4所示,包括三个重要阶段:1) 通过迁移学习初始化模型参数;2) 合理的图像预处理;3) 选择最优的骨干网络和CBAM的最佳组合。
本文使用ImageNet公开数据集对模型进行预训练,使得模型具有更加合理的初始化参数。图像识别算法的准确性与图像质量强相关,从Kaggle中获取的原始肺炎数据集并不能很好的直接放入到深度学习模型中进行训练。为提高模型分类准确性,本实验在数据集的图像中对每个像素乘以1/255进行标准化处理,使得数据集在0到1的范围内进行归一化,从而使数据集在像素强度方面保持一致。此外,我们所获取的数据集中,不同类别的数据量有较大差异。因此,本文进行了相关的数据增强,使得不同类别数据量保持平衡。数据增强的方法有很多,包括1) 基于几何变换的扩增技术,如Flipping,Cropping,Rotation,Translation,Noise injection等。2) 颜色空间变换,通过在特征通道上进行操作,改变图像颜色分布,进而增强模型对色彩变化的鲁棒性。3) 卷积核滤波器,通过卷积操作对图像进行一系列滤波处理,以增强模型泛化能力,4) Mixing images,通过将多个图像融合生成新图像,从而使得模型更加关注图像间的相关性。5) Random erasing,通过随机擦除图像某区域,引入局部信息损失,使得模型在不完整的图像信息中进行训练,有利于提高模型鲁棒性和泛化能力。本文使用rotation和flipping增强,针对于本实验,rotation操作使得模型能够学习图像不同角度下的特征,避免模型对于训练数据中特定角度的过拟合,flipping操作有助于减小模型对图像中某些方向上的特定特征依赖,使得模型更具泛化能力。几何变换后的肺炎图像,如图5所示。
Figure 5. Image of pneumonia after geometric changes
图5. 几何变换后的肺炎图像
4.2. 数据集及评估指标
4.2.1. 数据集
本实验数据集取自Kaggle公开肺炎数据集,共21,157张肺部X光图片,分为4类,分别是:Coronary pneumonia (3610张),Lung_Opacity (6010张),Viral Pneumonia (1345张),Normal (10192张),典型图像数据如图6所示。
四种类型的肺炎图像在数据集四个子分类中的具体分布情况如表1所示,为确保实验的科学有效性以及模型的健壮性,本实验预先将不同子分类按8:1:1的比例随机分配到训练集、测试集及验证集中。
Coronary pneumonia Lung_OpacityViral Pneumonia Normal
Figure 6. Pneumonia dataset
图6. 肺炎数据集
4.2.2. 评估指标
深度学习模型性能除了和模型本身结构、参数有关外,还与模型评估指标密切相关,针对不同模型及应用场景,选择合理的评估指标对模型性能的合理判断极为重要。
为了多方位多角度的评估本实验模型真实性能,本文采引入了4中不同评估指标,分别为:1) Accuracy;2) Precision;3) Sensitivity;4) F1-Score。
1) 模型Accuracy值代表模型分类准确度,表示在所有样本分类中正确分类的比例。
2) 模型Precision值代表模型分类的精确度,表示在所有被预测为正类别的样本中,真实属于正类别的比例。
3) 模型Sensitivity值代表模型分类的特异性,表示在所有实际正类别样本中成功预测为正类别的比例。
4) 模型F1-Score值兼顾了模型准确率和灵敏性,是准确率和灵敏性的调和平均值。
上式中,TP为模型正确预测为正类别的样本数,TN为模型正确预测为负类别的样本数,FP为模型错误预测为正类别的样本数,FN为模型错误预测为负类别的样本数。
4.3. 基于CBAM的改进ResNet50模型的肺炎CT图像识别
原始肺部X光图像经rotation,flipping增强后,按batch_size = 16为一组,输入ResNet50 + CBAM模型进行训练,按图1所示结构,在ResNet50基模型不同位点融入CBAM特征提取模块,强化模型特征提取力度,图像在模型内部经过一系列池化、卷积、CBAM处理等操作得到最终的输出结果。
经过改进的ResNet50模型在训练集上的loss变化曲线以及在验证集上的Accuracy变化曲线如图7所示,在400个epoch后loss以及Accuracy变化趋于稳定,经500个epoch后ResNet50 + CBAM模型在验证集上的四分类肺炎分类最大准确率达到89.504%。
Figure 7. Changes in Loss and Accuracy values of ResNet50 + CBAM Model
图7. ResNet50 + CBAM模型Loss值与Accuracy值变化情况
4.4. 基于CBAM的改进DenseNet201模型的肺炎CT图像识别
图像增强后的原始肺部X光图像按batch_size = 16为一组,输入DenseNet201 + CBAM模型进行训练,按图2所示结构,图像经一系列DenseBlock层、Transition层进行特征提取,在每个DenseBlock中,每经一个由1*1以及3*3卷积构成的小体结构后,额外进行一次CBAM特征提取,使得模型提取到更加深层的图像信息,图像在模型内部图像经过一系列池化、卷积、CBAM处理等操作得到最终的输出结果。
经过改进的DenseNet201模型在训练集上的loss变化曲线以及在验证集上的Accuracy变化曲线如图8所示,在大约350个epoch后loss以及Accuracy变化趋于稳定,经500个epoch后DenseNet201 + CBAM模型在验证集上的四分类肺炎分类最大准确率达到95.112%。
Figure 8. Changes in Loss and Accuracy values of DenseNet201 + CBAM Model
图8. DenseNet201 + CBAM模型Loss值与Accuracy值变化情况
4.5. 基于CBAM的改进ResNext50模型的肺炎CT图像识别
图像增强后的原始肺部X光图像按batch_size = 16为一组,输入ResNext50 + CBAM模型进行训练,按图3所示结构,分别在每个组卷积层中的分组卷积块后加入CBAM特征提取模块,将图像经过组卷积后的特征在空间以及通道维度上进行二次特征提取,使得图像特征被充分利用,图像在模型内部图像经过一系列池化、卷积、CBAM处理等操作得到最终的输出结果。
Figure 9. Changes in Loss and Accuracy values of ResNext50 + CBAM Model
图9. ResNext50 + CBAM模型Loss值与Accuracy值变化情况
经过改进的ResNext50模型在训练集上的loss变化曲线以及在验证集上的Accuracy变化曲线如图9所示,在大约400个epoch后loss以及Accuracy变化趋于稳定,经500个epoch后ResNext50 + CBAM模型在验证集上的四分类肺炎分类最大准确率达到93.948%。
4.6. 结果与分析
本文经实验得到的三种四分类肺炎模型的性能指标如图10所示。从中可以看出,DenseNet201 + CBAM在准确度、精确度、灵敏度以及F1-Score均显著优于ResNet50 + CBAM模型以及ResNext50 + CBAM模型,最大值分别为95.112%、96.2%、95.4%和95.9%,这体现了DenseNet201+CBAM模型的潜在卓越性,同时也凸显了CBAM模块对模型性能改进的积极作用。深入分析图7、图8和图9,可以更为具体地观察到DenseNet201 + CBAM模型相较于ResNet50 + CBAM模型和ResNext50 + CBAM模型的性能优势。首先,在loss值的收敛速度方面,随着训练批次的逐渐增加,DenseNet201 + CBAM模型呈现出更为迅速的模型损失收敛趋势。这表明DenseNet201 + CBAM模型更为迅速地适应了训练数据,为其更高效的学习能力提供了有力支持。其次,模型在准确度提升速率方面也展现出明显差异,进一步印证了DenseNet201 + CBAM模型在特征提取和分类性能方面的卓越表现。
Figure 10. Comparison results of the three models proposed in this article on Accuracy, Precision, Sensitivity, and F1 Score
图10. 3种模型在Accuracy、Precision、Sensitivity、F1-Score上的对比结果
肺炎分类是目前医学图像分类的热门话题,但绝大多数肺炎分类都是二元分类,多分类模型较少。本文将通过实验获得的最优模型DenseNet201 + CBAM与近年来他人肺炎多分类模型进行了比较,结果如表2所示。
Table 2. Comparison of accuracy of four classification pneumonia models in recent years
表2. 近年来四分类肺炎模型分类准确度比较
由表2可知,本文提出的基于CBAM改进的DenseNet201模型比近年来提出的四分类肺炎分类模型具有更好的准确性。
5. 结束语
本文将特征提取模块CBAM与不同网络模型进行融合,探究并对比分析了CBAM + DenseNet模型在四分类肺炎数据集上的性能,本文提出的基于CBAM的DenseNet201四分类肺炎模型在分类准确度上达到95.112%,超过近些年其他肺炎四分类模型,实验结果证明该模型适用于多分类肺炎分类检测,临床诊断时可为医生提供可靠帮助。基于CBAM的DenseNet201四分类肺炎分类模型不仅在医学图像分类领域具有实质性作用,同时也为深度学习方法在其他复杂任务中的应用提供了有益的经验和指导。本文的研究为未来医学影像分析和疾病诊断领域的深入研究提供了新的思路和方法。
未来工作将结合更多临床数据进一步提高DenseNet201 + CBAM的预测能力,以实现快速区分不同肺炎患者,并在肺炎患者得到快速救治的同时,更大程度地减小医疗压力。