基于胶囊网络的眼底视网膜图像分类方法与流程

文档序号:16933757发布日期:2019-02-22 20:30阅读:246来源:国知局
基于胶囊网络的眼底视网膜图像分类方法与流程

本发明属于图像处理领域,具体涉及一种利用胶囊网络的眼底视网膜图像分类方法,属于生物医学图像分类技术领域。



背景技术:

随着近年深度学习在图像分类和识别等方向的飞快研究和发展,其在生物医学成像领域也越来越受到了重视,并已经逐渐有了诸多实现场景和可靠应用,已经成为在疾病分类、病因分析、病症检测、远程医疗等等诸多领域中的重要应用,其作用也如同深度学习的爆发一样,越来越得到重视。

最近几年来,由于深度学习领域的迅猛进步,关于图像的自动分类和语义标注都有了巨大的发展。可以十分肯定地说,近年来深度学习主导了计算机视觉领域的研究和应用,其在很多人物场景和相关比赛中都获得了很高的成绩,其中最为熟知的就是在2017年刚刚终止举办的imagenet大赛,其数据集包括总共1000种自然场景的图像。近年来,深度学习的技术已使得这项比赛发生了飞速的发展和进步,甚至已经超过了人类手动对其进行分类的正确率。

生物医学成像领域长久以来一直面临着海量数据均需要人工进行分析处理的难题。尽管如今深度学习已经在计算机视觉领域确定了全面性的成功应用,其应用和实现已经并且还将继续出现在人们日常生活中的方面。各个车站卡点的人脸自动识别系统、智能手机中的各种语音助手等等,已经对人们的生活产生了巨大的改变。然而,对于医学成像,由于其数据分析的专业性和特定性,其对于深度学习来说,一直是不敢轻易尝试的领域。

其中,眼底视网膜图像因其能够对诊断其他疾病提供有效地诊断依据,越来越得到人们的重视,而如何对眼底视网膜图像进行自动化的分类,并且使得结果高效、快速、准确,则是研究眼底图像自动化处理的一个关键所在。

目前来说,大部分方法还是通过对图像中的疾病特征进行检测识别,据此进行分类,有些还会同时给出该方法做出该项分类的决策依据,大多数是一个分类概率,藉此为医生对患者的诊断提供辅助。该方法与传统的仅仅依靠医生进行分类和诊断相比,显然算法或者模型能够更快捷、更稳定地发挥分类和标注的功能,更少地发生因人工的认知主观性和误操作等因素而引发的诊断问题。综上所述,基于眼底视网膜病变图像的自动分类不仅有很大的应用前景,其对于辅助进行医学诊断来说,也有很大的研究价值。这其中,alexnet网络模型和capsule模型是两个典型的自动化分类模型。

2012年一篇来自加拿大多伦多大学的文献“imagenetclassi-ficationwithdeepconvolutionalneuralnetworks”被发表,其中所提出的alexnet因其在当时极高的识别正确率,在imagenet上取得了史无前例的进步,其使得分类错误率直接下降了将近50%。然而,由于眼底视网膜图像的结构复杂,而且相同疾病之间病症的差异性和特殊性不够明显,导致了对于眼底视网膜图像的自动化处理很难得到实际场景的应用。

胶囊神经网络(capsnet)是hinton在2017年在文献“dynamicroutingbetweencapsules”所提出的,不同于卷积神经网络,其胶囊层的输入输出均为向量形式,并且采用了动态路由算法(dynamicroutingalgorithm),而不是简单的池化操作,来对这些向量进行运算。当然,考虑到卷积神经网络在对图片特征提取方面的高效性和实用性,该胶囊网络中依然采用了一些卷积层,胶囊层的应用只在最后一层。hinton认为,对于更高层次的胶囊层次,其所能代表的更多复杂实体信息使得当加深网络层次时,胶囊的维度也会相应提升。

基于上述分析,本发明提出了基于胶囊网络的眼底视网膜图像分类模型方法,力求实现一个真正能够付诸实用的自动化应用模型,以期更好地对眼底疾病进行诊断和治疗,达到辅助诊断、提高效能的作用。



技术实现要素:

本发明的发明目的在于:提供一种新的眼底视网膜图像分类方法以提高眼底视网膜图像的分类准确率和降低模型的训练时间。

本发明的基于胶囊网络的眼底视网膜图像分类方法,包括下列步骤:

