APP下载

基于改进DenseNet网络的肺结节检测仿真

2022-05-14谢红薇FaiziMohammadKhalid

计算机仿真 2022年4期
关键词:恶性卷积结节

曹 真,谢红薇,张 昊,Faizi Mohammad Khalid

(1. 太原理工大学软件学院,山西 太原 030024;2. 太原理工大学信息与计算机学院,山西 太原 030024)

1 引言

肺癌是当下死亡率居高不下的癌症之一[1]。恶性肺结节是肺癌的早期表现形式,因此做好肺结节检测是降低肺癌死亡率的重要手段。肺结节良恶性分类诊断是计算机辅助诊断领域的重要课题[2],对辅助医生尽快发现并诊断病人肺癌有重大的意义。现有计算机辅助肺结节良恶性分类分为两个方向,其一是对图像进行量化特征提取,分割,如SIFT[3]、直方图特征等,之后采用传统的机器学习分类算法如支持向量机,随机森林[4]等方式来进行。但是上述方法的图像特征提取由人工设计,对图像特征提取的要求高,同时无法对图像信息进行深层次的分析与利用。另一种方向则是采用神经网络的方式进行肺结节良恶性分类,如Hussein 等[5]采用基于AlexNet多层卷积神经网络结构来对肺结节良恶性情况进行分类,但是由于技术限制,网络较为简单,检测准确率比较差;Suzuki等[6]提出了rd-CNN模型,利用改进的卷积神经网络在肺结节分类方面取得了良好的效果,但算法对于数据集要求较高,实际应用存在困难;Shen[7]等人提出的MC-CNN结构,将多个卷积神经网络模型裁剪不同区域针对结点主要信息进行学习,这种方法还是在原有CNN结构上进行改进,模型存在参数冗余的情况;Nibali 等[8]提出了基于 ResNet卷积神经网络结构,利用残差学习的思想加强网络信息层间流动对肺结节进行分类,但是模型参数过多,训练效率有待提高。

以上的方法在提高分类准确率与模型性能方面上还有提高的空间。因此,本文提出了一种基于改进DenseNet的肺结节良恶性分类模型:分组卷积稠密神经网络(Group Convolution Dense Convolutional Network,GC-DenseNet)。该网络在DenseNet网络结构基础上,在稠密块中加入了分组卷积操作,利用分组卷积的思想,采用多通道分组进行参数优化,减少了网络中的参数,避免网络训练过程中过拟合的现象,从而提高了对肺结节检测的准确率与效率。

2 模型与方法

在肺结节检测中,图像特征的提取是决定模型检测准确率的关键环节,因此本文在已有的研究基础上,对图像特征提取网络进行研究改进。首先对DenseNet网络进行了阐述,在此基础上加入了分组卷积的思想,提出了GC-DenseNet肺结节检测算法。

本文提出的基于改进稠密神经网络的肺结节检测模型GC-DenseNet,主要包含三个步骤,(1)肺结节良恶性图像数据集预处理。(2)特征提取,利用GC-DenseNet对肺结节CT图像特征进行提取。(3)特征融合分类阶段,采用Softmax作为分类器进行分了。算法整体流程如图1所示。

图1 算法流程图

2.1 DenseNet

稠密神经网络作为一个深度的复杂神经网络有很好的应用空间。稠密神经网络(Densely Connected Convolu-tional Networks,DenseNet)[9]主要包括两个部分稠密块(Dense Blocks)与过渡块(Transition layers)。在一个稠密块中每一层的输入包含前面所有层的输出特征信息,通过过渡块来将产生特征信息到下一个稠密块。如图1所示为一个DenseNet稠密块示意图。可以看出在每一层网络不仅和下一层相连接,也和之后的所有网络层相连接,这样保证了稠密块中的每一层都与损失函数和原始输入的层数相连接,网络结构随着稠密块的增加变得紧密,可以有效的减少梯度消失问题,提高整个网络的收敛速度,促进了特征的重用。定义如下:

对于单个稠密块来说假设稠密块Bi有L层,第l层包含前面所有层的特征图输入,最终输出的xl为

xl=Hl([x1,x2,…,x(l-1)])

