多尺度卷积核U-Net模型的视网膜血管分割方法

2021-01-15 09:30刘国如任梦成裴宏杨
关键词:像素点视网膜卷积

杨 丹, 刘国如, 任梦成, 裴宏杨

(1.东北大学 信息科学与工程学院, 辽宁 沈阳 110819; 2.东北大学 辽宁省红外光电材料及微纳器件重点实验室, 辽宁 沈阳 110819; 3.东北大学 智能工业数据解析与优化教育部重点实验室, 辽宁 沈阳 110819)

视网膜血管的结构形态变化与糖尿病、青光眼、黄斑病变等有着密切的联系.采用计算机视觉的手段对原始视网膜血管形态进行分割具有十分重要的意义.

目前,视网膜血管分割根据是否需要标签主要分为有监督和无监督两种.无监督的方法是利用视网膜血管的结构特征等先验知识,然后通过常用的匹配滤波法、血管跟踪以及形态学处理等方法来进行分割.匹配滤波法是使用2维卷积核对视网膜图像进行卷积,通过滤波器得到的响应值来判断像素点是背景区域还是血管区域,虽然在健康清晰的眼底视网膜血管图片上可以取得较好的分割效果,但是对患者的病理图片分割时假阳性的概率会偏大[1].血管追踪的方法是采用局部信息来分割两点间的血管[2],借助局部区域中的种子点检测血管,通过灰度强度和弯曲度的大小来确定血管纵向截面的中心,这样可以准确地计算出血管宽度,但基本上不能对没有种子点的血管进行检测.形态学处理的方法是使用形变模型[3]和血管轮廓模型[4]等显式的血管模型来提取眼底视网膜血管特征图像的.Fraz等[5]采用视网膜血管中心线检测和图像形态学变换的方法对视网膜血管结构进行分割.Espona等[6]使用蛇模型算法对眼底视网膜血管进行分割,并在该模型中引入了图像形态学操作以及对能量参数的调整.该模型的设计是基于血管中心线,利用形态学方法对视网膜血管分割进行辅助.

相比于无监督的方法,有监督方法首先对视网膜特征进行选择提取,然后以人工标记的Label图像对分类器进行训练,最后生成相应的分类模型对视网膜血管进行分割.特征提取通常采用Gabor变换、离散小波变换、血管滤波、高斯滤波等方法.分类阶段时,大部分采用k-近邻算法、支持向量机算法和人工神经网络[7]作为分类器.Staal等[8]提出一种基于脊线的有监督模型对视网膜血管进行自动分割.该方法采用顺序前向选择算法得到脊线上像素点的最佳特征值,然后使用k-近邻算法对每个像素点进行分类.Ricci等[9]提出了将线操作与支持向量机算法相结合的视网膜血管分割方法.该方法使用两个正交检测器与像素的灰度值相结合的方式对特征图像进行提取,然后应用支持向量机算法完成像素的分类.Wilfred等[10]采用了多隐藏层人工神经网络的结构对视网膜血管结构进行分割.实验表明该方法在DRIVE数据集上的准确率达到了较好的效果.

近年来,深度学习在目标检测[11]、图像识别[12]等计算机视觉领域取得了很大突破,因此现在越来越多的研究人员采用深度学习的方法进行眼底视网膜血管分割.Ronneberger等[13]提出了一种用于生物医学图像分割的U-Net模型,该模型采用多级跳跃连接和编解码器结构提高了像素定位和提取局部特征的能力.Zhuang[14]提出了一种可以被看作多重U-Net的LadderNet模型用于视网膜血管分割,该模型有多对编码器-解码器支路,且每层每对相邻的解码器和解码器支路之间都有跳跃连接.Wang等[15]提出了一种基于patch学习策略的Dense U-Net视网膜血管分割框架.该框架采用随机抽取、随机变换的策略提取扩充patch,并利用重叠patch进行图像重建.Jin等[16]利用血管的局部特征以端到端的形式提出了一种可变形的视网膜血管分割网络DUNet,该网络将带有提高输出分辨率的上采样操作用于提取上下文信息,并通过结合低级特征和高级特征来实现精确定位.

