基于卷积神经网络的自动新冠肺炎诊断算法

2021-12-27 09:05孙姜子涵
科学与生活 2021年22期

孙姜子涵

摘要:随着新冠疫情的爆发,诊断和治疗新冠肺炎对于每个国家来说都是一次重要的考验。本文通过研究卷积神经网络提出了一种基于卷积神经网络的自动新冠肺炎诊断方法。本文使用AlexNet和VGG作为基准算法进行实验,并在开源新冠胸部CT数据集上进行测试,其中,AlexNet得到了75%的诊断准确率,VGG网络得到了83%的诊断准确率。本文算法为新冠肺炎的自动检测提供了思路,并且推动了自动诊断算法的发展。本文算法可以通过更换更深层的卷积神经网络或者利用更多训练数据来达到更高的测试精度,从而为自动诊断算法的落地奠定了基础。

关键词:医学影像处理; 新冠疫情自动诊断; CT图像分析; AlexNet; VGG

1. 1.研究背景

近两年新冠疫情在全球蔓延态势严峻,对于患者病情的诊断工作也迫在眉睫,在临床方面,医生主要通过肉眼来识别患者胸部CT的异常状况来进行判断,费时费力,由于近年来深度学习模型的兴起与发展,借助计算机网络来对图片进行识别和分类水平有了很大的进步,因此通过计算机技术对新冠患者的胸部CT进行识别诊断有着重大的意义与价值,本文将重点研究利用深度学习框架对新冠胸片进行识别与分类。胸片识别问题通过将患者的胸片数据输入到网络中,通过网络计算判断患者是否患有疾病并直接得到患病概率。现有文献已对新冠自动诊断算法有了初步的研究,并且仍在积极的完善当中,新冠肺炎患者胸部CT图像具有特征性表现,使用AI技术能够有效指明病灶存在的肺段解剖位置,而且能够在短时间内得出病灶的体积,看出病灶的实际大小,基于AI技术分析新冠患者的胸部CT,能够得知肺炎病灶分布的情况特征,判断肺炎严重程度,具有重要的临床意义[1]。确诊新冠肺炎患者与疑似新冠肺炎患者相比,在白细胞数、淋巴细胞百分比、肌酸激酶、红细胞沉降率及密度、形态、病灶分布、间质增厚、病灶内血管束增粗、条索灶、胸腔积液等方面存在显著差异[2]COVID-19初期和短期胸部CT表现因临床类型不同而不同,轻型和普通型往往病情相对较轻GGO较常见;而重型和危重型病情较重,相对的CT常表现为GGO伴实变征象。CT检查可用于评估COVID-19肺炎的严重程度,有助于监测不同临床情况随访过程中的病情变化[3],新冠胸部CT小叶间隔增厚,还可见空气支气管征、增粗血管征及晕征等。治疗后患者肺部病变动态演变较快,CT上可显示为吸收缩小、密度变淡,亦可出现肺变实、纤维化等[4],患者肺部CT的主要征象表现为多发外周带磨玻璃阴影(GGO)、双肺斑片状GGO伴节段性实变、双肺斑片状实变、双肺弥漫性磨玻璃阴影、双肺弥漫性混合磨玻璃阴影、双肺大面积实变影,伴随征象有支气管充气征、小叶间隔增厚、胸腔积液[5]。以上是新冠肺炎的肺部病变特征情况,在使用机器学习或是深度学习算法对于新冠疫情进行诊断方面,也有不少的发展,有使用python开发系统以及SIR传染病模型和随机森林模型等多种数学模型对全球新冠感染新冠的患者病例以及中国不同的风险区域划分数据来进行分析[6]。以及基于多模态深度学习模型来对新冠病人的病情严重程度进行评估,对于轻症状患者转化为重症状患者的风险进行了预测[7]。利用深度学习分割的方法对新冠肺炎病灶进行快速自动分割,并进行定量CT分析来进行对于患者病情的预测与评估[8]。