数据预处理步骤:

对训练样本或者待分类对象进行图像预处理,包括感兴趣区域分割,分割图像进行尺寸归一化处理,训练样本和待分类对象为光学相干断层成像(opticalcoherencetomography,oct)图像;

同时,对训练样本的预处理还包括:对尺寸归一化后的图像进行数据扩充处理;以及基于分类需求所设置的分类类别,为训练样本设置对应的类别标签;

设置眼底视网膜图像分类器步骤:

确定胶囊神经网络模型的网络结构,并基于数据预处理后的训练样本,选取不同的超参数(在开始学习过程之前设置值的参数)对所确定的胶囊神经网络模型进行深度学习训练,择优选择不同超参数下训练得到的网络模型的模型参数并保存;即从中选择满足一定的收敛速度且准确率最高的网络模型的模型参数并保存;

其中胶囊神经网络模型的网络结构包括卷积层(用于提取输入图像的图像特征)、主要胶囊层(生成卷积层所提取的图像特征的组合)、分类胶囊层(用于输出输入图像对各分类类别的输出向量)和输出层(输出输入图像的分类结果:模值最大的输出向量所对应的分类类别)

确定包括五层卷积层和三层全连接层的alexnet网络模型的网络结构,并基于该网络结构公开的模型参数进行参数初始化;再从数据预处理后的训练样本中为每种类型选择一定数量的训练样本进行迁移学习,并保存迁移学习后的alexnet网络模型;

将迁移学习后的alexnet网络模型的最后三层全连接层替换为所确定的胶囊神经网络模型的胶囊层,并基于训练时保存的模型参数对胶囊层进行参数初始化,得到本发明的眼底视网膜图像分类模型;

基于数据预处理后的训练样本,选取不同的超参数对所述眼底视网膜图像分类模型进行模型参数训练,从中选择满足一定的收敛速度且准确率最高的分类模型作为本发明的眼底视网膜图像分类器;

分类处理步骤:将图像预处理后的待分类对象输入所述眼底视网膜图像分类器,得到当前待分类对象对各分类类别的输出向量,取模值最大的输出向量所对应的分类类别为当前待分类对象的分类识别结果。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

附图说明

图1是本发明的模型构建和训练的流程框图;

图2是本发明所用的眼底视网膜图像示意图;

图3是各种图像roi分割方法的对规则眼底图像的效果示意图,其中图3-a为原始图像(未分割)、图3-b为边缘图,图3-c为轮廓图,图3-d为houghcircle检测图;

图4是非规则眼底图像的roi分割效果示意图,其中图4-a为原始图像、图4-b为边缘图,图4-c为轮廓图,图4-d为houghcircle检测换图;

图5是数据预处理后的效果示意图;

图6是一个典型的胶囊神经网络模型结构示意图;

图7是本发明所采用的alexnet模型结构图;

图8是在眼底视网膜图像上对capsalexnet的训练准确率及对比。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。

为实现提高眼底视网膜图像的分类准确率和降低分类模型的训练时间目的,本发明所采用的技术方案是:首先构建一个典型的胶囊神经网络,将其在眼底视网膜图像上进行预训练,得到胶囊神经网络的预训练权重;然后从公开数据获取预训练好的alexnet模型权重参数,将其最后两层全连接层替换为已训练好的胶囊神经网络层,称该网络结构为capsalexnet,然后将capsalexnet在眼底视网膜图像上进行训练和微调,最终得到分类准确率最好、收敛较快的眼底视网膜分类模型,实现对眼底视网膜图像的准确分类处理。参见图1,其具体实现步骤如下:

步骤1:对训练数据集进行预处理。

基于分类需求,采集对应的训练数据集。

本具体实施方式中,共涉及6个分类,分别是糖尿病视网膜病变、湿性老年黄斑变性、中心性浆液性视网膜脉络膜病变、高度近视、视网膜静脉阻塞和正常。

所采用的训练数据为眼底视网膜的oct图像,如图2所示。总计1249张,鉴于其特殊性,首先要对图像实施感兴趣区域(regionofinterest,roi)分割。本具体实施方式中,采用opencv(opensourcecomputervisionlibrary)的cv2.houghcircles()函数来获取图像的roi,如图3、4所示。

