一种使用超轻量级SqueezeNet网络的糖尿病视网膜病变分级方法与流程

文档序号:15447751发布日期:2018-09-14 23:34阅读:635来源:国知局

本发明涉及深度学习技术领域,尤其涉及一种对每类糖尿病视网膜病变进行分级的方法。



背景技术:

糖尿病是严重影响人类健康的内分泌疾病,致残致死率仅次于心脑血管疾病及癌症。该疾病不仅给人类带来巨大痛苦,且带来众多并发症,其中,以糖尿病视网膜病变(简称“糖网病”,diabeticretinopathy,dr)发生率最高,对视力影响也最大。由于每个糖尿病患者都有发展为dr的可能,而dr具有进行性,不可逆性。因此,如何准确筛查无明显视力损伤的糖尿病患者是否存在dr,不仅为早期诊断,早期治疗从而挽救患者视力功能提供先机,还可节约大量社会医疗资源。现阶段dr分级基本依靠眼科医生对眼底图像的肉眼观察,这对实施大规模dr筛查而言存在明显不足和局限。因此,若能借助计算机快速,可靠自动识别出眼底图像属于的类别,不仅可将医生从繁重的人工阅片中解脱出来,更为dr筛查大规模实施提供必备基础条件。

现有技术中,对各类糖尿病视网膜病变的分级普遍基于人工定义的若干项目标特征而进行,例如公开号为cn105513077a的中国发明专利中,公开了一种用于糖尿病视网膜病变筛查的系统,它通过分类器对人工定义的若干项目标特征,如血管轮廓,红色病变(微血瘤),亮度病变(渗出、棉絮斑)等进行识别和判断,以达到对糖尿病视网膜病变分级进行预测的目的。目前的糖尿病视网膜病变分级技术基本属于该技术流派。上述分级方法存在的缺陷在于:一,人工定义的特征具有局限性,无法充分利用医疗影像中的信息,造成实际应用中准确性受限;二,算法是静态的,准确性无法随着获得的病人数据的增加而提高。



技术实现要素:

根据现有技术存在的问题,本发明公开了一种使用超轻量级squeezenet网络的糖尿病视网膜病变分级方法,包括以下步骤:

s1:准备照片库,所述照片库中包含若干包括诊断标记的激光单通道眼底镜(scanninglaserophthalmoscope,slo)照片,且每类糖尿病视网膜病变(共四类:none,mild,moderate,severe)均对应有具有多张所述眼底镜照片的分类照片库;

s2:对所述照片库中的眼底照片进行预处理而得训练范例照片,且所述训练范例照片构成训练范例库,所述训练范例库中的照片数量大于所述照片库中的照片数量;每类糖尿病视网膜病变均对应有具有多张所述训练范例照片的分类训练范例库;

s3:针对四类糖尿病视网膜病变建立一种包含fire模块的超轻量级squeezenet深度卷积神经网络;所述深度卷积神经网络包括多层神经网络架构;所述深度卷积神经网络中,各层所述神经网络架构均基于其前一层所述神经网络架构而搭建;

s4:针对所述squeezenet深度卷积神经网络,采用所述分类训练范例库中的训练范例照片多次训练所述深度卷积神经网络中的神经网络架构,训练时按照设定的学习率调整所述神经网络架构的参数,从而得到针对糖尿病视网膜病变的训练后的深度卷积神经网络;

s5:基于所述训练后的深度卷积神经网络中最后一层所述神经网络架构的输出值对所述糖尿病视网膜病变进行分级。

根据上文技术方案,优选的情况下,所述深度卷积神经网络包含多层神经网络架构,依次为:数据输入层、卷积层、最大池化层、fire模块、fire模块、最大池化层、fire模块、fire模块、最大池化层、fire模块、fire模块、fire模块、fire模块、卷积层、全局平均池化层。其中,数据输入层用于输入已经预处理好的图像,即输入训练范例照片;fire模块用于压缩和扩展数据(fire模块中的卷积核为1的卷积层用于降维,压缩数据;fire模块中的卷积核为3的卷积层用于提取图片深层特征);最大池化层用于对其上一层的输出而在每一个局域范围内选出最大的值作为其输出;全局平均池化层为最后一层,用于对每张特征图的输出;所述全局平均池化层输出每张特征图的4类得分,使用softmax函数归一化为概率。

根据上文技术方案,优选的情况下,所述fire模块为基础模块:其中包含三个卷积层,分为squeeze和expand两部分,分别用来压缩和扩展数据的通道数。

