基于Inception-ResNet的肺部CT图像分类
2021-06-16吴云峰吴春敏
吴云峰 吴春敏
(福建中医药大学 福建省福州市 350100)
1 基于Inception-ResNet的分类网络
1.1 Inception-ResNet网络架构介绍
本文将Inception[1]和ResNet[2]网络结构进行结合,并且加入Stem、SE-Block、Reduction 等部分。因为Inception 结构是通过卷积过程来运算的,实验过程中把原来的7*7 和5*5 的卷积核分解为7*1,1*7,5*1,1*5,这样做可以增加运行速度,并且加深了一倍的网络深度。ResNet 的残差结构引入的目的是减少因为层数增加而导致的梯度消失以及过拟合问题[3]。SE-Block 的嵌入是为了增加网络中的特征的权重,并且把激活函数把原有的ReLU改成LeakyReLU,目的是增加网络泛化能力。最后的一个层级是Softmax,本文肺炎CT 图像种类为3 种,此处将Softmax 设置为3。详细的模型示意图如图1。
1.2 Inception-ResNet实践细节
本文的Inception-ResNet 模块正如图2 所示。主要有以下步骤:第一步,全局平均池化[4](Global pooling),将从inception 网络的图片特征中获得全局特征信息,输出结果x;第二步,将上一步池化结果x 通过全连接层(FC),此处获得结果C1·x,目的是减少通道数量,减少计算参数;第三步,经过非线性层(ReLU),激活函数此处为θ,获得结果θ(C1x);第四步,将结果传递到全连接层(FC)设置学习的缩放参数为C2,此处目的是将通道数还原至原有的数量,此步骤获得结果为C2θ(C1·x);第五步,将第四步的结果传送到非线性层σ 以此获得各个通道的权重信息并输出。所有的特征信息参数都包含在全连接层当中,权重信息通过激活函数设置,以此来实现着重学习重要特征,达到减少干扰项的目的。模型最后一步是把分别来自ResNet 模块和Inception 模块的对应信息进行叠加。另外,为了减少参数量和计算量,本文的残差模块只应用到最后一个Inception 模块进行结合,这样计算量减少的同时不影响实验最终的准确率。
2 数据集及数据预处理
2.1 数据集来源
本文使用的实验数据来自于国家生物信息中心的病毒信息库数据集(http://ncov-ai.big.ac.cn/download)。这个数据集经过国家专业研究认证,主要是针对肺炎病例、病毒性肺炎病例和正常图像的数据库。数据集共有7500 张CT 图像(普通肺炎CP、正常N、病毒性肺炎CVP 各2500 张),其中各取1600 张用于训练(共计4800 张),各取400 张用于验证(共计1200 张),各取500 张用于测试(共计1500),所有图像都是JPG 格式。
2.2 数据预处理
为了减少实验过程中出现过拟合,提高网络模型的准确性,实验过程前期采集特征式,采用数据增强方案来增加特征提取,主要包括以下内容:增加随机噪声,镜像以及旋转(90 度、180 度270 度)。
图1:本文的模型示意图
图2:本文的Inception-ResNet 模块示意图
表1:Inception-ResNet 准确率变化图
表2:ResNet 三分类结果
表3:GoogLeNet 三分类结果
表4:本文Inception-ResNet 三分类结果
表5:三分类不同模型之间分类效果比较
3 训练与测试
本文所用的实验环境主要在 GPU 下进行,CPU 为I7-7700,主存16G,GPU 为 NVIDIA RTX2070,操作系统是Win10,采用Pytorch 深度学习框架,编程语言是Python,卷积神经网络进行搭建。
4 实验过程及实验结果
4.1 实验过程
第一步是把经过预处理的训练数据进行网络模型的训练阶段,第二步时在训练过程中采用损失函数交叉熵来对网络模型进行,第三步是把测试集调用到网络模型中对其结果进行测试分析并做出相应的调整。
本文用 CLAHE 算法对训练集中的胸部CT 图像将数据集进行预处理[5]。之后将CT 图像的大小设置为224×224,然后把上一步处理好的CT 图像导入本文的Inception-ResNet 网络模型当中开始训练模型,最终把本文选用的测试集的数据拿到模型中进行测试实验结果,然后记录好结果信息进行比对。设定本文的初始学习率为0.001,设定初始的权重衰减值为0.0001,当学习率衰减超过3 次以后权重衰减就是0。
表1 表示使用Inception-ResNet 网络模型的训练集和验证集准确率的变化图,容易发现进行5 次迭代以后准确率基本稳定并且保持98%左右的较高水平,到迭代5 次之后准确率已经收敛。而且前几次迭代准确率波动明显,主要原因是模型对于特征学习不够充分,不能很好地识别。
4.2 实验结果
我们设置模型的测试准确率为:98%。当准确率达到或者高于98%时,本文的训练和验证过程结束,随后用模型完全没有接触过的测试集1500 张图片(各500 张)进行混淆矩阵测试,得到三种模型的实验结果如表2、表3 和表4 所示。
为了评估模型的有效性,本文与另外的卷积神经网络进行比较,包括: ResNet18 和GoogleNet,所有模型都采用完全相同的图像预处理算法,然后对实验的预测结果记录并分析。本文才有以下三个指标对模型进行客观评价,分别是准确率(accuracy,ACC)、灵敏度(sensitivity,SEN)和特异性(specificity,SPE)[6],计算公式如下:
5 结果对比与分析
分类效果对比如表5 所示,本文改进的Inception-ResNet 网络模型的方法准确率、灵敏度、特异性分别是 96.1%、96.1%、98.0%,任意项指标都高于ResNet 模型、GoogleNet 模型,准确率和灵敏度也是位居第一。和GoogleNet 网络模型相比,本文Inception-ResNet 的参数量减少了23.9%,而且分类效果有所提高。另外从实验结果可以看出,本文使用的模型在肺炎CT 图像数据分类中,具有非常好的分类效果。
显而易见,三个模型在肺炎CT 图像分类的准确率都在95%以上,这可能归功于数据集本身成像清晰,轮廓和特征尤其明显。可以计算出ResNet 模型病毒性肺炎分类准确率为89.6%,肺炎图片分类准确度达到97.6%,满足分类肺炎需求;GoogleNet 模型病毒性肺炎分类准确率为88%,肺炎分类准确率为96.6%;Inception-ResNet 模型病毒性肺炎分类准确率为89.4%,肺炎分类准确率99.2%。以上结果表明在肺炎数据集上本文模型相比于其他卷积神经网络模型,参数量更少,具有更好的效果。