本发明涉及计算机视觉以及模式识别领域,是一种基于深度学习与传统方法相结合的视网膜血管分割方法。
背景技术:
眼底成像可以通过视网膜成像来判断是否存在异常,其中对于视网膜血管的观察相当重要。青光眼、白内障以及糖尿病等疾病都会造成视网膜眼底血管的病变。视网膜病变患者逐年增加,如果不能及时治疗,通常会导致长期患有这些疾病的患者承受巨大痛苦甚至失明。然而,目前视网膜病是由专科医生进行人工诊断,专科医生首先对患者的眼底图像进行手工血管的标记,然后,再测量所需的血管口径、分叉角度等相关参数。其中,手工标记血管的过程大概需要两个小时左右,诊断过程花费大量时间,为了节约人力物力,自动化提取血管的方法显得尤为重要。不但可以减轻专科医生的负担,也可以有效解决偏远地区缺乏专科医生的问题。鉴于视网膜血管分割的重要性,国内外学者做了许多研究,大致分非监督和监督方法。
非监督方法是通过某种规则来提取血管目标,包括匹配滤波,形态学处理,血管追踪,多尺度分析等算法。监督学习也叫作像素特征分类方法或者机器学习技术。通过训练将每个像素分类判断为血管或者非血管。主要分为两个过程:特征提取和分类。特征提取阶段通常包括gabor滤波,高斯匹配滤波,形态学增强等方法。分类阶段通常包括的分类器有bayesian(朴素贝叶斯),svm等分类器。但是,该种对于像素的判断不能很好的考虑每个像素与其周围领域像素之间的联系。因而出现了cnn,它可以根据图像块的特征来判断中心像素为血管或者非血管,通过进行多层结构的自动学习特征,使这些抽象的特征有利于中心像素点的分类判断。但是,对每个像素进行分类很少涉及全局信息,使得在局部有病变的情况下,分类失败;其次,每幅图像至少有几十万个像素,如果一一判断,使得存储开销大,计算效率很低。
技术实现要素:
针对现有算法的不足,本发明提出了一种基于深度学习与传统方法相结合的视网膜血管分割方法。首先,根据视网膜血管的特点做其针对性的预处理,包括进行clahe(限制性对比度自适应直方图均衡)处理使得视网膜血管和背景能够具有较高的对比度,进行高斯匹配滤波的传统方法使得视网膜的细小血管得到很好的增强,本发明提出将两种灰度图像都作为网络的训练样本。在此基础上,我们针对视网膜图像数据少的问题做了相应的数据扩增包括弹性形变,平滑滤波等等,不仅使得数据量增大有利于深度学习网络的学习和训练,更重要的是模拟了具有各种各样情况下的视网膜图像,都能够通过本发明的处理得到很好的视网膜血管分割图,扩大了该发明的广泛适用性。
其次,本发明通过构建fcn-hned的视网膜血管分割深度网络,将fcn(fullyconvolutionalnetwork)网络末端得到血管概率图与浅层信息hned(holisticallynestededgedetection)的血管概率图进行了很好的融合,得到我们所需的视网膜血管分割图,该网络极大程度的实现了自主学习的过程,不仅可以分享整个图像的卷积特征,减少特征冗余,又可以从抽象的特征中恢复出多个像素的所属类别,实现一种端到端,像素到像素的视网膜血管分割方法,这种全局输入和全局输出的方法既简单又有效。在视网膜血管检测当中本发明分别将视网膜血管图像的clahe图和高斯匹配滤波图分别输入网络使其得到的血管分割图进行加权平均从而得到更好更完整的视网膜血管分割概率图,该种处理方式极大程度的提高了血管分割的鲁棒性与准确性。
本文采用如下技术方案:
1、预处理
1)对彩色的视网膜图像的rgb三个通道中对比度比较高的绿色通道进行提取。其次,由于拍摄角度等的问题,采集到的视网膜眼底图像的亮度往往是不均匀的,或者病变区域由于过亮或者过暗在图像中呈现出对比度不高等问题很难与背景区分,所以,我们进行归一化处理。然后,对归一化后的视网膜图像进行clahe处理提高视网膜眼底图像质量,均衡眼底图像的亮度,使其更适合后续血管提取。
clahe处理之后的视网膜血管在增强血管与背景对比度的同时,能够极大程度的保持视网膜血管的本身特性,然而,由于其中细小血管与背景很相似,在后续的深度学习当中不能够很好的分割出来,针对于此,本发明利用血管的横截面灰度图呈高斯走向的特点,将clahe处理之后的视网膜血管进行高斯匹配滤波处理,使得细小血管能够极大程度的表现出来。由于血管的方向是任意的,因此,本文采用12个不同方向的高斯核模板来对视网膜图像进行匹配滤波,将其最大响应作为该像素的响应值。二维高斯匹配滤波核函数k(x,y)可表示为:
其中σ表示高斯曲线的方差,l表示y轴被截断的视网膜血管长度,滤波窗口的宽度选择[-3σ,3σ]即核函数x的取值范围,选择较小的σ数值设置为0.5,使得细小血管能够极大程度的得到增强。
为了充分考虑到视网膜图像的整体特性以及其中细小血管的特性,我们将clahe处理之后的视网膜血管图和高斯匹配滤波图都作为训练的样本,可以极大地提升网络分割的性能。
2、数据扩增和构建训练样本
由于训练深度网络需要大量的数据,仅现有的视网膜图像用于训练远远不够。于是需要对训练数据进行不同方式的扩张,加大数据量,提高训练和检测效果。数据扩增方式:
1)将预处理后的图像进行左右上下等平移分别为20个像素,实现网络学习的平移不变性。
2)将1)处理后的图像分别进行45°,90°,125°,180°的旋转,截取其中的最大矩形,这种变换不仅增强了训练数据的旋转鲁棒性,又将数据扩大为原来的5倍。
3)在一般的数据扩增当中,从未考虑视网膜图像可能出现的模糊现象,然而,本发明考虑到在各种情况下,譬如相机的抖动或者病人的不小心移动,都会造视网膜图像在一定程度上的部分模糊,所以,本发明将2)处理后的图像集选取其中25%分别进行3×3和5×5的中值滤波模糊操作,使得网络能对于各种模糊程度的视网膜图像具有广泛适用性。
4)在以往的视网膜图像数据扩增当中常用的只是平移,缩放,旋转等等,远远达不到对视网膜图像的各种情况的考虑,鉴于此,本发明考虑视网膜的血管方向形状等的各异性,我们对3)处理后的图像集取25%进行随机的弹性变形,该项数据扩增方式对于视网膜血管的分割有很重要的意义,它可以帮助网络学习到各种方向错综复杂的视网膜血管,有利于实际应用中视网膜血管分割准确率的提升。
5)由于fcn适用于任何大小的图像,我们对4)处理后的图像进行50%和75%的缩放处理,从而扩增数据。
当然,我们对于视网膜血管分割的专家标准图(groundtruth)进行同样的处理,从而与样本一一对应。将构件好的训练样本数据的3/4作为训练集,1/4作为验证集。
3、fcn-hned网络构建
fcn网络:一般的fcn网络层主要由5部分组成,输入层,卷积层,降采样层,上采样层(反卷积层)和输出层。本发明中构建的网络为:
输入层,两个卷积层(c1,c2),第一降采样层(pool1),两个卷积层(c3,c4),第二降采样层(pool2),两个卷积层(c5,c6),第三降采样层(pool3),两个卷积层(c7,c8),第四降采样层(pool4),两个卷积层(c9,c10),第一上采样层(u1),两个卷积层(c11,c12),第二上采样层(u2),两个卷积层(c13,c14),第三上采样层(u3),两个卷积层(c15,c16),第四上采样层(u4),两个卷积层(c17,c18),目标层(输出层)。形成一个前后对称的u型深度网络构架。
由于fcn网络的低层的特征分辨率较高,而高层信息体现了更强的语义信息,对于视网膜图像的部分病变等区域的血管分类具有很好的鲁棒性,但同时fcn网络最后得到与输入样本相同大小的输出却会丢失很多较小的目标和局部的细节信息,因而,本发明将浅层的视网膜血管信息以边缘检测hned(holisticallynestededgedetection)的方法在深度监督情况下来学习丰富的多层信息表达,很大程度上解决了目标边缘模糊问题。即我们将c2,c4,c6,c8层之后分别添加一个softmax分类器,从而将隐藏层的信息在将groundtruth为标签的情况下学习得到视网膜血管概率图,分别称为侧输出1、侧输出2、侧输出3、侧输出4。在此基础上,我们将四个侧输出与最后的输出层进行融合,从而形成fcn-hned的网络结构,将浅层信息与输出层信息进行互补,得到多尺度,多层次,与目标样本更相近的融合特征图,为分割血管的精细化起到很大的作用,以至于不需要后续专门的精化步骤来进行视网膜血管的精细化。
本发明的卷积层都通过补零的方式得到同样大小的特征图,pooling层的结果是使得特征减少,参数减少,但pooling层的目的并不仅在于此。本发明使用max-pooling能减小卷积层参数误差造成的估计均值的偏移,更多的保留纹理信息。本发明最大池化层的采样率为2。上采样即为双线性插值的过程。
整个模型的构建过程中激活函数都用relu除了softmax分类层,损失函数为交叉熵。
训练:fcn-hned网络构建好之后可以进行网络的训练来进行对图像的自动特征提取和学习过程,每代输入128个图像,直到网络收敛之后停止。
测试:将每张视网膜图像绿色通道图的clahe图和高斯匹配滤波图分别输入到已训练好的网络进行测试,分别得到融合的视网膜血管分割图称为
对测试中得到视网膜血管概率图进行二值化得到分割图。
有益效果
1、本发明根据视网膜血管的不同特性,采用针对性的数据处理方法,训练数据的好坏直接决定了训练得到的模型是否可靠,准确率是否达到所需的水平,本发明利用模糊操作,弹性形变等,很好的模拟了各种各样可能出现的视网膜数据,同时扩大数据达到足够多的数量以避免训练过拟合,也能够为后续的检测提供帮助,进而提高视网膜血管分割准确率。
2、本发明将clahe处理后的视网膜图像与高斯匹配滤波处理之后的图像分别输入网络进行训练学习,不仅使得视网膜血管的性质得到各个性能层次下的充分学习,而且高斯匹配滤波图充分弥补了clahe处理图对于细小血管不清晰的不足,大大的提升了视网膜血管分割的性能。
3、本发明通过构建深度学习网络fcn-hned的方法,能够快速的进行视网膜图像的自动特征提取,它能够从不同的层次对视网膜眼底图像进行特征提取,学习到视网膜图像的中各个像素与其周围多个邻域之间的关系,将其视网膜血管图的中,高级特征很好的表现出来,从而使其很好的区分了血管与非血管的内部特征,实现了端到端,像素到像素的血管分割,比传统单个像素的分类判断效率提升很多倍。
4、本发明利用浅层特征的四个侧输出与fcn网络的末端输出进行高度融合,从而实现血管分割的精细化与鲁棒性。使得血管分割图与专家的手动分割图达到很好的一致性。同时,极大程度的实现了视网膜血管分割的自动化,大大降低了人力物力的消耗。
附图说明
图1是本发明的整体流程图;
图2是血管横截面灰度分布图;(a)一段血管图(b)灰度级
图3是预处理效果图;(a)原始图像(b)clahe处理之后的图像(c)高斯匹配滤波后的图像
图4是fcn-hned网络结构;
图5是视网膜血管分割结果。(a)原始图像(b)视网膜血管分割图(c)第一位专家手动分割图
具体实施方式
下面结合附图进行具体说明:
本发明的技术框图如图1所示。具体实施步骤分别如下:
1、预处理
对每一幅视网膜眼底图像不管是训练集还是测试集都进行同样的预处理。
1)对彩色的视网膜图像的rgb三个通道中对比度比较高的绿色通道进行提取。其次,由于拍摄角度等的问题,采集到的视网膜眼底图像的亮度往往是不均匀的,或者病变区域由于过亮或者过暗在图像中呈现出对比度不高等问题很难与背景区分,所以,我们进行归一化处理,然后,对归一化后的视网膜图像进行clahe处理提高视网膜眼底图像质量,均衡眼底图像的亮度,使其更适合后续血管提取。
clahe处理之后的视网膜血管在增强血管与背景对比度的同时,能够极大程度的保持视网膜血管的本身特性,然而,由于其中细小血管与背景很相似,在后续的深度学习当中不能够很好的分割出来,针对于此,本发明利用血管的横截面灰度图呈高斯走向的特点,对视网膜图像进行搞死匹配滤波处理。如图2所示,(a)为血管灰度图,(b)为血管的横截面的灰度值,细小的血管的横截面也呈现高斯走向,所以,本发明将clahe处理之后的视网膜血管进行高斯匹配滤波处理。由于血管的方向是任意的,因此,本文采用12个不同方向的高斯核模板来对视网膜图像进行匹配滤波,找到相应的最大响应作为该像素的响应值。
为了充分考虑到视网膜图像的整体特性以及其中细小血管的特性,我们将clahe处理之后的视网膜血管图和高斯匹配滤波图都作为训练的样本,可以极大地提升网络分割的性能。
2、数据扩增和构建训练样本
由于训练深度网络需要大量的数据,仅现有的视网膜图像用于训练远远不够。于是需要对训练数据进行不同方式的数据扩张,加大数据量,提高训练和检测效果。数据扩增方式:
1)将预处理后的图像进行左右上下等平移分别为20个像素,实现网络学习的平移不变性。
2)将1)处理后的图像分别进行45°,90°,125°,180°的旋转,截取其中的最大矩形,这种变换不仅增强了训练数据的旋转鲁棒性,又将数据扩大为原来的5倍。
3)在一般的数据扩增当中,从来未用到中值滤波,然而,本发明考虑到在各种情况下,譬如相机的抖动或者病人的不小心移动,都会造视网膜图像在一定程度上的部分模糊情况,所以,本发明将2)处理后的图像取其中25%图像分别进行3×3和5×5的中值滤波模糊操作,使得网络能对于各种模糊程度的视网膜图像具有广泛适用性。
4)在以往的视网膜图像数据扩增当中常用的只是平移,缩放,旋转等等,远远达不到对视网膜图像的各种情况的考虑,鉴于此,本发明考虑视网膜的血管方向形状等的各异性,我们对3)处理后的图像取25%进行随机的弹性变形,该项数据扩增方式对于视网膜血管的分割有很重要的意义,它可以帮助网络学习到各种方向错综复杂的视网膜血管,有利于实际应用中视网膜血管分割准确率的提升。
5)由于fcn适用于任何大小的图像,我们对4)处理后的图像进行50%和75%的缩放处理,从而扩增数据。
当然,我们对于视网膜血管分割的专家标准图(groundtruth)进行同样的处理,从而与样本一一对应。将构件好的训练样本数据的3/4作为训练集,1/4作为验证集。
3、fcn-hned网络构建以及训练和测试过程
fcn网络:一般的fcn网络层主要由5部分组成,输入层,卷积层,降采样层,上采样层(反卷积层)和输出层。本发明中构建的网络为:输入层,两个卷积层(c1,c2),第一降采样层(pool1),两个卷积层(c3,c4),第二降采样层(pool2),两个卷积层(c5,c6),第三降采样层(pool3),两个卷积层(c7,c8),第四降采样层(pool4),两个卷积层(c9,c10),第一上采样层(u1),两个卷积层(c11,c12),第二上采样层(u2),两个卷积层(c13,c14),第三上采样层(u3),两个卷积层(c15,c16),第四上采样层(u4),两个卷积层(c17,c18),目标层(输出层)。形成一个前后对称的u型深度网络构架。
其中卷积过程实现如下:
f(x;w,b)=w*sx+b(2)
其中,f(x;w,b)为输出为特征图,x是前一层的输入特征图,w和b是卷积核和偏移值,*s代表卷积操作,不像传统的cnn网络,fcn网络将最后的全连接层全部换做卷积层,但是,经过卷积和下采样等一系列操作使得特征图越来越小,要使图像恢复到与输入图像同样大小,fcn采用上采样操作或者说是反卷积。
本发明的中间卷积层都通过补零的方式得到同样大小的特征图,左右对称的u型网络中都重复应用两个紧相连的3×3滤波卷积核进行卷积操作,步长为1,每个卷积层后边都有一个relu激活函数,pooling层的结果是使得特征减少,参数减少,但pooling层的目的并不仅在于此,它能够保持某种不变性旋转、平移等,本结构用核为2×2,步长为2的max-pooling层,能减小卷积层参数误差造成的估计均值的偏移,更多的保留纹理信息。在每个下采样的过程中,特征图的数目都会翻倍,上采样则相反。除此之外,在最后一层用1×1的卷积核将64个特征图以标准输出为目标映射进行训练。
整个模型的构建过程中激活函数都用relu除了softmax分类层,损失函数为交叉熵。
hned结构:我们把血管分割看做是边缘检测问题,我们使用基于深度监督的网络得到浅层fcn网络的四个血管概率图。即我们将c2,c4,c6,c8之后分别添加一个softmax分类器,通过以标准分割结果为目标的深度监督网络从而将隐藏层的信息以视网膜血管概率图的形式展现出来,分别称为侧输出1、侧输出2、侧输出3、侧输出4,实现多尺度的特征映射图的学习。
由于fcn网络的低层特征分辨率较高,而高层信息体现了更强的语义信息,对于视网膜图像的部分病变等区域的血管分类具有很好的鲁棒性,但最后得到与输入样本相同大小的输出却会丢失很多较小的目标和局部的细节信息,因而,本发明将浅层的视网膜血管信息以边缘检测hned的方法在深度监督情况下来学习丰富的多层信息表达,很大程度上解决了目标边缘模糊问题。在此基础上,我们将四个侧输出与最后的输出层进行融合,从而形成fcn-hned的网络结构,如图4所示,如果输入图像大小为512×512,经过c1,c2都为64个3×3的滤波器得到64个特征图,通过对原图像补零的方式使得c1,c2特征图保持大小为512×512,经过降采样使得特征图翻倍,到达最底端c9和c10时,1024个特征图大小为32×32,之后的卷积实现与前边类似,上采样的实现方式为双线性插值。该网络结构将浅层信息的四个侧输出血管概率图与fcn网络的输出层血管概率图进行互补融合,通过训练得到更好的与目标样本更相近的特征图,为分割血管的精细化起到很大的作用,以至于不需要后续专门的精化步骤来进行视网膜血管的精细化。
融合过程:为了直接利用侧输出概率图和fcn上采样之后的输出概率图,我们对其进行融合得到:
其中,y表示标准血管分割图即groundtruth,dist(·,·)表示融合之后的概率图与标准血管分割图之间的距离,即相差程度,通过学习的方式调整权值逐渐接近收敛,我们最小化其损失函数通过sdg(梯度下降法)。
训练:fcn-hned网络构建好之后可以进行网络的训练来进行对图像的自动特征提取和学习过程,分两步进行:第一步,人工选取一些比较直观的图片1280张,先对本文构建的模型进行训练,每代输入128个图像,等到模型收敛之后,将模型参数保存下来,因为这1280张图片内容比较直观简单,血管非血管的语义信息比较清晰,模型的收敛速度比较快;第二步,在全集训练集上对模型进行再次训练,但是模型参数的初始值采用第一歩中得到的参数,这样大大减少了模型的训练时间,使得整体模型的收敛速度加快。
训练:将每个图像训练数据通过卷积神经网络算法进行逐层计算后,得到输出一个融合后的血管概率图,计算该概率图与对应的标准图中每个像素所属类别的误差。根据最小误差准则,通过误差计算进行逐层反馈修正所构建的深度卷积神经网络中各层参数。当误差逐渐下降趋于稳定时,认为网络已经收敛,训练结束,生成所需检测模型。
测试:将每张视网膜眼底图像绿色通道图的clahe图和高斯匹配滤波图分别输入到已训练好的网络进行测试,分别得到融合的视网膜血管分割图称为
4后处理
对综合得到的视网膜血管概率图进行二值化得到分割图,呈现出与专家分割一致的二值图。通过对分割结果进行参数评估,得到96%以上的准确率,如图5所示。