刘长征,相文波
(哈尔滨理工大学 计算机科学与技术学院, 哈尔滨 150080)
基于改进卷积神经网络的肺炎影像判别
刘长征,相文波
(哈尔滨理工大学 计算机科学与技术学院, 哈尔滨 150080)
目前肺炎类型判别主要依靠医生的经验,但一些肺炎的CT影像极为近似,即使有经验的医生,也容易判别错误,造成误诊;为此提出卷积神经网络分类算法,该算法由3个卷积层、3个亚采样层及1个完全连接层组成,并且对卷积层进行了特殊结构处理,由反向传播算法调整网络参数,并对反向传播过程提出了改进;临床实验证明,该方案较现在普遍研究的分类算法,如adaboost算法和svm算法具有更高的识别率和准确度,并且改进的卷积神经网络防止了训练数据时过拟合现象的产生。
肺炎判别; CT影像; 深度学习; 细微特征差异
目前肺炎按照病理形态学分类,可以将肺炎分成大叶肺炎、支气管肺炎、间质肺炎及毛细支气管炎等。这些肺炎CT图像十分相似,医生根据肺部纹理,斑片状影,阴影密度,炎症部位进行判断。由于经验不足,误诊情况时有发生。
为此国内外做了大量研究。文献[4]提出了基于图像处理技术的方法,提取肺炎纹理LBP特征作为识别特征,用bp神经网络识别,但是识别率太低,bp神经网络结构的选择至今尚无一种统一而完整的理论指导,一般只能由经验选定。网络结构选择过大,训练中效率不高,可能出现过拟合现象,造成网络性能低,容错性下降,若选择过小,则又会造成网络不收敛。文献[5]提出了采用方向梯度直方图特征(Histogram of Oriented Gradient, HOG),加朴素贝叶斯方法对肺炎类型识别的方法。通过计算和统计图像局部区域的梯度方向直方图来构成特征,用朴素贝叶斯分类,但hog特征并不能很好地表示斑片状影,阴影密度,炎症部位,因而识别率低。 文献[6]提出采用adaboost算法对肺炎识别判断,文献[13]提出采用svm算法对肺炎纹理识别判断,虽然识别率有所提高,但准确率依然满足不了实际应用,主要在于人为提取的特征不一定是最好识别特征,除了纹理特征还有阴影密度等等。
深度学习技术是现代人工智能领域的一个新的研究方向,它通过模仿人脑学习过程构建学习模型。深度学习的概念由Hinton等人于2006年提出,其本质上是通过大量有标签的训练数据,学习输入到输出的一种映射关系,而不需要精确的数学表达式。卷积神经网络是深度学习技术的一种模型,该模型通过局域感受野、权值共享和次抽样处理,而具有位移、缩放和扭曲不变性。局域感受野可以提起初级的视觉特征,权值共享可以减少神经元之间的参数,减少训练学习的时间,次抽样减小了特征分辨率,实现了扭曲不变性。卷积神经网络的特征提取是通过训练数据自主学习,所以在使用卷积神经网络时,避免了显示提取特征不理想的缺陷,而隐式地从训练数据中进行学习。
本文提出基于改进卷积神经网络的肺炎分类算法。该算法可以通过大量不同肺炎类型CT图像自主学习出对应肺炎的特征,避免了人为选取特征的缺陷,提高了肺炎分类的准确率。
1.1 CNN结构设计
识别肺炎类型的CNN网络结构设计如图1所示,共有七层,C1层是一个卷积层,由12个60*60像素大小的特征图(Feature Map)构成。特征图中的每一个神经元与输入层中5*5的邻域相连,用5*5大小的卷积核去遍历卷积64*64像素大小图片中的每一个5*5大小的单元,最终获得(64-5+1)*(64-5+1)=60*60大小的一个特征图。
图1 CNN结构
同一个特征图使用的是同一个卷积核。用12种不同的卷积核就得到了12种不同的特征图。训练开始时,这12个卷积核是随机赋予的初始值,在后面训练过程中,不断调整,最终得到能提取出特征的卷积核模板。卷积神经网络提取特征的实质是训练出能提取特征的卷积核。S1层是一个下采样层,它是采用图像局部相关性的原理,对图像进行子抽样,可以减少数据的处理量,加快收敛时间同时保留有用信息,它获得12个30*30的特征图。特征图中的每个单元与C1中相对应特征图的2*2邻域相连接。S1层每个单元的4个输入相加,乘以一个权值,再加上一个偏置。结果通过sigmoid函数计算。
y=Sigmoid[w*sum(xi)+b]
(1)
其中:权值w和偏置b控制着sigmoid函数的非线性程度。如果权值比较小,那么运算近似于线性运算,亚采样相当于模糊图像。如果权值比较大,亚采样可以根据偏置的大小看成是有噪声的“或”运算或者有噪声的“与”运算。每个单元的2*2相邻区域并不相互重叠,因此S2中的每个特征图的大小都是C1中特征图大小的1/4(行和列各1/2)。C2层也是一个卷积层,它同样通过5x5大小的卷积核去卷积S2层,此时有24种不同的特征图。C2中的每个特征图是通过连接到S2中的几个特征图的不同组合或者全部的12个特征图。原因有两点:1)不完全的连接机制将连接的数量保持在合理的范围内;2)其破坏了网络的对称性。由于不同的特征图来自不同的输入,所以迫使他们抽取的是不同的特征(希望是互补的)。余下的卷积层及子采样层与前面的层是一样的,只是随着深度的加深,提取的特征更加抽象,也更具有表达能力。输出层是与S3的一个全连接层。输出层共有两个神经元,可用二进制,代表4种肺炎类型,S3有24*5*5=600个神经元,则输出层共有600*2=1200个链接。
1.2 卷积层结构改进
为了避免卷积神经网络在训练时产生过拟合现象,在卷积层中,加入了如两个特殊标志符x1、x2,其中x1记录经过卷积后,该数据的波动范围,x2记录该数据是否被激活。如果x1在设置的特定阈值范围内波动范围小于该值,该数据下次迭代训练时停止更新,这样可以防止过度拟合。当x2处于激活状态是,该神经元数据下次进行正常卷积,若果处于非激活状态则不进行卷积。这样在训练总是一部分神经元参与训练。对于每次输入到网络中的样本,其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时共享隐含节点的权值。这样不同的样本就对应不同的模型,这样就可以很好地防止了过拟合现象的产生。图2和图3是示意图。图2表示标准神经元训练时的情况,图3表示改进神经元训练时的情况。其中虚线表示非激活神经元链接。
图2 标准神经网络训练时情况
图3 改进后神经网络训练时情况
1.3 卷积神经网络训练原理
卷积神经网络的训练过程就是不断调整神经元与神经元之间权值的过程,即卷积核数据的调整。当实际输出与标准输出不同时,计算误差,采用反向传播算法(back propagation,BP)来调整参数,实现权值更新,最终完成学习任务。网络更新权值[8]公式为:
w(t+1)=w(t)+η*δ(t)*x(t)
(2)
其中:x(t)为神经元的输出,δ(t)表示该神经元的误差项,η表示学习率。
卷积神经网络通过卷积层和亚采样层的相互配合来学习原始图像的特征。卷积神经网络中卷积层的网络结构采用卷积的离散型[9],表示为:
(3)
其中:Mβ代表输入特征的一个选择;k代表卷积核;r代表网络的层数;b代表每个输出特征映射添加的偏置,对于特定的输出映射,输入的特征映射可以应用不同的卷积核卷积得到;f代表卷积层神经元所用的激活函数,采用的sigmoid函数,sigmoid函数把[-∞,+∞] 映射到[0,1]。亚采样层的作用是对输入的特征映射进行采样,采样后,输入特征与输出的特征数目不会改变,但是输出特征的大小与输入特征相比会大幅减少。亚采样层[12]表示为:
(4)
其中:sub(·)表示亚采样所用的函数,B和b都是输出特征的偏置。f的含义与卷积层的类似,表示亚采样层神经元的激活函数。
2.1 实验设置
实验是在Matlab2013a环境下完成的,操作系统为Windows7,Dual-CoreCPU,主频2.94GHz,内存4GB。实验所用CT图像均取自哈尔滨医大二院,共选取了2000张肺炎CT图像,其中选取大叶肺炎、支气管肺炎、间质肺炎及毛细支气管炎CT图像各500张。
2.2 图像预处理
卷积神经网络可以直接从图像中提取特征,但是每张影像的人体肺部位置、肺部大小有一定差别,如果在整幅图中直接进行测试会影响结果。因此需要一些图像预处理操作,采用图像阈值分割技术,由于肺叶处像素值低于其他部位,因此采用阈值分割技术只提取出两个肺叶部位的图像。具体流程:首先复制图像,根据阈值对图像进行分割,因肺部有白色纹理,分割出的肺部有空洞,这时采取闭运算操作来弥补空洞,然后进行轮廓提取,此时的轮廓位置就是原图的轮廓位置。提取原图的轮廓内像素,按行依次存放到二维数组,因提取出的肺部数据大小不一,同时为了减少卷积神经训练运算量和确定卷积神经网络输入层神经元数目,将提取后的肺叶图像归一化为64*64像素大小,在减少运算量的同时,基本特征也保留了下来。提取效过程如图4,左图为原图,中间为处理中间结果,右图为原图中提取的轮廓。
图4 预处理过程图
2.3 训练过程
训练神经网络设置的迭代次数为1000,误差为0.05.到误差小于0.05时即使迭代次数不到1000次,也停止训练。
在训练卷积神经网络时,随机初始化卷积层中x2值,使其一半处于激活状态,一半处于非激活状态,将出现激活状态的神经元经行卷积,不出现激活状态的神经元不予处理,保持原有权值。同时还检测卷积层中x1的数值,当在80次训练中其波动范围小于0.01,则让x2的数值永远改为非激活状态。代表着这个数值已经训练完毕,下次不用再重复计算,这样可以提高收敛速度,同时避免了再次精确逼近“假理想值”的情况,避免过拟合现象。
2.4 实验结果
实验采用简单的交叉验证,首选随机地将肺炎CT图像分为两个部分,一部分做为训练集,另一部分作为测试集。训练集中随机的抽取了大叶肺炎、支气管肺炎、间质肺炎及毛细支气管炎类型的CT图像各400。剩下的数据集作为测试组。测试结果如图5所示。
图5 测试结果
为了能详细说明不同肺炎的识别的准确率,统计如表1所示。
表1 统计结果
从实验结果中可以看出大叶性肺炎和间质性肺炎识别率高达90%以上,支气管肺炎和毛细支气管肺炎识别率稍偏低一些,主要是在分类时有一部分支气管肺炎识别成毛细支气管肺炎导致的,由于毛细支气管的炎性往往可累及肺泡,肺泡壁和肺间质,导致毛细支气管炎并发支气管肺炎。训练样本中可能有一些毛细支气管炎并发支气管肺炎,导致这两种肺炎类型识别率偏低。
2.4.1 本方法与其他识别算法对比
支持向量机(support vector machine,SVM)工具箱选择林智仁教授开发的libsvm 3.17。实验中SVM选择高斯核函数,核函数宽度为5,惩罚系数为1 000。Ababoost算法采用Opencv 2.4.10版本中的库函数。其中参数设置如下:训练层数设置为20,分裂子节点数目,选取默认值 2。试验同样采用CNN测试的样本,大叶性肺炎、支气管肺炎、间质性肺炎、毛细支气管炎各100张。 实验结果如表2所示,可知:卷积神经网络的分类效果明显优于其他两个算法,训练时间虽然比其他两种算法用时长,但测试时间基本相近。
表2 不同识别方法实验结果
卷积神经网络准确率高于Adaboost算法和SVM算法,主要原因是卷积神经网络不需要人为的提取特征,它自主学习不同类别间的差异,而Adaboost算法和SVM算法都是通过提取肺炎的LBP特征,用于分类识别,而人为提取的特征往往有局限性,不能很完美的多方面表现出不同类别之间的本质特征。卷积神经网络训练时间长的主要原因是因为神经元数量多,且需要多次迭代调整权值,计算量大。但训练完成以后,调整好的权值被保存下来,在测试的时候直接读取权值,因此测试时间就少了。
2.4.2 本方法与deepLearnToolbox中的CNN算法对比
为了测试改进后的算法准确率和预防过拟合现象效果,分别对不同种类肺炎各100张、150张、200张、250张、300张、350张、400张进行了测试,deepLearnToolbox CNN算法测试结果用蓝线表示,改进后的CNN算法测试结果用绿线表示,如图6所示。
图6 准确率测试结果
从结果图中可以看出,改进后的CNN算法,训练时成功的避免了过拟合现象且准确率基本和标准算法一致。
这是由于在训练神经网络时,隐含节点都是以随机概率出现,这样就不能保证训练时都使用同样的隐含节点,这样权值的更新不再依赖于有固定关系的隐含节点,一半激活,一半非激活,阻止了某些特征仅仅在其它特定特征下才有效果的情况。在每次迭代过程中,由于每次随机忽略的隐层节点都不同,这样每次得到的训练网络都是不同的,每次训练都可以单做一个“新”的模型,随着训练的进行,大部分半数网络都可以给出正确的分类结果,少数服从多数这就避免了一些特例的产生。这样就很好地避免了过拟合现象的发生。
但是改进后的方案会带来模型的训练开销,由于迭代时总有一些神经元没有训练,这样导致需要多次迭代,导致训练时间偏长,这可以作为一个继续解决的技术问题。实验测试效果如图7所示。CNN算法测试结果用蓝线表示,改进后的CNN算法测试结果用绿线表示。
图7 训练时长测试结果
为了帮助医生,减少肺炎类型误诊的情况,设计了计算机辅助诊断的方法,并优化了卷积神经网络结构和训练方法。通过实验证明,改进后的算法相比其他算法识别率要高,与标准CNN算法相比,成功的防止了过拟合现象的产生,该方法具有一定的可行性,可以成为医生辅助诊断肺炎类型的工具。但是改进后训练时间偏长,可以作为以后的一个研究方向。
[1] Ripley B D. Pattern recognition and neural networks[M].Posts and Telecom Press, 2012.
[2] Warnick K F.Numerical methods for engineering:an introduction using MATLAB and computational electromagnetic[M].Raleigh, NC: SciTech Pub. ,2013:20-33.
[3] Neural Network Toolbox[Z]. Mathworks,2007:1-13.
[4] 张 亮,王齐凯. 基于bp神经网络的肺炎分类[J]. 华南理工大学学报(自然科学版),2015,42(1): 72-76.
[5] 李庆华,王 芳. 基于朴素贝叶斯的肺炎分类方法研究[J]. 科技大学学报(自然科学版),2014,12(1): 32-36.
[6] 赵 宏,杨绍强. 基于svm的肺炎分类识别研究[J]. 系统仿真学报,2014,22(3):638-641.
[7] 陈先昌.基于卷积神经网络的深度学习算法与应用研究[D].杭州:浙江工商大学,2013.
[8] 韩力群.人工神经网络理论、设计及应用[J].北京:化学工业出版社.2001.
[9] 许 可.卷积神经网络在图像识别上的应用研究[D].杭州:浙江大学,2012.
[10] Lawrence S, Giles CL, Tsoi AC, et al. Face recognition: A convolutional neural network approach[J]. IEEE Trans. on NeuralNetworks, 2015, 8(1): 98-113.
[11] Mate S, Akira Y, Munetaka Y, Jun O. Pedestrian detection with convolutional neural networks[A]. IEEE IntelligentVehicles Symposium Proceedings[C]. USA: IEEE, 2014: 224-229.
[12] Kavukcuoglu K,Sermanet P,Boureau Y,et al.Learning convolutional feature hierachies for visual recognition[A].In:Advances in Neural Information Processing Systems[C].2013.
[13] Ji S,Xu W,Yang M,et al.3D convolutional neural networks for human actionrecognition[A]. Proceedings of the 28th International Conference on Machine Learning[C]. 2010:495.502.
[14] 周永腾,张启明. 基于adaboost算法的肺炎识别研究[D]. 计算机应用研究,2013,42(1): 72-76.
Recognition of Pneumonia Type Based on Improved Convolution Neural Network
Liu Changzheng, Xiang Wenbo
(School of Computer Science and Technology, Harbin University of Science and Technology, Harbin 150080, China)
Currently, the diagnosis of pneumonia type mainly depends on the experience of doctors. But some of the CT images of pneumonia were very similar. It is easy to misdiagnose, even experienced doctors. Therefore, a classification algorithm based on convolution neural network is proposed, which consisted of three convolution layers,three subsampling layers and one fully connected layer , and also a special structural processing is proceeded on the convolution layer. The network parameters are regulated through back propagation algorithm, which can also improve the back propagation process. The clinical experimental results show that the algorithm can accurately classify CT images of different pneumonia than general research recognition algorithm,such as Adaboost and SVM algorithms, and the revised convolution neural network can prevent over-fitting phenomena in training data.
recognition of pneumonia type; CT image; deep learning; subtle differences
2016-11-06;
2016-11-28。
国家自然基金项目(61403109);黑龙江省自然科学基金(F201240);黑龙江省教育厅科技研究项目(12531571)。
刘长征(1969-),男,博士,教授,主要从事虚拟现实技术方向的研究。
1671-4598(2017)04-0185-04
10.16526/j.cnki.11-4762/tp.2017.04.051
TP242.6+2
A