经过感兴趣区域分割之后,再对其进行数据扩充。优选keras的imagedatagenerator进行数据扩充,所用参数有:rotation_range:30,horizontal_flip:true,vertical_flip:true,fill_mode:"constant",data_format:"channels_last",储存格式为jpg格式图像。其中,rotation_range表示数据提升时图片随机转动的角度,horizontal_flip表示是否进行随机水平翻转,vertical_flip表示是否进行随机竖直翻转,fill_mode表示当进行变换时超出边界的点将根据本参数给定的方法进行处理,"constant"表示指定要向超出边界的点填充的值,data_format表示图像的通道维的位置,"channels_last"表示通道维在最后,例如对于128x128的rgb图像,"channels_last"将图像数据组织为(128,128,3)。

经过上述预处理后可以得到如图5所示的结果,用于输入到所采用的胶囊神经网络完成对其的训练。

本具体实施方式中,在数据扩充后,每一分类有2500张图像,图像大小为1880x1636。其中每一类采用2000张作为训练集,500张为测试集,即总的训练集有12000张,测试集3000张。

步骤2:使用扩充后的眼底视网膜图像对胶囊神经网络模型进行预训练,得到训练好的胶囊神经网络模型。主要包括以下步骤:

考虑到卷积神经网络在对图片特征提取方面的高效性和实用性,本发明所采用的胶囊网络模型的网络结构中依然采用了一些卷积层,胶囊层的应用在卷积层之后。本具体实施方式中,所采用的胶囊网络结构如图6所示,包括reluconv1图层(卷积层)、primarycaps图层(主胶囊层)、digitcaps图层(数字胶囊层,即类别胶囊层)和输出层;

reluconv1图层,输入为步骤1的训练集中的图像,用于检测2d图像中的基本特征,该卷积层中设置有256个内核,大小为9x9x1,步长为1,采用的激活函数为线性整流函数(rectifiedlinearunit,relu),即reluconv1图层的输入为28x28的图像(对应训练集中的图像归一化尺寸),输出为20x20x256张量;

primarycaps图层,该图层包括32个主要胶囊,其工作是采用卷积层检测到的基本特征并生成这些特征的组合。每个主要胶囊将八个9x9x256卷积核应用于20x20x256输入量,因此可以产生6x6x8输出张量。由于有32个这样的主要胶囊,输出体积的形状为6x6x8x32。

digitcaps图层,类似于全连接层,该图层包括6个类别胶囊,对应本具体实施方式的6个分类。每个胶囊需要输入一个6x6x8x32张量,这些输入向量中的每一个获取其自己的8x16权重矩阵wij(层间权重矩阵),该权重矩阵将8维输入空间通过动态路由算法映射到16维胶囊输出空间。

输出层,用于输出当前输入图像的分类检测结果。即,对digitcaps图层输出的6个向量(每个向量中元素的个数为16)求模,求得模值最大的那个向量代表的就是图片概率最大的那个分类。因为胶囊网络中:用向量模的大小衡量某个实体出现的概率,模值越大,概率越。

在对所采用的胶囊神经网络模型进行预训练时,为了保证向量的长度不会超过1,本发明采用非线性函数来对向量的大小进行归一化,使得较短的向量的长度经处理后变得接近于0,而比较长的向量经处理后接近于1,同时保证其方向不会改变,所采用的非线性函数为“squashing”函数,其数学表达形式为:

公式(1)中,vj是胶囊j的输出向量,而sj是该胶囊的所有的输入向量的加权和。除了第一层胶囊网络之外,其余层次的胶囊的输入sj是其前一层胶囊层的所有预测向量的加权和,其计算公式为:

公式(2)中,cij是由迭代动态路由算法决定的耦合系数。ui表示胶囊j的上一层次的胶囊i的输入向量,wij表示层间权重矩阵。胶囊i和其上一层次的胶囊层的耦合系数累加为1,其由一个“routingsoftmax”算法所决定,且其初始值bij是胶囊i应该被耦合到胶囊j的对数先验概率,其计算机公式见公式(3):

公式(3)中,k表示胶囊i的下一层的各胶囊,对数先验可以在其他权重更新的时候同时地有区别地进行更新。初始化的耦合系数然后就会被迭代更新,其更新方法是衡量当前capsule的输出和其上一层胶囊的预测的一致性。该一致性参数只是一个简单的向量乘积,具体形式见公式(4):

这个一致性数值被当作一个对数似然概率,在计算新的所有耦合系数的值之前,被加入到初始的bij中。