基于上述研究,本文旨在提出通过卷积神经网络来进行基于患者胸片的新冠肺炎自动诊断算法。本文使用AlexNet和VGG网络来完成新冠肺炎的诊断。之后,我们将本文网络在新冠胸部CT数据集上进行了训练和测试,本文算法中的AlexNet和VGG分别得到了75%和 83%的诊断精度。 本文方法为使用卷积神经网络进行自动新冠肺炎诊断提供了思路,并且达到了一个令人满意的结果,验证了新冠肺炎的自动诊断算法实现的可行性。

2. 2.研究方法

本文使用了两种不同结构的网络,分别是AlexNet和VGG网络。在本章节,我们将简要介绍这两种网络结构。随后我们还介绍了本文使用的新冠胸部CT数据集。

2.1 AlexNet网络

AlexNet网络总共有八层结构,前五层为卷积层,后三层为全连接层,网络的结构图如图1所示,在图中可以看出,整个过程分为两个通道进行。下面我们将逐层对AlexNet网络进行介绍。

第1层:卷积层1,输入一张 224*224*3的RGB图片,长宽是224个像素,RGB彩色图通道为3通道,所以是224*224*3,论文中的两片GPU分别计算48个核;卷积核的数量一共是96个, 卷积核的大小为 11*11; stride = 4, stride代表的是意思步长, padding = 0, 表示的含義不扩充边缘;卷积后的图形的宽是(224 + 2 * p -卷积核大小) /步长+ 1 = 54长是 (224 + 2 * p - 卷积核大小) /步长 + 1 = 54维度是 96然后进行局部响应统一, 后面跟着池化每一个池化的尺寸是3*3, 步长是2, padding是 0 最后可以得到第卷积1的特征图像(feature map)。

第2层:卷积层2, 这一层的输入为卷积1的特征图像,论文中两个GPU分别计算128个卷积核,一共有256个卷积核。卷积核的大小是5*5; padding是 2, 步长是1; 接着进行LRN(局部响应归一化), 最后进行最大池化, 每个池化的大小是2*2, 步长是2。

第3层:卷积3, 输入的是上一层的输出,一共有384个卷积核,卷积核的大小是3*3, padding是 1, 第3层中并没有使用局部响应归一化和池化

第4层:卷积4, 输入的是上一层的输出,一共有384个卷积核, 卷积核的大小是3*3, padding 是 1, 和上一层一样,没有使用局部响应归一化和池化

第5层:卷积5, 输入的是上一层的输出,一共有256个卷积核, 积核的大小是3*3, padding 是 1。然后直接进行最大池化,每个池化的大小是3*3,步长是2;

第6,7,8层都是全连接层,每一层都有4096个神经元,最终输出分类数目为1000,。全连接层中使用了RELU和Dropout函数。

AlexNet网络具有很好的泛化能力可以应用到各个不同的视觉方向并且仍被广泛使用。其中AlexNet有如下特点:

(1) 应用ReLU函数作为卷积神经网络的激活函数,在一定程度上解决了sigmoid函数的饱和性问题。

(2)在训练的过程中使用Dropout随机忽略一部分神经元,避免模型出现过拟合的现象。过拟合就是模型过度的学习本不需要它学习的东西,会导致模型训练结果与预期不相符AlexNet将Dropout实际应用了起来,通过实验证明的Dropout的成效。Dropout主要出现在AlexNet最后三个全连接层中。

(3)在卷积神经网络中应用重叠的max-pooling(最大池化)。此前卷积神经网络中通常都是使用average-pooling(平均池化),AlexNet全部都是使用最大池化,因此避免平均池化的参数误差模糊等问题。而且使得stride步长小于池化核的尺寸,使得池化层的output之间会有重叠和覆盖,丰富了特征性。

(4)提出了LRN层(局部响应归一化),对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。(后来的VGG证明这个作用不大)。

(5)使用CUDA加速训练深度卷积网络,利用GPU来同时处理神经网络训练时庞大的矩阵运算量。AlexNet使用了两块GTX580GPU进行训练,同时AlexNet的设计让GPU之间的通信只在网络的某些层进行,使得通信的性能损耗得以降低。