根据上文技术方案,优选的情况下,在训练深度卷积神经网络的各层神经网络架构时,使用交叉熵multinomiallogisticloss作为损失函数,使用nesterovmomentum算法作为学习算法。

根据上文技术方案,优选的情况下,在训练深度卷积神经网络的各层神经网络架构时,每次训练的学习率小于或等于前一次训练的学习率。

根据上文技术方案,优选的情况下,在训练深度卷积神经网络的各层神经网络架构时,对深度卷积神经网络中的各参数使用l2weightdecay规则化。

根据上文技术方案,优选的情况下,在训练深度卷积神经网络的各层神经网络架构时,神经网络中的每一个卷积层的输出均经过leakyrelu激活函数运算后再传入下一层神经网络架构。

在根据上文技术方案,优选的情况下,训练深度卷积神经网络的各层神经网络架构时,采用“xavier”方法来初始化深度卷积神经网络的权重。

根据上文技术方案,优选的情况下,对所述的眼底照片的预处理包括分辨率调整和将图像转成伪彩色图像。

根据上文技术方案,优选的情况下,对所述的眼底照片通过随机拉伸、旋转、翻转、增加对比度、增加亮度处理以增加照片库中的数据数量。

根据上文技术方案,优选的情况下,所述照片库需确保将原本每类不平衡slo图像扩增为每种病变分类均具有足够数量且相同数量级的眼底镜照片。

根据上文技术方案,优选的情况下,所述每类糖尿病视网膜病变的训练范例照片数量均匀,按照9:1的比例分配深度神经网络的训练集和测试集。

与现有技术相比,本发明的有益效果:

本发明的方法通过对大量包括诊断标记的眼底镜照片的运用,通过超轻量级深度学习网络和很少的参数来实现自动从训练范例库中学习所需特征并进行分级判断,在训练过程中不断纠正用于判断的数据特征以及深度卷积神经网络参数,从而能够极大提高在现实应用场景中的分级准确性和可靠度。超轻量级深度学习网络与常见深度学习网络相比,能在保证分类精度不下降的前提下,减少模型参数,缩小模型大小从而能减少计算机计算损耗。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明中公开的方法的流程图;

图2为本发明中原始眼底视网膜图像的示意图;

图3为本发明中图2预处理后的眼底视网膜图像的示意图;

图4为本发明中十二种色度图映射的示意图;

图5为本发明中fire模块内部结构的示意图;

图6为本发明中使用的超轻量级squeezenet网络结构的简化示意图;

图7为本发明中使用的超轻量级squeezenet网络结构的详细示意图;

图8为本发明最后一层softmax归一化为概率后判断的4类图像及得分的实例;

图9为本发明中经过训练的最终在测试每类糖尿病视网膜病变上的roc曲线的示意图;

图10为本发明中测试集预测的混合矩阵的示意图;

图11为本发明使用的squeezenetv1.1与论文中squeezenetv1.0结构的区别。

具体实施方式

为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:

实施例:一种使用超轻量级squeezenet网络的糖尿病视网膜病变分类分级方法(如图1本发明公开的方法的流程图),该分类分级方法的核心在于:针对每一类糖尿病视网膜病变准备大量slo眼底照片并进行预处理和数据扩增;建立包含fire模块的超轻量级squeezenet深度卷积神经网络;基于大量眼底镜照片对深度卷积神经网络进行训练,使深度卷积神经网络的最终输出值符合眼底镜照片的分级结果;从而即可利用训练好的深度卷积神经网络自动进行疾病分级。

该使用超轻量级squeezenet网络的糖尿病视网膜病变分类分级方法,包括以下步骤:

1)准备照片库,照片库中包含若干包括诊断标记的眼底镜照片,且每类糖尿病视网膜病变均对应有具有多张眼底镜照片的分类照片库。眼底镜照片中所包括的诊断标记表明了该眼底镜照片所对应的各类糖尿病视网膜病变的分级诊断结果,从0级到4级(none,mild,moderate,severe),基于现有的分级标准而进行分级。(如图2本发明中原始眼底视网膜图像的示意图)