(1)

其中[x1,x2,…,xl]代表l层前的l-1层的特征图的集合,H(*)表示为作用在特征图集合上面的操作,总共分为三个部分,如图2所示为有一个两层DenseNet稠密块结构示意图,分为批量正则化操作(BN)、线性整流函数激活函数(Relu)以及一个3×3卷积操作(Conv3×3)。

过渡层在稠密块Bi完成各层连接之后,通过过渡层在Bi和Bi+1进行特征图传递,传递到下一个稠密块Bi+1的输入为xi+1

xi+1=Ti([x1,x2,…,xi])

(2)

上述公式中T(*)表示过渡层对前一个稠密块中输出特征图的操作结构,包含一个批量正则化操作层,一个1×1×1卷积层,一个2×2×2最大池化层组成。通过稠密块和过渡层的配合使模型参数得到最大限度的利用,减少过拟合的情况。

图2 DenseNet稠密块结构示意图

2.2 分组卷积

在DenseNet中由于每一个稠密块中每一层网络都与前面网络相连接,会导致每一个稠密块的输出维度过大,导致计算代价过高,同时冗余参数过多的问题。因此在每一个稠密块中本文引入分组卷积操作对模型进行降维,减少参数数量,提高计算效率,更敏捷的对肺结节样本进行分类。同时在经过分组卷积操作之后可以根据不同通道自适应的对通道进行权重加权,突出肺结节特征,降低背景因素的干扰。

2.3 GC-DenseNet

2.3.1 网络结构

本文在稠密神经网络的基础上加入了分组卷积的思想来解决肺结节检测问题,提出了GC-DenseNet网络,网络整体结构如图4 所示,包含7×7的卷积层、3×3池化层、4层稠密层(分组卷积分组数为3)、3个过渡层、全局池化层以及Softmax分类器。

在稠密块部分,GC-DenseNet在DenseNet网络结构上添加了分组卷积的思想,如图3所示为GC-DenseNet中稠密块中分组操作示意图,将稠密块中的输入分组进行BN-Relu-Conv操作。在式子(1)中H(*)中对前面每一层的特征图进行操作,在稠密块中进行分组操作对每一层的特征图分成G组。最终第l层中H(*)内输入变成:

(3)

其中G为分组卷积内对分组进行的操作,稠密块中的输出最终变为

xl=Hl(∑~G[x1+…·+xl])

(4)

其中G(*)为分组卷积操作,最终稠密块的输出作为下一个稠密块的输入经过过渡层(Transition layer)传输到下一个稠密块之中。相较于原有模型减少在稠密块中的特征丢失,在丰富图像特征的基础上,消除冗余参数。

图3 GC-DenseNet稠密块分组卷积操作结构示意图

图4 GC-DenseNet肺结节良恶性分类模型结构示意图

过渡层由BN层,1×1卷积层,2×2平均池化层组成,经过稠密块的输出经过过渡层进行降维。

最后使用全局池化来得到每个特征图的平均值,最后输入 softmax中。作为模型的分类器作为肺结节良恶性判断的分类器。Softmax分类器是逻辑回归在多分类问题上的解决方案,首先通过 Softmax将多个神经元的输出映射到0和1之间,将数值大小转化为概率。假设输一个输出数组X,Xi为数组X的第i个元素,因此Softmax的预测概率结果计算方式如式(5)所示

(5)

其中,k表示数组X的元素个数。L(x)损失函数对神经网络的输出值进行了归一化,则所有输出经过L(x)损失函数之后的概率和为1。

2.3.2 GC-DenseNet损失函数

由于现实中,肺结节正负样本不平衡,因此针对这种情况,采取Focal loss[12]作为模型的损失函数

(6)

其中x是特征值,i与j是类别,Pi=exp(xi)/∑exp(xj)代表每个类别的概率值,γ是调节损失函数变化的参数,