尽管上述方法在视网膜血管分割领域已经取得了较好的结果,但对于微小血管和对比度较差图像的分割仍需继续改善.本文提出一种多尺度卷积核U-Net[13]视网膜血管分割方法.实验中首先通过对图像进行旋转、平移等操作扩充数据集;然后采用CLAHE算法提升图像的对比度;最后,使用处理好的图像对本文设计的多尺度卷积核U-Net模型进行训练.经过测试,可以发现本文提出的视网膜分割方法在灵敏性、特异性和准确率方面有着较好的表现,能够更好地分割微细血管.

1 方法描述

本文提出的多尺度卷积核U-Net卷积神经网络的视网膜血管分割方法可分为两个阶段,分别为训练阶段和测试阶段.训练阶段可分为5个步骤:

1) 选用视网膜血管公开数据集DRIVE的20张图像作为训练数据集,通过旋转、镜像、平移以及剪切的方法对数据集进行扩充;

2) 采用CLAHE算法对扩充后的数据集进行图像预处理;

3) 使用处理好的数据集对本文设计的多尺度卷积核U-Net卷积神经网络模型进行训练;

4) 对训练得到的双通道特征图进行Softmax归一化;

5) 通过改进的损失函数对归一化结果进行迭代优化,得到完整的视网膜血管分割模型.

测试阶段时,首先对测试图像进行预处理;然后将处理过的图像送入训练好的多尺度卷积核U-Net网络模型进行特征提取,并对提取到的特征图归一化操作;最后确定阈值进行分割,得到的黑白轮廓图即为结果图像.流程示意图如图1所示.

图1 实验流程示意图

2 多尺度卷积核的U-Net网络设计

2.1 U-Net网络结构

1) 总体设计.本实验中所提出的多尺度卷积核U-Net卷积神经网络模型由编码器和解码器两部分组成,主要结构如图2所示.编码器部分采用改进的Inception卷积网络结构,从图像中提取空间特征.这个模块采用不同尺寸的卷积内核,可以提高网络的泛化能力和表现力.编码器部分重复应用了两个Inception结构和一个用于向下采样的最大池化操作,其中每个卷积后面都有批量归一化BN层和激活函数层,池化核的大小为2×2,步长为2,重复的次数是4.在下采样的每一步中,都将特征通道的数量增加一倍.另一方面,根据编码器获得的特征利用解码器构造分割图.它包括应用2×2转置卷积将特征通道数减少一半的上采样操作,并在其中引入了最大值池化索引参数,可以准确地保存目标特征的位置信息.此外,解码器部分还涉及两个3×3卷积,每个卷积后面都有一个与编码器相同的BN层和激活函数,并且在编码器路径上生成的每一组特征映射都被连接到解码器路径上的对应特征映射.在最后一层,使用 1×1 大小的卷积生成一个与原始图像大小相同的双通道特征图.

图2 多尺度卷积核的U-Net模型结构

2) 编码器结构设计.本实验编码阶段采用的设计思想为将原始U-Net模型的3×3卷积操作替换为改进的Inception结构.这个结构可以追溯到GoogleNet[17],它是用来解决在制作更深层次网络过程中增加的高计算成本问题.其体系结构通过增加网络的深度和宽度,同时保持计算预算不变,从而提高了网络中计算资源的利用率.将不同大小的滤波器应用于同一层,对不同尺度的信息进行处理,然后将同一层进行聚合,在下一阶段中可以同时提取出不同尺度的特征.