(6) AlexNet通过数据增强的方式,随机将256*256的图片裁剪到227*227大小,测试的时候对左上左下右上右下中间部分进行了五次裁剪然后进行水平翻转以及镜像翻转,所以一共可以得到10次裁剪的图片,取平均值进行研究,然后对图像的RGB空间进行PCA处理(主成分分析),并对主成分做一个标准差为0.1的高斯扰动对光照颜色进行变换,增加些许的噪声,借此来提升模型的准确度。[9]

因此本文将采用AlexNet进行新冠肺炎的诊断。

2.2 VGG网络

VGG网络是一个深度卷积神经网络,具备所有卷积神经网络的功能,常用来提取特征图像,在定位和分类任务上都取得了很大成就。表1是VGG网络的详细结构以及不同网络变体。

从表1得知,作者提出了从A-E其中不同程度不同层数的网络结构,层数范围从11-19整体网络结构有一个输入,输入的是一个224*224的RGB图片,以D为例,然后经过两个卷积层(conv3-64)卷积核大小3*3,卷积核个数是64,然后经过最大池化层,然后两层卷积层一个最大池化层,三个卷积层一个最大池化层,然后三个卷积层一个最大池化层,三个卷积层一个最大池化层,最后到了三个全连接层(FC-)前两个全连接层使用了Relu激活函数,并且这两个全连接层函数之间都有dropout来对全连接层的一些神经元进行随机的失活以防止拟核现象,第三个全连接层没有激活函数,因为最后的soft-max函数来对结果进行概率化

网络总层数=conv层+FC层,maxpool最大池化层每个池化的尺寸是2*2,步距是2。

与alexnet相比, 通过堆叠两个3*3的卷积核来代替一个5*5的卷积核,通过堆叠三个3*3的卷积核来代替一一个7*7的卷积核(可以减少参数量)假设输入特征矩阵和输出特征矩阵的深度(channel)为C使用一个7*7卷积核所需参数:7*7*C*C=49*C*C, 使用三个3*3卷积核所需参数:3*3*C*C+3*3*C*C+3*3*C*C=27*C*C,因此VGG可以在保证精度的前提下能够实现更小的参数量,从而提高网络前向传播的速度。[10]

2.3 实验数据集介绍

本文使用的是开源的新冠胸部CT数据集,数据集的项目链接为:https://www.kaggle.com/c/siim-covid19-detection

数据集一共包含6334张图片,并且包含多个标签类别,分别是,“阴性”、“典型”、“不确定”、“非典型”,我们在实验过程中将“阴性”视为不患病的健康个体。其余三个类别我们都将它判断为感染了新冠肺炎的个体。从而将一个四分类问题转换为二分类的问题,并且适用于新冠肺炎诊断这一实际问题。图2是新冠胸部CT数据集四种不同标签示例图。

2.4 实验细节

第一步是模型的搭建,本次实验选用的是AlexNet,由于是一个二分类问题,这里需要将AlexNet的输出调成2,并使用keras作为开发框架,搭建网络。