当神经网络对类别预测概率值很大,相应的1-Pi会比较小,损失函数的损失比较小,网络不会着重根据这样的样本进行参数调整; 而当神经网络对正确类别预测概率较小时,相应的1-Pi会比较大,损失函数损失会相应的变大,神经网络反向传播时获得的偏导因此会提高,网络会着重对这样的样本进行参数调整。对于肺结节图像来说存在的一定数量的难以区服的肺结节。因此,神经网络可对分类困难的、容易错分的肺结节样本进行区分,而且还能够改善数据集中数据不平衡的问题。

3 数据集处理

本文采用美国肺部图像数据库联盟LIDC-IDRI数据集作为肺结节良恶性情况分类实验数据集[11]。数据集中共有1018套真实的肺部结节CT图像,同时还包含由4位经验丰富的放射科专家标注的肺结节位置坐标信息。如图4所示为肺结节样本图像。

在经过专家标注后的LIDC-IDRI肺结节图像总共有三个类别标签,良性,恶性以及不确定。同时根据结节恶性评估总共分为五个等级1—5。本文设定其中等级低于3划分为良性肺结节,高于3划分为恶性肺结节,等于3划分为不确定情况。

分析数据集发现在数据集中,图像中肺结节大小范围为2mm~45mm,因此对数据集进行分割操作,以肺结节为中心将CT图像分割成64mm×64mm的图像作为模型的数据输入。可以保证所有输入图像可以完整的包含每一个肺结节。

为了保证数据集肺结节图像分类准确性,采取三名或三名以上专家标注一致的图像进行实验。得到良性肺结节1428张图像,恶性肺结节678张图像。如图所示为肺结节良恶性样本图像。同时为了保证模型的泛化能力对原始数据集进行增强操作。采取翻转、平移、旋转、增加噪声等方法扩充数据集,将扩充后的数据集作为实验数据集。在训练样本进入模型进行训练之前做好归一化处理。将数据的阈值归一到(0,1)之间。

图4 肺结节样本结节示意图

4 实验设计与结果分析

4.1 评估标准

本文使用准确率、敏感性、特异性、AUC值作为评判模型分类效果的指标。

定义恶性肺结节为正例(positive,P),良性肺结节为负例(negative,N)。其中预测类别与实际类别都为恶性的为真正例(True positive,TP);预测类别与实际类别都为良性的为真负例(True negative,TN);预测类别为正例,实际类别为负例的为假正例(False positive);预测类别为负例,实际类别为正例的为假负例(False negative,FN)。

准确率(Accuracy)

ACC=(TP+TN)/(TP+FP+TN+FN)

(7)

特异性(Specificity )

SPE=TP/(TP+FN)

(8)

敏感性(Sensitivity)

SEN=TN/(FP+TN)

(9)

AUC值(Area Under Curve): AUC值为ROC曲线下面积,AUC值越高表示模型分类效果越好,反之模型分类效果越差。

4.2 GC-DenseNet参数设置与实验

影响GC-DenseNet模型性能的参数有分组卷积组数G、稠密块数量N、稠密块层数M以及网络增长率K。通过对照肺结节良恶性分类实验为本文提出的模型选取最优的参数进行训练。

focal loss损失函数的固定损失函数参数样本损失权重α=0.70,样本的权重损失率γ=2。同时为了提高模型泛化能力加入dropout操作,在每一个Conv进行,概率设置为0.3。论文采取十折交叉验证,将肺结节数据集等分为10个子集,每次试验选取一个子集作为测试集,其余9个子集作为训练集。同时为了保证训练效果会选取合适的参数优化算法。本实验采取Adamax作为作为参数优化算法。在训练过程中。采用动态学习率的方式,学习率初始化设置为0.2,选取平衡参数设置为0.001,动量和权重衰减设置为0.9和0.005。batch大小设置为50。训练中加入L2范数缓解过拟合问题。

分组卷积组数的合理选择可以平衡参数数量和模型效果。为了判定在稠密块中不同的分组卷积组数G对GC-DenseNet分类效果的影响,选取组数G分别为2,3,4来进行实验,如表1对比结果所示,可以看出进行分组之后参数量得到显著的降低,同时经过模型对比,可以看出GC-DenseNet准确率和明显高于Densenet。权衡参数量与模型准确率之间的关系,可以看出。在分组数G=3时,模型分类效果最好。