本设计中,Inception结构保留了U-Net模型中的3×3卷积核,加入了一个1×1,两个3×3大小的卷积核,其中后者相当于经典Inception结构中采用的一个5×5大小的卷积核[18].因为这两种方案所得到的特征图像上每个像素点的感受野大小是完全相同的,而两个3×3卷积核串联所需要的参数相比于5×5的卷积核少,从而在模型训练的过程中减少了计算量,实现模型训练效率的提升.具体的Inception模块的设计如图3所示.

图3 Inception卷积模块

首先对前层特征图像进行3组不同的卷积操作,得到3组具有不同感受野的特征图,然后将其在最后一层进行拼接,得到后层特征图像.

3) 解码器结构设计.这部分的设计思想为在原始U-Net模型的上采样阶段融入最大值池化索引参数.这项操作源于SegNet模型,它是Badrinarayanan等[19]提出的一种端到端的卷积神经网络模型,可以实现图像像素级别的语义分割.

如图4所示,a,b,c,d分别表示2×2区域内的最大值,在池化的过程中会保存它们的位置信息,在上采样的过程中将在对应的位置上直接保留运算之后的值,在没有位置信息的地方采用补0的方式进行填充.通过最大索引上采样的方式可以获得浅层网络中特征图的边缘和纹理信息,深度网络可以学习图像的语义信息.而且这个结构具有一个更大的接受域,实现了低层信息和高层信息的融合,使网络具有更丰富的特征学习能力.此外,这种结构不会显著增加计算复杂度和模型复杂度,允许梯度在网络中有效传播.

图4 最大值池化索引结构

在设计的解码器结构中,如图5所示,通过反卷积、最大值索引上采样以及浅层轮廓信息复制这三种方式所得到的特征图,大小一致,通道数一致,在最后一个维度上进行拼接,得到后层的输入数据.最后再经过两层3×3卷积操作,使模型可以充分学习融合后的细节特征,提升网络的整体识别效率.

图5 上采样模块

4) 激活函数层设计.卷积操作之后加入的激活函数,可以将非线性的特性引入到神经网络中,让模型可以拟合出更加复杂的函数.本文采用的是leaky ReLU函数,其表达式为

(1)

其中ε是一个很小的常数,这样就可以使得输入小于0时也有一个小的梯度,解决了ReLU函数梯度死亡的问题.

2.2 Softmax归一化

实验中采用Softmax进一步操作,将网络结构输出的结果归一化到0~1之间的一个数值.这样,每个像素点输出的两个值均为介于0~1之间的数,且和为1,因此这两个值的大小表示了该像素点属于背景或者血管结构的概率.

设定阈值为θ,当经过Softmax后的值大于θ时则该值转为1,将该像素点分类为血管像素;反之小于θ时则该值转为0,将其分类为背景像素.本实验中,θ为0.5.因此,最终的结果数据为只包含0或者1的二值图像.取输出通道中第一个通道的结果,输出的黑白图像就是最终分割后的结果图像.

2.3 损失函数设计

本文设计损失函数时采用Dice损失与交叉熵损失结合的方式进行设计.并且为解决因样本量较少出现的拟合不足问题,在交叉熵损失函数中加入了代价敏感矩阵.总体的损失函数表示为

(2)

式中:D(·)表示Dice损失函数;W,b表示模型中需要训练的参数;x表示模型的输入值;y表示样本的标签值;p为模型的预测值;y(k)表示第k个样本的标签值;p(k)为第k个模型的预测值;m表示样本总数目;α为Dice与交叉熵损失之间的权重系数,实验中可使用BP算法对目标函数J(W,b,x,y)反向链式求解关于W和b的偏导数得到,取值在0~1之间.其中,交叉熵损失函数Lce的公式为

Lce=-∑ABC.

(3)

在神经网络模型中W的值越大过拟合现象越严重,因此在式(2)中加入L2正则化,可表示为

(4)

其中,λ表示正则化系数.该方法可以明显加快网络的收敛速度.经过一定次数的迭代,分割结果更接近真实值,网络模型参数收敛到最优值.

3 实验及结果分析

3.1 数据集扩充

