基于人工智能算法的视网膜血管分割方法实例

二、基于人工智能算法的视网膜血管分割方法实例

(一)基于U-Net的视网膜血管分割方法流程

本实例采用基于人工智能算法的视网膜血管分割方法,总体流程见图6-2。首先,将训练集的眼底图像进行预处理,预处理步骤大致包含归一化处理和数据扩增。归一化的目的是增强血管和背景的对比度。由于医学图像的复杂性,前景与背景之间往往很难划分边界,需要通过传统图像处理步骤来完成归一化,包括通道变换、直方图均衡化和伽马校正。接着对预处理图像进行数据扩增。由于数据稀少,对数据进行扩增是必要和有意义的。数据扩增的步骤包括随机采样小图像块再拼接成相同大小的完整图像。由于包含了随机性,数据扩增而来的图像可被认为是一张新图像。通过扩增训练集中图像的数量,可以提高模型的鲁棒性和泛化性,保证训练过程的稳定性,避免训练过程中的过拟合。最后将预处理数据送入分割网络训练,在训练迭代过程中,监督损失变化和保存网络参数,预测过程中使用最优损失模型对测试图像进行预测以评估模型的血管分割能力。

图6-2 基于人工智能算法的视网膜血管分割方法流程

在训练网络阶段,选用基于U-Net的分割网络。

U-Net在2015年ISBI cell tracking比赛中获得多项第一,主要针对医学图像。同时,U-Net结构简单,参数量小,因此特别适合于小数据量的医学图像分割领域。

(二)数据集

本实例在3个公开数据集上验证方法性能,分别是DRIVE、CHASE_DB1、STARE,每个数据集都包含高质量的眼底图像以及对应的精细分割标签。

DRIVE数据集包含40张像素大小为768×584的彩色眼底图像,来自荷兰的一个糖尿病视网膜病变筛查计划。从400名25~90岁的糖尿病患者的拍摄图像中随机挑选40张样本构成DRIVE数据集,每张图片都是使用佳能CR5非散瞳3CCD相机以45°视场拍摄的,其中33张不包含任何糖尿病视网膜病变的病理特征,另外7张包含早期糖尿病视网膜病变的轻微病理特征。该样本集合被分为训练集和测试集,分别包含20幅图像及对应标签和掩模图像,其中训练集包含1个人工分割标签,测试集包含2个人工分割标签。

CHASE_DB1由28张像素大小为1 280×960的眼底图像构成,该数据集来自英国儿童心脏与健康研究,该研究旨在发现视网膜血管与心血管疾病的早期危险因素之间的关联。每张图片使用Nidek NM-200-D眼底照相机以30°视场拍摄。本实例对28张图像进行划分,14张图片以及对应标签为训练集,其余则构成测试集。

STARE包含20张像素大小为700×605的图片。每张图片以35°视场拍摄。由于该样本集合没有划分训练集和测试集,本实例使用数据的前一半作为训练集,其余作为测试集。

(三)眼底图像的预处理

由于医学图像的复杂性和特异性,高质量的医学图像分割标签很难获得,因此,上述3个小数据集很难满足深度神经网络的训练需要,所以对训练图像进行数据预处理是有必要的。为了突出血管和背景的对比度,通过如下步骤进行图像归一化(图6-3)。

(1)将原始RGB眼底图像转换为单通道图像。

(2)对全量数据集进行均值方差归一化。

(3)对步骤(2)所得图像采用对比度受限的自适应直方图均衡化以增强前景与背景的对比度。

(4)对步骤(3)所得图像采用伽马校正以进一步提高图像质量。

如图6-3所示,图6-3d和图6-3e的血管和背景区域的对比度更高,血管的边界更加清晰,同时在中心黄斑区域血管末梢表现出更多细节,通过伽马校正,e比d在灰度分布上更加均衡。

图6-3 眼底图像预处理

(四)眼底图像数据扩增

由于实际中获取的数据集中带标签的图片数量有限,因此需要对训练数据进行数据扩增来满足训练需要,同时保证模型的鲁棒性。具体做法是在每张图片上随机采样小图像块作为训练数据,如图6-4所示,其中图6-4a是原始图像数据扩增后的训练数据样本,图6-4b和图6-4c分别为其预处理后的训练数据样本和训练标签样本。每个数据集都分为训练集、验证集和测试集。对于DRIVE数据集,将使用20张图片进行训练和验证,其余图像用于测试。由于STARE和CHASE_DB1数据集没有预先划分为训练集和测试集,因此将其中的一半随机分成训练集、测试集。在训练期间,为每个图像随机采样1 000个小图像块。每个小图像块的大小为64×64,训练集与验证集之比为8∶2。在测试阶段,将测试图片采样成小图像块预测并将预测结果拼接成原图。

图6-4 眼底图像数据扩增

(五)模型训练

对数据集进行预处理和数据扩增后,将训练数据集以8∶2的训练/验证比例输入U-Net网络进行训练,U-Net网络具体的结构见图6-5。在训练阶段,设置batch为8,共训练50 epochs,采用Adam作为优化器,初始学习率设置为1e-3,学习率调整策略为多步学习率。具体做法是在网络训练到某一特定轮数时将学习率乘以一个衰减因子,一般衰减因子设为0.1,在网络训练到一定程度后,训练损失可能在继续训练很多个epochs后都不会发生明显下降,表明网络此时可能陷入局部训练瓶颈,考虑将学习率乘上衰减因子加速梯度下降过程。本次的学习率调整轮数设置为20和35,采用医学图像分割领域常用的交叉熵损失(Binary Cross Entropy Loss,BCE Loss)和Dice Loss的联合损失作为损失函数,损失函数定义公式(6-1)如下:

式中,o代表网络输出,t代表标签图,由于Dice Loss在极端情况下会产生训练不稳定的情况,故加入BCE Loss损失函数辅助网络前期训练。

图6-5 U-Net网络结构

(六)测试(临床)图像输入

输出分割模型后,将DRIVE、CHASE_DB1和STARE三个数据集中的测试集输入U-Net模型进行分割。表6-1为三个数据集的血管分割评估结果。

准确率(ACC)、敏感性(SEN)、特异性(SPE)、F1值和AUC在上一章节进行了介绍。特异性代表被正确检测的负样本的像素个数占所有相关样本个数的比例,在本实例中体现的是检测所有非血管像素即背景像素的能力。在理想情况下,敏感性和特异性都可以达到1,即所有正、负样本都被正确识别。但在现实情况下,敏感性往往表现比特异性差,在一张图片中充斥着大量负样本,负样本的特征往往比较简单,模型将负样本判为正样本的概率较小。而由于训练的模型往往不是最优的,因此模型对正样本的判别能力有所欠缺,将正样本判为负样本的概率较大。在血管分割任务中,血管像素所占比例很小,导致正、负样本比例不平衡,此时敏感性更具有代表意义,因此,血管分割算法应当尽可能减少假阴性从而提高敏感性。因此添加精确率(PR)作为评估结果。精确率(PR)反映的是被检测为正样本的像素实际为正样本的概率。

表6-1 不同数据集的血管分割评估结果

图6-6具体展示了部分分割结果,图6-6a代表原图,图6-6b代表真实标签,图6-6c代表U-Net的分割结果。

图6-6 U-Net网络分割结果