糖尿病性视网膜病变(Diabetic Retinopathy, DR)是目前严重的致盲眼病。中国现在有将近1亿的糖尿病患者,此中视网膜病变的患病率为65.2%。DR的潜伏期长短不一,短则3~5年,长可达15年,并且潜伏期越长,发病率越高。据统计,潜伏期超过15年的病患发病率可高达50%[1]。早发现、早诊断、早治疗对于抑制病情的发展至关重要,因此,对于视网膜图像的早期筛选工作成为关注的重点,对于视网膜图像的分析也成为目前研究的热点。
传统的视网膜图像处理方法包括4个阶段:预处理、解剖结构分析、病变检测和病变诊断。视网膜图像处理的每个阶段都需要不止一种图像处理技术,而且视网膜图像结构复杂,容易与各种病变交叉影响,再加上复杂的背景变化影响(图 1) ,使得对视网膜图像的处理面临各种难题。不可避免的外界因素使得处理视网膜图像的技术复杂、泛化性差,对先验知识也具有很强的依赖性。在这个过程中,任何一个技术环节出错或者效果不理想,都将导致后续的工作无法进行或者图像分类检测结果出现很大的误差。在糖尿病发病率比较高的发达国家,已经有不少科研单位从事糖尿病视网膜病变筛选的研究[2],而我国对这方面的研究少之又少,尚还缺少一个完整的针对视网膜图像分类诊断的系统。
本文采用基于深度学习的方法实现对视网膜图像自动分类,只需要作简单的图像预处理,然后将预处理得到的图像作为网络的输入,通过本文提出的CompactNet网络结构自动训练,将训练好的模型用于图像自动分类。与传统的处理方法相比,深度学习只是对原始图片集作了简单的预处理,不需要借助任何先验信息的情况下就可以达到高准确率。
1 深度学习简介 1.1 深度学习的发展及应用深度学习的概念起源于人工神经网络,是模拟大脑的构架并辅以一定的学习算法,从而使计算机的工作方式尽可能地接近人类的工作方式。深度学习与浅层学习最大的区别在于模型结构的深度[3]。虽然浅层学习方法在某些应用中也获得了一定的成就,但是仍然存在一大类问题不能使用浅层结构表示,浅层学习仍然具有很大的局限性[4]。深度学习主要模仿神经网络的层次结构,低层次表示细节,高层次表示抽象的数据结构特征,通过逐层抽象、高度挖掘数据的本质信息,从而达到学习的目的。该特征学习的过程完全自动,无需人工干预。Arel等[5]介绍了主流的深度学习方法以及近几年来的研究方向,突出了深度学习方法的优势。
深度神经网络自流行以来,已经在语音识别[6]、图像识别[7]和自然语言处理领域[8]取得了巨大的成功。LeCun等[9]最早于1998年开始专注卷积神经网络(Convolutional Neural Network, CNN)的研究,提出了用于识别手写体的LeNet模型。2006年之后,深度学习以一发不可收之势霸占了人工智能领域,取得了巨大的成功。2011年,微软研究院和Google的语音识别研究人员先后采用深度神经网络技术对语音进行处理,极大降低了语音识别的错误率,这在语音识别领域是突破性进展。深度神经网络技术在图像识别领域也取得了惊人的成果,涌现出了很多经典的网络结构。在ImageNet国际计算机视觉挑战赛(ILSVRC)中拔得头筹的AlexNet(2012年冠军)[10]将错误率降低了9%。GoogleNet(ILSVRC2014冠军)[11]和VGG(ILSVRC2014年亚军)[12]针对网络的深度取得了突破性的进展。在ILSVRC2015中,He等[13]将神经网络的系统实现到了152层,并且还使用一个全新的“残差学习”原则来指导神经网络的设计,很好地解决了深层网络层级与准确度之间的矛盾。
1.2 卷积神经网络卷积神经网络是人工神经网络的一种,是一种多层的神经网络,最早于20世纪60年代由Hubel等[14]提出,已经成为当前语音分析和图像识别领域的研究热点。
CNN的基本结构包括两种特殊的神经元层:特征映射层和特征提取层。特征映射层(卷积层)的每个神经元的输入和前一层的局部相连,并提取该局部特征;特征提取层(降采样层、池化层、抽样层)用来求局部敏感性和二次特征提取。卷积神经网络的卷积层和抽样层交替出现,每个卷积层后都跟着二次提取的池化层,这种两次特征提取使网络在识别时对输入样本有较高的特征学习能力[15]。卷积层的主要任务是特征映射,从不同的角度来选择前一层特征图的各角度特征使其具有位移、旋转不变性。由于CNN的权值共享特性,从一个平面到下一个平面的映射可以看作是卷积运算,计算形式如式(1) 所示:
$\mathit{\boldsymbol{X}}_j^l = f\left( {\sum\limits_{i \in {\mathit{\boldsymbol{M}}_j}} {\mathit{\boldsymbol{X}}_i^{l - 1}*\mathit{\boldsymbol{Kernel}}_{ij}^l + \mathit{\boldsymbol{b}}_j^l} } \right)$ | (1) |
其中:l表示网络第几层,Kernel为卷积核,Mj为输入特征图的一种组合选择,每一层输出特征图都会有一个唯一的偏置b。值得说明的是,输出特征图所对应的输入特征图可以是一个或者若干个,当有若干个输入特征时,每个输入特征所对应的卷积核是不一样的。池化层的特征是在把上一层的相似特征合并起来,进行二次特征提取,降低隐含层的空间分辨率,池化层作用于图像中不重合的区域,神经元X的计算公式为:
$\mathit{\boldsymbol{X}}_j^l = f\left( { \mathit{\boldsymbol{\beta }}_j^l \times down\left( {\mathit{\boldsymbol{X}}_j^{l - 1}} \right) + \mathit{\boldsymbol{b}}_j^l} \right)$ | (2) |
其中,down(·)表示一个下采样函数,池化方法根据计算方法的不同有平均池化和最大池化,平均池化是对输入图像的n*n区域的所有像素求和取平均,最大池化是将输入图像的n*n区域中的最大值输出。池化过后的输出特征图在两个维度上都缩小到了原来的1/n,每个输出特征都对应一个唯一的乘性偏置β和加性偏置b。
卷积神经网络是语音分析、图像识别等领域最主要的深度学习方法,其优势在于:1) 特征提取和模式分类同时进行,并同时在训练中产生;2) 权值共享可以减少网络中参数爆炸的问题,使神经网络结构变得更加简单,适应性更强。
2 本文方法 2.1 算法流程进行视网膜图像类型识别时,获取到的图像由于噪声等的原因不能直接用于模型的训练,首先需要排除背景和噪声的干扰,紧接着对视网膜图像进行一定的预处理,随后将预处理之后的视网膜图像传入到神经网络中进行模型的训练,最后进行图像的分类。如图 2所示,算法主要包括4个步骤。
1) 将获取到的图像周围的黑边框去掉,对图像进行简单的筛选,剔除掉含有严重噪声的图像。
2) 将图像作局部归一化,使所有图像的色调统一,去掉由光线问题而产生的噪声。
3) 所获得的视网膜图像样本量不足,并且存在严重的数据不平衡现象,为了解决这个问题,本文采用旋转、平移、拉伸等方法进行数据扩增。
4) 模型训练图像识别,借鉴AlexNet网络结构,设计符合视网膜图像特点的网络结构,采用前馈式神经网络对图像进行分类。
算法流程图中的去除背景、数据归一化和数据扩增可以统称为数据预处理的过程,这样就将整个算法流程分为两部分:数据预处理和训练模型。
2.2 图像预处理 2.2.1 数据集简介本文数据集来源于数据建模和数据分析竞赛平台(Kaggle)中的比赛Diabetic Retinopathy Detection。该数据集中的视网膜数据图像都是高分辨率RGB图像,其分辨率约为3500×3000。根据视网膜病变程度将图像分为5类,如图 3所示。第0类对应的是没有病变的健康图像,第1类对应的是有轻微病变的,以此类推,第4类则是非常严重的病变,具体的数据集分布如表 1所示,从表中可明显看出,实验数据集极度不平衡,第0类数据是第4类数据的将近36倍之多。
由于图像采集时镜头光照以及其他因素,每类图像中都会存在噪声图像,如图 4所示。
这些数据中,每一类都会存在噪声图像,而且噪声的种类很多。首先需要对图像的噪声作一个简单分类,图中的每一列代表一类噪声,第1列和第2列是由镜头引起的噪声,第3列是由光照引起的噪声,第4列是完全没有意义的图像,图像中没有任何纹理信息,也无法辨认具体属于什么类型的病变,第5列是光线太暗的原因,这类噪声图像,图像中是有一定信息的,但是由于光线太暗,肉眼难以辨认。图 4只是列出了一部分典型的噪声图像。
数据预处理需要集中解决以下几个问题:每幅图像都包含黑色边框等无意义的信息并且每类图像都会包含不同的噪声,图像之间的明暗度有很大的差异,数据集种类分布严重不均匀。
2.2.2 去除背景和严重噪声图像作图像预处理时,首先处理图像的边框信息和被噪声完全污染的图像。对于所有数据集的图像,需要把图像的黑边框全部都切除掉(图 5(a));然后把被噪声完全污染的毫无意义的图像删除掉(图 5(b))。由于第3类和第4类图像偏暗,并且数据量非常小,因此本文针对第3类图像和第4类图像进行了白平衡(图 5(c))和直方图均衡化(图 5(d)),这样在一定程度上改善了图像偏暗的现象,同时还扩大了第3类数据集和第4类数据集的样本数量。
数据归一化的目的是将不同亮度、不同明暗度的图像都归一化到同一个范围中,本文采用的是减去局部均值的方法,具体的计算公式如下所示:
$im{{g}_{\text{out}}}=img*\alpha +im{{g}_{\text{gaussian}}}*\beta +\gamma $ | (3) |
其中α=4,β=-4,γ=128,img为原图像,imggaussian为经过高斯滤波器滤波过的图像。经过这样处理后得到的图像如图 6所示。不同色调、不同明暗度的图像,经过局部归一化之后都会得到统一的色调,这样也就是对所有的数据作了统一的归一化处理,在训练模型时对提高分类准确度有很大的帮助。
在使用深度学习作图像分类时,由于深度学习需要大量的数据,而现实中并没有足够数量的样本,因此必不可少的步骤是数据扩增。对不同的样本采用随机拉伸、旋转等方法,产生一定数目的子图像,这些图像都是由原图像产生的,也存在一定的可分类性。与此同时,数据扩增技术还在一定程度上解决了数据集不平衡问题(表 1所示)。对样本数目比较少的类别采用数据扩增技术,向数目多的类别样本补齐。图 7是数据扩充之后的图像示例,图 7(a)为原图像,图 7(b)则是由原图像经过移位、旋转之后得到的图像(M=8) 。在数据扩增时,随机生成M个θ角度(0<θ<360°),图像旋转M个角度,使得该类样本总数N×M介于10000~15000104,这样同时解决了样本不平衡和样本量不足的问题。
在图像处理领域最经典的模型是AlexNet网络结构,本文便是模仿AlexNet网络结构框架,根据视网膜图像特性,遵循特征图分辨率递减、输出特征图数目递增原则,精简了AlexNet网络,设计了自己的网络结构(CompactNet),如图 8所示,为了简洁直观,图中只表示了卷积层、池化层和全连接层。图像经过简单的预处理后输入到网络中,CompactNet主要由卷积层(Conv)和池化层(Pool)交替叠加而成,Pool4之后是全连接层(fc)。卷积层和池化层之间通过局部连接和权值共享的方式建立连接,参数量少,全连接层参数量占据了总参数量的80%,为保证数据的有效性并且防止数据过拟合,在全连接层后添加了dropout层。网络的每个卷积层和全连接层后面都有一个Relu层以保证神经网络的非线性。网络的最后使用Softmax对全连接层输出特征进行分类,得到分类结果。
由于反向传播算法(BP)的梯度弥散问题,训练网络的时候,前几层的参数很难得到有效的训练。所以在设计网络的时候将AlexNet网络的前两层参数直接灌输到CompactNet的网络中,即图 8中前两层卷积层对应的卷积层参数,这两层的卷积层结构与AlexNet网络的前两层结构相同,后两层卷积层和全连接层的参数由训练得到。与AlexNet网络相比,CompactNet精简了卷积层的数量以及全连接层的神经元数量,极大减少了网络的参数量。
3 实验结果与分析 3.1 实验设置本文实验是基于深度学习框架Caffe,运行在GPU工作站上。使用的测试平台:处理器为Intel core i7,内存为16GB,显卡为NVidia GTX 980 TI,GPU内存为6GB。由于GPU内存不大,所以深层次的网络无法在现有的机器中运行,这也是本实验采用AlexNet网络作为参考网络的原因所在。值得说明的是,在做数据预处理之前,为了避免训练集和测试集有交叉,实验开始之前先将所获得到的数据分成两部分,从每一类图像中随机抽取约有100幅图片作为测试集(为了实验过程中便于观察,每一类样本数量不完全相同),剩下的图像作为训练集。
为了对比同一网络结构不同训练方法对实验结果的影响和不同的网络结构对分类结果的影响,设置了两组对比实验。为了避免数据不一致带来的实验结果误差,本工作中相关的实验设置所使用的网络都使用相同的数据格式,所有网络的输入都为512×512,之所以选择该尺寸是考虑到图像原始尺寸在3500×3000左右,如果原始输入尺寸过小会丢掉很多图像原始信息。
由于该数据集是在2015年2月份公布,数据集公示时间较短,并没有应用于该数据集的传统图像处理方法来作对比,因此本文设计实验时采用的是自身对比的方式。
实验一 为了对比不同的参数初始值对实验结果的影响,对CompactNet网络使用了两种不同的训练方式:1) 直接使用视网膜图像训练CompactNet网络,简称ModelT;2) 将AlexNet网络的前两层卷积层参数注入到CompactNet网路中,在此基础上训练其他卷积层和全链接层参数,简称ModelF。
实验二 为了对比不同网络对实验结果的影响,实验对三种网络结构进行训练:1) 使用LeNet网络对视网膜图像进行训练,LeNet网络只有3个卷积层,参数量少,属于非常简单的网络代表;2) 微调AlexNet网络,AlexNet网络有5个卷积层和2个全连接层,属于复杂网络的代表;3) 将AlexNet网络前两层参数灌入到CompactNet网络中,然后进行网络的训练。
实验三 2.2节图像预处理中的数据归一化和数据扩增是本文的主要贡献点之一,为了验证二者的有效性和必要性,本文设计实验使得原始图像数据只进行简单的筛选之后便输入到深度网络中。
3.2 评价标准由于本实验是视网膜图像病变程度的一个预测问题,因此相邻两类图像之间并没有一个明确的界限,因此在评价实验结果的时候,不能直接以分类准确率作为该实验的结果。本文使用的评价标准如式(4) 所示:
$\kappa = 1{\rm{ - }}\sum\limits_{i,j} {{\mathit{\boldsymbol{\omega }}_{i,j}}{\mathit{\boldsymbol{O}}_{i,j}}} /\sum\limits_{i,j} {{\mathit{\boldsymbol{\omega }}_{i,j}}{\mathit{\boldsymbol{E}}_{i,j}}} $ | (4) |
其中:
合理的参数初始化方法对网络的训练结果以及收敛速度有着至关重要的影响,实验一的ModelT和ModelF对视网膜图像分类结果混淆矩阵如图 9所示。
图 9(a)和图 9(b)分别对应ModelT、ModelF的实验结果。两个模型的分类结果大部分都分布在混淆矩阵的对角线区域,说明CompactNet网络模型具有一定的分类能力。对比两组实验结果,ModelF的分类结果要明显优于ModelT,ModelT和ModelF的κ指标分别为:0.5069,0.8710,分类准确率为:0.39和0.68。实验结果表明网络的前几层使用AlexNet模型已经训练好的参数分类结果会好很多,原因在于网络的前若干层代表了图像的基本信息,包括:边缘、角点、色彩等信息,对模型的分类至关重要,而后面几层的参数则是由训练得出。两个模型的第一层参数可视化结果如图 10所示,训练网络时,前几层网络的参数并没有得到有效的训练,还是一些随机值(图 10(a)),ModelF对应的第一层参数如图 10(b)所示。这是因为训练网络的时候,由于反向传播算法的梯度弥散的问题,网络前几层的参数并没有得到有效的训练。AlexNet网络的训练使用了大量的数据集,相当于人类大脑的先天性学习,将前2层参数灌入到CompactNet网络中,将先天性的学习传给CompactNet网络,然后在此基础上对视网膜图像作后面网络层的训练,这时候的训练相当于大脑的后天学习,只需要相对较少的数据量就可以使网络自动学会分类视网膜图像。
为了便于观察两个网络的收敛速度,图 11展示了ModelT和ModelF的训练集的Loss和准确率(Acc)曲线。实验ModelT中:在训练前期,训练集的Loss曲线一直在逐渐下降而测试集的Acc曲线则处于上升阶段;当网络训练次数迭代到100000时,网络收敛,分类的准确率约为0.4。而在ModelF中,Loss曲线下降的速度要比ModelT快得多,同时Acc曲线上升的速度也很快;在训练次数迭代到20000的时候,Acc已经达到了0.6以上;迭代到80000的时候训练集的Loss接近于0,网络发生过拟合,网络最终收敛,分类的准确率约为0.68。实验说明优秀的参数初始化不仅能够提高模型的分类准确率,而且能够提高网络的收敛速度。
图 12展示了两种训练方式的矩阵错误率的伪彩色图像,颜色越深,说明该类分类错误率更为严重。ModelT的分类错误集中在第2类图像,说明CompactNet网络并没有很好地训练成熟,只是达到了局部最优的结果,网络并没有真正地收敛;但是ModelF中,大部分的错误都集中在第0~2类,也就是说,第0~2类的图像差距较小,不容易分辨,但是,第3类和第4类的分类效果要好得多。分析数据原图像,第0~2类确实存在多种多样形式的视网膜图像,并且3类视网膜图像在非专业角度确实没有太明显的差异,而第3、4类图像与前3类图像有明显的差异,说明实验结果是合理的。
实验二做了三组对比实验,使用不同的网络结构(LeNet、CompactNet、AlexNet)对视网膜图像进行训练,表 2为三个网络的对比实验结果。
实验结果说明深度学习的网络结构对实验结果有着较大的影响,过浅的网络不能够获取到充分的图像特征信息,过深的网络参数过多,在实验数据比较少的情况下,非常容易发生过拟合,实验的分类效果反而不理想,CompactNet网络分类结果是三个网络中准确率最高的。LeNet网络非常简单,所以采取了直接训练网络的方法,网络参数采用随机初始化的方式;而AlexNet和CompactNet网络都有一定的初始化值,微调时收敛速度要快得多,所以LeNet网络的收敛时间要比其他的两个网络相对长一些。
由于本文采用的数据集是Kaggle比赛的公共数据集,比赛列出了最终的排名榜,采用的评价指标为κ,冠军的κ为0.85,但是比赛使用的测试集是举办方未公布的测试集,而本文使用的测试集是从公示的数据集中随机抽取的部分图像,虽然与比赛使用的测试集有一定的出入,但是该实验结果也说明了本文设计的CompactNet网络达到了较为理想的分类效果。
3.3.3 实验三结果分析由于原始数据有严重的数据分布不均匀的现象,因此所得到的实验分类结果混淆矩阵表明所有的测试数据都被分为第一类,训练所得到的模型并没有任何的分类效果,这也说明了本文提出的数据归一化和数据扩增必不可少。
4 结语本文采用深度学习的方法对不同病变程度的视网膜图像分类。由于视网膜图像噪声多、样本量小、样本不均衡,因此在作网络训练之前需要先对图像进行预处理,该过程采用了三种预处理方式:去除边界噪声、归一化视网膜图像、数据扩增。在作网络的模型设计时,借鉴AlexNet的网络结构,针对视网膜数据的特点,设计了网络结构CompactNet,并且将AlexNet的前两层参数灌入到CompactNet中,然后进行网络的训练。为了对比相同网络结构的情况下不同训练方法、不同的网络结构对实验结果的影响以及数据预处理的必要性,设计了三组实验。实验结果表明,有一定先验知识的参数初始化方法要比直接训练的方法好很多;三种网络结构中,CompactNet的网络结构分类结果最好。
在今后的工作中,可以尝试调整网络结构,使用更多的深度学习技巧,例如batch normalization,进一步提高实验的分类准确率,在此基础上,发散思维,将深度学习应用到其他研究领域中去。
[1] | L'HEVEDER R, NOLAN T. International diabetes federation[J]. Diabetes Research and Clinical Practice, 2013, 101 (3) : 349-351. doi: 10.1016/j.diabres.2013.08.003 |
[2] | LEE S C, LEE E T, WANG Y, et al. Computer classification of nonproliferative diabetic retinopathy[J]. Archives of Ophthalmology, 2005, 123 (6) : 759-764. doi: 10.1001/archopht.123.6.759 |
[3] | LEE H, GROSSE R, RANGANATH R, et al. Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations[C]//Proceedings of the 26th Annual International Conference on Machine Learning. New York:ACM, 2009:609-616. |
[4] | 孙志军, 薛磊, 许阳明, 等. 深度学习研究综述[J]. 计算机应用研究, 2012, 29 (8) : 2806-2810. ( SUN Z J, XUE L, XU Y M, et al. Overview of deep learning[J]. Application Research of Computers, 2012, 29 (8) : 2806-2810. ) |
[5] | AREL I, ROSE D C, KARNOWSKI T P. Deep machine learning-a new frontier in artificial intelligence research[J]. IEEE Computational Intelligence Magazine, 2010, 5 (4) : 13-18. doi: 10.1109/MCI.2010.938364 |
[6] | 杨俊安, 王一, 刘辉, 等. 深度学习理论及其在语音识别领域的应用[J]. 通信对抗, 2014 (3) : 1-5. ( YANG J A, WANG Y, LIU H, et al. Deep learning theory and its application in speech recognition[J]. Communication Countermeasures, 2014 (3) : 1-5. ) |
[7] | MOHAMED A, SAINATH T N, DAHL G, et al. Deep belief networks using discriminative features for phone recognition[C]//Proceedings of the 2011 IEEE International Conference on Acoustics, Speech and Signal Processing. Piscataway, NJ:IEEE, 2011:5060-5063. |
[8] | SARIKAYA R, HINTON G E, DEORAS A. Application of deep belief networks for natural language understanding[J]. IEEE/ACM Transactions on Audio, Speech and Language Processing, 2014, 22 (4) : 778-784. doi: 10.1109/TASLP.2014.2303296 |
[9] | LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86 (11) : 2278-2324. doi: 10.1109/5.726791 |
[10] | KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[EB/OL].[2016-03-02]. http://www.csd.uwo.ca/~olga/Courses/Fall2015/CS9840/Papers/imagenet.pdf. |
[11] | SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions[C]//Proceedings of the 2015 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC:IEEE Computer Society, 2015:1-8. |
[12] | SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL].[2015-11-04]. http://www.robots.ox.ac.uk:5000/~vgg/publications/2015/Simonyan15/simonyan15.pdf. |
[13] | HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[EB/OL].[2016-01-04]. https://www.researchgate.net/publication/286512696_Deep_Residual_Learning_for_Image_Recognition. |
[14] | HUBEL D H, WIESEL T N. Receptive fields, binocular interaction and functional architecture in the cat's visual cortex[J]. Journal of Physiology, 1962, 160 (1) : 106-154. doi: 10.1113/jphysiol.1962.sp006837 |
[15] | LI S, KWOK J T, ZHU H, et al. Texture classification using the support vector machines[J]. Pattern Recognition, 2003, 36 (12) : 2883-2893. doi: 10.1016/S0031-3203(03)00219-X |