DRIVE数据集中的眼底视网膜血管图像来自荷兰Niemeijer’s团队的糖尿病性视网膜病变筛查项目[8].筛查对象为400多名年龄在25到90岁之间的糖尿病患者.数据集总共有40张眼底图像照片,由佳能CR53相机拍摄,以JPEG的形式压缩和保存,图片像素大小为565×584.数据集被人工随机分成训练集、测试集两个部分,每部分有20张眼底视网膜图像.有两组医学专家对测试集中的视网膜血管进行了手工标注分割,在一组专家的分割结果中,血管像素占总像素的12.7%,称为集合A;在另一组专家的分割结果中,血管像素占总像素的12.3%,称为集合B.本文选用集合A中专家的标注作为参考标准.

考虑到训练集的数量太少,模型容易过度拟合,以至于分类性能较差.因此,需要进行数据扩充.本文采用的扩充方法分别为旋转、镜像、平移以及剪切等方法.具体步骤:首先对每张图像间隔30°旋转一次,然后进行镜像翻转操作,接着是分别向4个角平移20到50个像素点,最后对每张平移后的图像进行4次随机裁剪,共得到17 280张512×512大小的图像块.

3.2 图像预处理

视网膜血管的原始图像对比度低,血管特征不明显.为了提高模型的性能,本文采用图像对比度增强技术进行图像预处理.通过实验发现彩色视网膜图像的绿色通道血管与背景对比度最高.因此,预处理的第一步提取原始图像的绿色通道,第二步使用CLAHE算法[20]进行图像对比度提升,其原理为通过限制局部直方图高度来限制局部对比度增强幅度,从而限制噪声放大以及局部对比度的过度增强.处理过程中先将原图划分为若干个子块,对每个子块直方图设定阈值进行裁剪、均衡处理,然后对每一个像素点采用插值法进行灰度值重构.结果如图6所示.

可以看出,通过CLAHE算法处理后的图像对比度得到明显加强,原本大量聚集在0到10之间的像素值分布到更大的范围内.

经过预处理后的图像作为多尺度卷积核的U-Net 卷积神经网络的输入,进行模型的训练.

3.3 环境配置

本实验的硬件环境为型号i7-6700k处理器,16 GB的内存,使用型号为RTX2070S的GPU加速图像处理,卷积神经网络在TensorFlow1.4的开源深度学习框架下实现,使用Python编程语言,使用的编译器为Pycharm,另外还使用Numpy科学计算库、OpenCV中的图像处理的一些方法以及sklearn机器学习中的一些库.

3.4 模型训练

在模型的训练过程中利用随机梯度下降优化算法对网络进行迭代求解.训练轮数设置为100,批大小取20,每个训练轮数可以完成训练集中所有的数据的学习.初始学习率被设置为0.001,每20个训练轮数学习率变为当前的0.1倍,直到模型最终迭代完100个训练轮数时训练停止.学习率公式为

Ir=lr,s×0.1(f(n/N)).

(5)

式中:lr,s为初始化学习率,取值为0.001;n为当前迭代次数;N为学习率下降周期,取值为17 280;f为向下取整函数.最终算法运行的时间为60 h左右.

图6 CLAHE处理后的结果对比图

3.5 评价指标

本实验采用了3个评价指标来进行分析,其中S为灵敏性,衡量准确检测的属于血管像素的数量占真实血管像素数量的比率;T为特异性,衡量准确检测的属于非血管像素的数量占真实非血管像素数量的比率;A为准确率,衡量准确分类的像素数量占图像中总像素数量的比率.公式为

(6)

(7)

(8)

式中:PTP为真正例数,表示样本真实为正例,预测值也为正例;PTN为真负例数,表示样本真实为负例,预测值也为负例;PFP为假正例数,表示样本真实为负例,预测值为正例;PFN为假负例数,表示样本真实为正例,预测值为负例.在本文的模型中正例为血管像素,负例为背景像素.