第二步是数据预处理,先将数据集中的6334张胸片图片按照Negative_for_Pneumonia和Non-Negetive区分,然后将数据集中的图片对应的路径和标签整理到一个txt文件中,Negative_for_Pneumonia对应的是0,Non-Negetive对应的是1.我们采用了多种图像增强的方式来进行数据增强,首先,我们随机地从256*256的原始图像中截取224*224大小的区域(以及水平翻转及镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增強后可以大大减轻过拟合,提升泛化能力。其次,我们对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个技巧可以让错误率再下降1%。最后,我们在进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。

第三步是訓练过程,将数据集按照1:9的比例划分为验证集和训练集,然后就是控制模型中学习率下降的方式,定义学习率之后,经过一定epoch迭代之后,模型效果不再提升,该学习率可能已经不再适应该模型。需要在训练过程中缩小学习率,进而提升模型。我选择使用的是keras库中的回调函数ReduceLROnPlateau与EarlyStopping一同应用,如果代码中只使用EarlyStopping则可能会导致训练过早的进行早停现象,当使用回调函数ReduceLROnPlateau在训练的过程中优化衰减学习率时得到的测试精准度也会有显著提升,训练的epoch也会变多。不会在训练过程中太早的触发早停现象。在代码的参数设置方面EarlyStopping的patience参数设置要比ReduceLROnPlateau的patience参数设置大一点效果才会明显。训练中我选用Adam优化器对模型参数进行优化,初始的学习率设置为1e-3,第一次训练的轮次为50个epoch,最后发现模型没有达到最优,loss函数没有收敛的趋势,因此第二次训练将epoch增加到100,最终模型达到更加好的效果。

第四步是验证,我们通过将单张图片进行输入,并由网络给出患病概率从而得到诊断结果,之后我们还对诊断结果与CT图像进行可视化。

3. 3.实验结果

3.1 AlexNet的实验结果

首先AlexNet的结果如表2 所示,我们分别给出了训练和测试阶段的准确率。AlexNet在新冠胸部CT数据集上的测试准确率达到了75%并且通过对比网络的训练和测试阶段的准确率发现网络的泛化能力比较强,测试准确率还略高于训练准确率。如图2所示,我们还展示了Alex Net的训练过程。我们发现网络在训练过程中的收敛速度较快,并且网络的收敛性正常。

3.2 VGG的实验结果

其次,我们在测试数据集上评估了VGG网络的性能,网络各个epoch的训练/测试的精度和损失值如图3所示,测试和训练结果如表3所示,VGG网络在训练集和测试集上的表现均优于AlexNet,并且得到了82%和83%的训练和测试准确度。我们可以发现随着网络层数的加深,我们得到了更好的性能。由此可以看出网络的深度还没有满足任务的需求。在未来工作中,我们还可以继续将更深层的网络应用于新冠检测中从而得到更好的结果。

3.2 可视化结果

在本章节,我们展示了AlexNet在诊断新冠肺炎时的可视化结果以及对应的标签信息,我们可以看出AlexNet可以正确分类是否患病并且给出正确的诊断结果。

4. 结论

在本文的研究中,我们提出了一种基于深度学习网络的新冠肺炎自动诊断算法,本文方法通过使用AlexNet和VGG网络作为基准模型将患者的胸部CT图片送入网络中,通过网络的计算得到患者患病的概率,AlexNet和VGG网络在开源的新冠胸部CT数据集中分别取得了75%和83%的测试精度。本文为深度学习在新冠疫情诊断任务中的应用提供了初步的尝试。并且,在未来的研究中,我们可以继续通过增加网络的深度并且利用更多的开源数据来进一步提升算法性能与准确度,为新冠肺炎自动诊断算法的实现奠定了基础。

参考文献

[1]张振华,吉祥,张劲松,等基于AI技术的新型冠状病毒肺炎CT影像特点分析[J].医疗卫生装备,2020,41(05):6-8+27

[2]庄晓旭,疑似及确诊新冠肺炎的临床及胸部CT影像特点[J].影像技术,2021.33(03):54-58

[3]邓艳芳,胡磊,余芳,等新冠肺炎(COVID-19)的临床特征及CT表现[J].现代医用影像学,2021.30(06):1012-1016

[4]沈晶,余晶,鄢英男,等COVID-19患者胸部CT表现特点及其演变规律[J].CT理论与应用研究,2021.30(02):199-207

[5]费宏运,陈庚,迟兆瑞,赵增顺,基于AlexNet的新冠肺炎CT图像识别的可行性分析,信息与电脑(理论版),2021.33(04):137-140

[6]付俊宁,欧阳浩,林广盛等基于多种模型机器学习算法的数据分析——以COVID-19日常病例为例[J],信息技术与信息化,2021,(07):216-218

[7]李仕康;李卓;徐瑞卿等基于多模态深度学习的新型冠状病毒肺炎重症转化风险预测[J].新发传染病电子杂志,2021,(02):133-137.

[8]杨雯;辛小燕;张艳秋等基于深度学习模型对新型冠状病毒肺炎的定量CT研究[J].医学影像学杂志,2021,(06):985-988.

[9]Alex Krizhevsky,Ilya Sutskever,Geoffrey E.Hinton,ImageNet Classificationwith Deep Convolutional Neural Networks, In NIPS, 2012.

[10]Karen Simonyan,Andrew Zisserman,VisualGeometry Group,University OfOxford .Very Deep Convolutional Networks for Large-Scale Image Recognition.InILSVRC workshop, 2014.