2)对照片库中的眼底镜照片进行预处理而得训练范例照片,且训练范例照片构成训练范例库,训练范例库中的照片数量大于照片库中的照片数量;每类糖尿病视网膜病变均对应有具有多张训练范例照片的分类训练范例库。该步骤中,对眼底照片的预处理包括分辨率调整和将图像转成伪彩色图像。(如图3本发明中图2预处理后的眼底视网膜图像的示意图)进行分辨率调整时,将每张照片库中的每张眼底照片调整为分辨率227×227的图像。由于建立的squeezenet深度神经网络的输入需要三通道图像,那么将图像由单通道灰度图像转化为伪彩色三通道图像。在opencv中12中colormap(色度图)被定义(如图4本发明中十二种色度图映射的示意图),可用于灰度图像,使用函数applycolormap产生伪彩色图像。将12种色度图模式的一种colormap_bone应用到眼底图像上。原始的眼底镜照片还可以随机进行拉伸、旋转、翻转、增加对比度、增加亮度等处理以增加照片库中的数据数量。照片库需确保将原本每类不平衡slo图像扩增为每种病变分类均具有足够数量且相同数量级的眼底镜照片。完成此步骤后,数据库经过预处理和数据扩增,达到总数约3万张眼底图像,其中4类每类图片数量均匀,按照9:1的比例分配深度神经网络的训练集和测试集。

3)针对四类糖尿病视网膜病变使用python计算机语言caffe深度学习框架建立超轻量级squeezenet深度卷积神经网络;所述深度卷积神经网络包括多层神经网络架构;所述深度卷积神经网络中,各层所述神经网络架构均基于其前一层所述神经网络架构而搭建。本发明考察了深度学习中除精度之外的另一个重要因素:模型大小。搭建了一个超轻量级网络,分类精度接近alexnet网络,而模型大小缩小大约50倍。

本深度神经网络内使用的基础模块称为fire(如图5本发明中fire模块内部结构的示意图):其中包含三个卷积层,步长均设为1。分为squeeze和expand两部分,分别用来压缩和扩展数据的通道数。expand部分中,两个不同的卷积核尺寸的结果通过串接层合并输出。

fire模块有三个可调参数:

-s1:squeeze部分,1×1卷积层的通道数

-e1:expand部分,1×1卷积层的通道数

-e3:expand部分,3×3卷积层的通道数

fire模块输入输出尺寸相同,输入通道数不限,输出通道数为e1+e3。

下面介绍本发明所使用的超轻量级深度学习网络squeezenetv1.1的网络结构:

如图6,图7本发明中使用的超轻量级squeezenet网络结构的简化和详细示意图,整个网络包含10层。第一层为卷积层,缩小输入图像,提取64维特征,构成提取特征的特征图。第2到9层为8个fire模块,每个模块内部先减少通道数(squeeze)再增加通道数(expand)。每两个模块之后,通道数会增加。分别在1,3,5层之后加入降采样的步长为2,卷积核为3的最大池化(maxpooling)层。第10层又是卷积层,为小图的每个像素预测4类的分类得分,最后用一个全局平均池化(averagepooling)层得到这张图的4类得分,使用softmax函数归一化为概率。

即所述深度卷积神经网络依次为:数据输入层、卷积层、最大池化层、fire模块、fire模块、最大池化层、fire模块、fire模块、最大池化层、fire模块、fire模块、fire模块、fire模块、卷积层、全局平均池化层。其中,数据输入层用于输入已经预处理好的图像,即输入训练范例照片;fire模块用于对已提取的特征图进行压缩和扩展数据(fire模块中的卷积核为1的卷积层用于降维,压缩数据;fire模块中的卷积核为3的卷积层用于提取图片深层特征);最大池化层用于对其上一层输入的特征图的输出而在每一个局域范围内选出最大的值作为其输出;全局平均池化层用于每张特征图的空间平均值作为输出,使每张特征图都得到一个输出,大大减小网络参数,避免过拟合,且每张特征图相当于一个输出特征,然后这个特征就表示了输出类的特征。

如图8为归一化为概率后判断的4个图像及得分的实例。图8(a)为示例1,真实标签为0类,预测0类概率为0.993,判断正确;图8(b)为示例2,真实标签为3类,预测3类概率为.0,判断正确;图8(c)为示例3,真实标签为2类,预测1类概率为0.562,判断错误;图8(d)为示例4真实标签为1类,预测1类概率为0.613,判断正确。

介绍本发明中使用的超轻量级squeezenet网络结构的几个主要结构的功能定义:在泛函分析中,卷积、旋积或摺积是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广;fire模块由特定的三个卷积层组成(每个卷积参数可调);池化(即pooling)的本质,其实是采样,池化对于输入的特征图,选择某种方式对其进行压缩;池化的意义主要有两点:一是减少参数,通过对特征图降维,有效减少后续层需要的参数,另一个则是平移不变性,它表示对于输入当其中像素在邻域发生微小位移时,池化层的输出是不变的,这就使网络的鲁棒性增强了,有一定抗扰动的作用。