3.6 结果分析

为了验证模型的有效性,将视网膜血管分割结果与U-Net模型进行了比较.考虑到实验的严谨性,实验中U-Net模型的训练采用了相同的训练图像、数据扩充和预处理的方法以及环境配置.图7为本文所提模型与U-Net模型对测试集中第1张视网膜图像的分割结果,其中第二排和第三排的图像是第一排的局部细节.可以看出,U-Net模型在微细血管的位置,所得结果存在分裂;密集的地方,所得结果存在错误识别的问题,如圆圈标识位置所示,错误地将背景像素检测为血管像素了.而采用本文所设计的模型则基本没有上述问题.这表明虽然U-Net模型可以检测到大多数视网膜血管,但微血管和密集血管的检测效果很差,本文提出的模型则具有较好的分类性能和探测更小血管的能力.因此,该模型在视网膜血管分割上的性能优于U-Net模型.图8展示了对测试集的全部分割结果.

为了进一步证明所提方法视网膜血管分割的性能,与其他几种现存方法进行了定量分析,表1中列出了2014~2020年的几种使用图像语义分割类的方法对DRIVE数据集中视网膜血管图像进行分割的评估指标对比.可以看出,本文方法的灵敏度为0.776 2,特异性为0.983 5,准确率为0.969 4;相比于U-Net,DeepVessel,Res-UNet和专家手工分割的结果(Human observer)在各项评价指标上均取得了更进一步的效果.而且,本文所提方法的特异性和准确率更是在表中排在首位,灵敏性方面可以与Deep FCN和R2U-Net相媲美,但分别低于DRIU 0.049 9,LadderNet 0.009 4,Dense U-Net 0.022 4,和DUNet 0.020 1.其中DRIU由于分割得到的图像含有大量的噪声,分割后的血管比真实的血管更粗,一些背景像元也被检测为血管像元,因此灵敏度高,特异度低.而本文模型利用Inception结构在多尺度下更充分地提取深层特征,接受域更大,可以很好地分割病理区域微细血管.除此,图像预处理、最大值上采样和加入了敏感矩阵的损失函数也做出了重要贡献.其余三种方法虽然在灵敏性的检测上相比本文取得了较好的结果,但是在视网膜血管分割方法性能的分析中,本文方法测得的较高准确率与之相比更有说服力,这证明了所提方法可以更好地对背景像素和血管像素进行分类,在DRIVE数据集上有较强的鲁棒性,相比现存其他方法具有一定的竞争力.

图7 本文所提模型与U-Net模型在测试集的分割结果对比

图8 对测试集图像的全部分割结果

表1 与其他方法在DRIVE上结果对比

4 结 论

本文提出了多尺度卷积核U-Net模型的视网膜血管分割方法.结合Inception模块设计出多尺度卷积核的特征提取结构,对不同宽度血管结构进行特征学习;在上采样过程中,融入了最大池化索引值,将深层语义特征、浅层轮廓特征以及采样图位置特征进行融合,增加了模型对视网膜血管特征的学习能力;在损失函数上,采用了将Dice损失和交叉熵损失结合并加入代价矩阵的方法,改善了图像中血管结构像素点数量与背景像素点数量不均衡的问题.并以灵敏性、特异性和准确率为评价指标在DRIVE数据集上进行了测试.结果表明,本文所提方法能获得比专家更好的分割结果,在这些评估指标上与其他现存方法相比是有竞争力的,具有应用于疾病早期诊断的潜力.

猜你喜欢
像素点视网膜卷积
基于全卷积神经网络的猪背膘厚快速准确测定
深度学习在糖尿病视网膜病变诊疗中的应用
如何防治裂孔性视网膜脱离
眼前有闪光、黑点、视物模糊,警惕视网膜脱落
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
基于局部相似性的特征匹配筛选算法
视网膜脱离能治好吗
一种X射线图像白点噪声去除算法