为了能够同时识别多个类别,本具体实施方式中,训练时所采用的损失函数为间隔损失函数,其形式表达如公式(5)所示:

lc=tcmax(0,m+-||vc||)2+λ(1-tc)max(0,||vc||-m-)2(5)

公式(5)中,vc表示对应分类类别c的类别胶囊的输出向量,当且仅当分类类别c在图像中时,tc才会等于1,tc是一个标记函数。而式中m+=0.9,m-=0.1,最终的损失函数是所有分类类别对应的胶囊的损失之和。

步骤3:选择已有的alexnet网络模型,并基于其公开的预训练好的alexnet模型参数对所构建的模型进行初始化。

图7为本具体实施方式中所采用的alexnet网络模型的网络结构,其共有八个可训练层,包括5层卷积和3层全连接,总计六千万个参数和六十五万个神经元。

为了简化训练过程,采用公开的预训练好的alexnet模型参数对其进行初始化处理。例如网络地址为“http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/”所公开的alexnet模型参数。

初始化过程为:采用tensorflow先构建好alexnet的网络模型,然后将下载好的模型参数赋值到构件好的模型,即为模型的初始化过程。

值得注意的是,由于使用的是预训练好的alexnet模型,需要谨慎控制输入该模型的数据量,应当使用较少的数据进行迁移学习,否则在其上进行微调时,会迅速地达到较高的预测准确率,对模型性能的影响产生一个拉平效应,从而无法明显观测到改进后的方法对模型准确率的影响,故本发明只选取了每类200张图像,即训练集总计1200张图像。其中1000张用于训练,200张用于进行模型泛化性能测试。

步骤4:将步骤3初始化之后的alexnet模型的最后三层全连接层替换为胶囊层(primarycaps图层和digitcaps图层),并用之前预训练好的胶囊神经模型参数来对最后两层胶囊层进行初始化,从而得到本发明所构建的capsalexnet模型。该模型同时具有alexnet模型的图像特征提取,以及胶囊神经网络在降低噪声的同时,还能够保存输入图像的很多细节的特点。

步骤5:对所构建的capsalexnet进行训练和微调(不同的超参数的对比和选取),所使用的数据集为完整的眼底视网膜图像数据集,即总计15000张,其中训练集12000张,测试集3000张。将该数据集在capsalexnet上针对不同的超参数进行训练之后,得到不同超参数对应的模型准确率和收敛速度等信息,最终选取准确率最高、收敛速度较快的模型,作为本发明最终所用的眼底视网膜图像分类模型,即眼底视网膜图像分类器。

在具体应用时,作为一种对眼底视网膜图像的分类装置,其包括图像预处理模块、本发明的眼底视网膜图像分类器和分类检测结果输出模块;

其中,图像预处理模块用于对当前输入的待检测的眼底视网膜图像进行图像预处理,并将图像预处理后的眼底视网膜图像输入到眼底视网膜图像分类器;

其中图像预处理包括感兴趣区域分割,分割图像进行尺寸归一化处理;其中尺寸归一化的目的是为了更好的使输入图像的类间差异性更小,从而使得模型能够更好地对图像特征进行正确地提取、分类;

眼底视网膜图像分类器用于获取所输入图像对各分类类别的输出向量并发送给分类检测输出模块;

分类检测结果输出模块,取当前输入图像的所有分类类别的输出向量的模值最大的输出向量所对应的分类类别为当前输入图像的分类识别结果并输出。

为了进一步的分析本申请的分类准确率,对本发明所构建的眼底视网膜图像分类器(基于capsalexnet模型)和传统的基于alexnet的分类处理进行了对比试验,不同的参数下本发明与基于alexnet的分类处理的预测准确度如表1所示:

表1

由表1可知,在不同的参数情况下,本发明的分类方案均优于基于alexnet的分类。

同时,基于图8所示的收敛速度对比可知,本发明的基于胶囊神经网络的capsalexnet的收敛速度明显快于传统的alexnet模型,并且可以发现,alexnet方法在训练过程中,随着步数(step)的增加,明显还会有些模型性能的震荡,这显然是其对不同输入的鲁棒性不够好的体现。与之对比,本发明的capsalexnet显然性能更稳定上升,其与传统的alexnet训练同一批图像数据集,在训练的步数为5时已呈现出明显的准确率的提升,且在步数为8左右时率先达到了准确率的收敛点,显然更具鲁棒性。

以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

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