经过改进后的本发明使用的squeezenetv1.1在不损失精度的情况下比论文《squeezenet:alexnet-levelaccuracywith50xfewerparametersand<0.5mbmodelsize》中使用的squeezenetv1.0需要训练的参数少2.4倍,具体对比参数如图11。

4)针对所述深度神经网络,采用slo分类训练集中的训练眼底范例照片多次训练超轻量级squeezenet深度卷积神经网络,在本例中深度卷积神经网络训练20000次。在训练深度卷积神经网络的各层神经网络架构时采用以下方式:

a.使用交叉熵multinomiallogisticloss作为损失函数;

b.使用nesterovmomentum算法作为学习算法;

c.深度卷积神经网络训练20000次,在各次训练中,按照设定的学习率调整神经网络架构的参数,学习率随着学习的深入而变得越来越小,每次训练的学习率小于或等于前一次训练的学习率。例如,第0-100个epoch中使用0.001的学习率,第100-200个epoch中使用0.0009的学习率,每100个epoch学习率为前100个epoch学习率的0.9倍;

d.对深度卷积神经网络中的各参数使用l2weightdecay规则化,其作用是避免参数数值过大从而导致过拟合;

e.神经网络中的每一个卷积层的输出(包括fire模块中卷积层的输出)均经过leakyrelu激活函数运算后再传入下一层神经网络架构;

f.采用”xavier”方法来初始化深度卷积神经网络的权重,该方法来源于2010年的一篇论文《understandingthedifficultyoftrainingdeepfeedforwardneuralnetworks》,论文基于为了使网络中的信息更好的流动,每一层的方差应该尽量相等的目标进行了一系列推导,把参数初始化成范围内的均匀分布,默认方差只考虑输入个数。这种权重初始化方法有利于加快网络训练的收敛。

通过以上训练过程,得到针对每类糖尿病视网膜病变的多个训练后的超轻量级squeezenet深度卷积神经网络。

5)基于所述训练后的深度卷积神经网络中最后一层所述神经网络架构的输出值对所述糖尿病视网膜病变进行分级。

如图9为本发明中经过训练的最终在测试每类糖尿病视网膜病变上的roc曲线的示意图。roc曲线指受试者工作特征曲线/接收器操作特性曲线(receiveroperatingcharacteristiccurve),是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在roc曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。图示证明了训练迭代收敛后,分类准确,误判少,四类分类的auc分别是0.97,0.96,0.95,1.0,证明了本发明的深度卷积神经网络有效性。

上述方案提出了一种由数据驱动的基于超轻量级squeezenet深度卷积神经网络的对糖尿病视网膜病变进行预测分级的方法,它通过xavier初始化权重,采用交叉熵损失函数,nesterovmomentum学习算法,使用slo数据集中的训练集得到最终模型,其可通过获取更多数据进一步训练的方法来提高准确率。

本方法通过深度学习,实现自动从训练数据中学习所需特征并进行分类判断,在训练中过程不断纠正用于判断的数据特征以及分类器参数。相对于已有的技术,本方法的准确性可以随着训练数据量的增长不断提高,极大的提高了在现实应用场景中的诊断准确性与可靠度。在前期测试中,本方法使用了由超过九千张专业人员标注的眼底照片经过预处理和扩增得到的三万多张图片中的每类十分之九进行训练,在二千九百张的测试数据集上达到了77.48%的与人类判断的吻合度,如图10为本发明中测试集预测的混合矩阵的示意图,混淆矩阵在图像精度评价中主要用于比较分类结果和实际测得值,通过混淆矩阵证明了本发明深度卷积网络测试结果的准确性,误判一般发生在相近类别且比例较小。采用以上基于深度学习的糖尿病视网膜病变分类分级方法所建立的分类器系统可以针对糖尿病眼底病变进行自动化分级,可以应用与医院临床、体检筛查、患者自检等领域。本方法与squeezenetv1.0的结构对比如图11,模型v1.1一张图片需要0.72gflops计算量,是一张图片1.72gflops计算量的模型v1.0的0.42倍,然而它们在imagenet数据集上的top5测试准确率均在80.3%。本发明在不损失准确率的条件下减少了参数和计算量,提高了模型性能。

上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1