表1 GC-DenseNet在不同组数分组卷积下表现

以下参数选择都按照GC-DenseNet网络参数G=3作为对照。

稠密块数量控制着整个模型的复杂度,在不同稠密块数量下GC-DenseNet网络分类表现如表2,稠密块对照组数量设置为3,4,5,可以看出在稠密块数量N为4的时候,在参数量适当的情况下,模型的AUC值以及准确率最高。

表2 GC-DenseNet不同稠密块数目表现

根据上表,在稠密块数量固定为4,固定前三个稠密块层数为2,4,4,第四个稠密块层数M在2,4,8选择进行对照实验,通过表2可以看出,在稠密块层数设置为2,4,4,8时GC-DenseNet肺结节分类的准确率与AUC值最大。

表3 GC-DenseNet不同稠密块层数参数对比

网络增长率代表着GC-DenseNet稠密块中特征图个数,控制每个稠密块输出的参数数量,避免过拟合,网络增长率K设定对照组为8,12,14,16,如表4所示在网络增长率为16时,GC-DenseNet(G=3)模型的准确率与AUC值最高,模型分类效果最好。

表4 GC-DenseNet不同网络增长率参数对比

因此对于本文提出的GC-DenseNet模型,在分组卷积组数G=3,稠密块数量N=4,稠密块层数M={2,4,4,8},网络增长率为16时,模型的分类性能和泛化能力最好。

4.3 实验结果与分析

对比经过分组卷积后模型的效果。如表5所示为GC-DenseNet与DenseNet对比结果,稠密块数量都为4,稠密块层数为2,4,4,4,增长率为16。可以看出GC-DenseNet在分组卷积数G为2时分类精度比DenseNet提高了3.9%,在G为3时提高了7.1%。可以证明改进的DenseNet相比DenseNet,在参数量显著减少的情况下,准确率得到了提高。

表5 DenseNet与GC-DenseNet对比

本文方法与AlexNet、rd-CNN、MC-CNN、ResNet在第3部分中处理过的肺结节数据集中进行良恶性分类实验并做出对比,最终的性能比较如表5所示,可以看出本文提出的方法在分组卷积层数为3时准确率、特异性、敏感性和AUC值都显著高于其它方法达到了92.4%。可以看出,不同的方法对肺结节良恶性分类有一定的差异性,GC-DenseNet网络分类性能最好。

表6 不同方法肺结节分类性能比较

图5 GC-DenseNet模型分类结果可视化

图5为随机抽取部分仿真结果图像,可以看出,模型可以保持在90%以上的准确率对肺结节良恶性进行分类检测。可以直观的反应出GC-DenseNet模型具有优秀的分类性能。

如图6所示为在对比方法下模拟肺结节良恶性分类性能柱状图,可以看出,在本文提出的算法在所有指标都高于其它方法,同时根据图示可以证明根据4.2节设置在分组卷积分组数为3时,整个模型的分类性能最好。

图6 肺结节良恶性分类模型性能柱状图

5 结束语

为了提高肺结节检测准确率和模型性能,本文提岀了一种基于改进DenseNet网络的肺结节检测方法。通过分组卷积方法对DenseNet网络进行改进,改进后的模型减少了网络冗余参数数量,减缓梯度消失问题,增加了网络的深度,提高肺结节分类准确率。为了证明方法的有效性,与现有的利用神经网络肺结节检测模型进行了对比实验。实验证明,本文提出的基于改进的DenseNet网络相比已有的模型有效的减少了模型参数,提高了肺结节检测准确率,准确率达到了92.4%。本文提出的研究方法,可以作为辅助工具为临床医学对肺结节检测做出有效帮助。

猜你喜欢

恶性卷积结节
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
体检发现的结节,离癌症有多远?
查出肺结节,先别慌
探讨促甲状腺激素与甲状腺球蛋白联合检测在甲状腺良恶性结节诊断中的效果
探讨超声检查在甲状腺肿块良恶性鉴别中的诊断价值
了解这些,自己读懂甲状腺B超报告
基于深度卷积网络与空洞卷积融合的人群计数
甲状腺结节能 自己消失吗?
神回复