关键词:视网膜血管分割、卷积神经网络、多尺度、叉损失函数、条件随机场
本文提出了一种基于卷积神经网络(CNN)和全连通条件随机场CRFs的眼底图像视网膜血管分割方法。分割过程主要分为两个步骤。首先,提出了一种改进的交叉熵损失函数的多尺度CNN结构来生成图像间的概率图。结合各中间层的特征图构造多尺度网络,以获取视网膜血管的更多细节信息。同时,我们提出的交叉熵损失函数忽略了相对简单样本的最小损失,以便更多地关注难样本的学习。其次,利用CRFs得到最终的二值分割结果,该方法考虑到眼底图像中所有像素之间的相互作用,利用更多的空间上下文信息。在两个公共数据集上对该方法的有效性进行了评价。与包括五种基于深度学习的方法在内的11个最先进的学习方法进行比较。结果表明,该方法可以检测到更多的微小血管,并能更精确地定位边缘。
现有的分割方法可以根据是否使用了标注的ground truth,将其分为有监督的和无监督的两类。显然,无监督的方法是根据血管的固有特征设计的,而不是依赖于手工标记的map。这些无监督的方法在不使用基本事实的情况下,根据血管结构和一些先验知识检测视网膜血管时表现良好。
同时,监督方法从注释结果中学习规则提取视网膜血管。一般来说,这些方法大多依靠先验知识或一系列复杂的处理来获得鉴别特征。
卷积神经网络CNN在不需要先验知识和额外预处理的情况下,通过一些卷积和池操作自动学习层次特征。近年来,由于CNN的高效率,在计算机视觉、医学图像处理、模式识别等方面得到了广泛的应用[13,14]。
为了更有效地分割视网膜血管,本文提出了一种结合多尺度CNN和CRFs的监督图像对图像的视网膜血管分割系统。首先,我们使用多尺度CNN得到一个概率图。提出的CNN模型采用多尺度结构,融合了丰富的多尺度信息,用于血管特征的综合描述。同时,我们开发了一种改进的损失函数,用于强调硬实例,有效地检测小目标,克服不平衡问题。然后,为了平滑粗概率图,我们将CNN输出概率图定义为CRFs模型的一元势,得到最终的分割图。最后,我们对两个公共数据集进行了实验,并进行了性能评估,验证了分割效果。在这两个数据集上的结果表明,我们的方法在灵敏度和准确性方面优于大多数最近的方法。这项工作的贡献主要体现在CNN建设的两个方面。
该方法的流程图如图1所示。我们首先提出一个多尺度CNN来学习概率图。采用多尺度CNN结构,从彩色眼底图像中识别特征。同时,提出了一种改进的交叉损耗函数,以突出实例。此外,我们使用CRF来减少噪声和边缘模糊,从而细化概率图,得到最终的分割结果。上述步骤的细节如下。
2.1.1网络结构
所提出的多尺度CNN架构的框架如图2所示。我们的基本多尺度CNN结构来自于更丰富的卷积特征(RCF)[17],这是用于边缘检测任务的最新框架,它结合了完全卷积神经网络[18]和深度监督网络[19]的思想来检测图像到图像的边缘。
图2.提出的多尺度CNN结构。
RCF是从VGG16 [20]修改而来的。 VGG16由五个阶段组成。 每个阶段包含一些带有3×3滤波器的卷积层,不同的阶段通过2×2最大池化层连接。 随着网络层的增加,它可以学习更多的辨别特征来描述细长的血管结构。 但是,每个阶段都提供了有用的信息,这对于我们的分割工作是必不可少的,因为浅层提取更多细节,深层提供更多抽象信息。
除了增加网络的深度以获得歧视性信息外,还应利用所有中间层的信息。RCF利用多尺度信息,将每个中间层的特征映射合并到输出中。他们首先在每个中间卷积层之后添加一个21x1x1卷积运算,然后在每个阶段用一个1x1x1卷积运算融合这些特征。最后,将每个阶段的map上采样到原始大小,连接到相应的侧输出,或者融合到最终输出的feature map中。通过这种方式,RCF充分利用了多尺度、多层次的丰富信息。此外,随着卷积层的增加,这些特征变得过于抽象,无法表达有意义的血管结构[16]。我们采用四阶段网络结构来处理视网膜血管分割。
2.1.2改进的交叉熵损失函数
血管像素和非血管像素严重失衡,因为只有10%的像素是一个眼底图像的视网膜血管。 如果损失函数不考虑样本平衡问题,则学习过程将倾向于分割大部分非血管。 我们采用类平衡交叉熵损失函数来解决不平衡问题如下:
略
由于CNN既没有充分考虑空间上下文信息,也没有考虑可能导致噪声像素和假边缘像素的平滑因子。相比之下,完全CRFs不仅使用一元势和成对势,而且还考虑到每个像素之间的相互作用。它既考虑空间上下文信息,又考虑平滑项。已有研究证实,CRFs具有良好的平滑边界和消除杂散区[21]的能力。引入CRFs对分割结果进行细化。
DRIVE包含在45°视场(FOV)下获得的40幅图像,分辨率为565×584像素。 选择它们的20个图像作为训练集,并且将另外20个图像用作测试集。 每个训练图像都有一个由专家分割的ground truth。 每个测试图像都有两个手动分割结果,由两个专家分割,第一个作为ground truth,另一个作为第一个手动结果的金标准。
STARE包含20幅35°FOV图像,分辨率为700×605像素。 所有图像都有两个手动分割结果。 第二位专家比第一位专家更关注薄血管。 通常选择第一个作为ground truth,而选择第二个作为人类分割的金标准。
基于RCF框架,利用Caffe实现了多尺度CNN的实验。参数由VGG16模型初始化,配置遵循RCF。在训练阶段,我们每2000步降低学习速度,并将最大迭代次数设置为6000步,以保证收敛性。实验是在配置了两个Intel Xeon E5-2650 cpu和8个NVIDIA GTX1080 GPU显卡的硬件上进行的。
由于STARE数据集没有单独的训练集和测试集,所以在训练阶段只使用DRIVE数据集提供的20张训练图像。为了保证有足够的训练图像,我们首先将原始图像缩放到0.5和0.75度。然后旋转90°180°270°后再翻转。这种方法可以将训练图像放大24倍。最终用于训练的数据是480张放大后的图像。在DRIVE和STARE两个数据集上对该方法进行了性能评价。
训练过程包括两个阶段。一是通过网络学习概率图,二是通过全连通条件随机场得到最终的二值分割结果。本文所有基于caffe框架的卷积神经网络实验只使用了一个GTX1080
GPU。全连通条件随机域的实现基于[22]中公开的源代码。此外,通过网格搜索得到了CRFs的参数。每个训练阶段使用一张GPU卡大约需要10个小时。
为了找到适合改进损失函数的参数,我们分析了基卷积神经网络的概率分布,分别计算了血管和非血管在每个概率值上的误分类像素的比例。图3 (a)中的横轴为概率值,纵轴为该概率值下误分类血管像素数与所有血管像素数之比。相应的,图3 (b)显示了误分类的非血管像素数与所有非血管像素的比值分布。
图3.在每个概率值上,血管和非血管的误分类像素比的分布
如果一个像素的概率足够接近真实值,改进的损失函数将忽略该像素的损失。从图中可以看出,概率值小于0.9的血管像素可能存在分类错误。为了保证假阴性像元不增加,只有当血管概率值不小于0.9时,才可以忽略其损失。因此,λ1不能小于0.9。概率值大于0.7的非血管像素可能被误分类。同样,为了确保假阳性像素不增加,其损失可以忽略只有当无船概率值不大于0.7,因此,λ2不能大于0.7。
此外,我们分析了具有不同参数值的血管和非血管概率分布的变化,以便找到最合适的参数。 从图4可以看出,当λ1= 0.9时,血管概率的分布不会移动到小于0.9的一侧,并且非血管概率的分布不会移动到大于0.7的一侧。 因此,将λ1设定为0.9是合适的。从图5和6中,可以看出,当λ2= 0.1时,几乎没有向侧面移动可能导致错误。 当λ2设定为0.2,0.3或0.4时,血管和非血管概率分布总是移动到小于0.9的侧面或大于0.7的侧面。 这可能会增加错误的数量。 此外,当参数大于0.4时,这种现象更严重。 因此,我们将λ2设为0.1。
图4.当λ1= 0.9时血管和非血管的概率分布。 蓝色代表概率分布而没有任何改进,红色代表概率分布,λ1= 0.9
图5.不同λ2的血管的概率分布。 蓝色代表概率的分布而没有任何改进,红色代表具有不同λ2的概率分布。
图6.不同λ2的非血管的概率分布。 蓝色代表概率的分布而没有任何改进,红色代表具有不同λ2的概率分布。
各种评估指标用于评估我们的方法的性能。每个像素都可以正确分割或不正确分割,因此分割结果包含四种情况:真阳性(TP)、假阴性(FN)、真阴性(TN)和假阳性(FP)。如果检测到ground truth中标记的血管像素为正确的血管,则将其定义为TP,否则为FN。将分类正确的非血管像素定义为TN,将分类错误的非血管像素定义为FP。此外,真正的阳性率(TPR)是正确检测到的血管像素的比值。假阳性率(FPR)表示被误分类为血管像素的非血管像素的比值。
在所有的实验中,性能评估都是对FOV区域内每个像素的分类精度进行统计分析。因为STARE数据集不提供FOV图像,所以使用Hoover等人提供的代码[24]获取FOV图像。我们通过敏感性(Se)、特异性(Sp)、准确性(Acc)和(AUC)四个指标来评估其性能。前三个指标分别反映了血管像素、非血管像素和所有像素的分割能力。
表1中以Se,Sp,Acc和AUC表示DRIVE和STARE数据集的性能,第二个观察者结果作为参考。 由于难以判断一些像素,不同专家之间的这些像素的分割结果存在差异。 我们使用第一个观察者结果作为基本事实,将我们的分割结果与第二个观察者结果进行比较。 我们的方法的性能与DRIVE数据集上的第二个专家分割结果相当,各种评估指标的差异很小。 但是,我们的细分结果与第二个专家在STARE数据集上的结果之间存在一些差异。 由于第二位专家更关注细小的血管,他的分割结果具有更高的灵敏度。 然而,我们的细分结果在特异性和准确性方面更具竞争力。 这意味着我们的方法具有较低的假阳性率。
DRIVE和STARE数据集的分割视觉效果分别如图7和图8所示。我们为每个数据集选择了两幅图像,一幅是健康图像,另一幅是病变图像。我们的方法忽略了许多细小的视网膜血管,这些血管在临床诊断中通常被认为不那么重要。然而,从图7和图8中我们发现,尽管存在低对比度的[1]和细长的[10]血管结构,我们提出的方法仍然分割了大部分视网膜血管。具体来说,我们的分割结果显示,在两个数据集的病变区域良好的性能。
图7所示。DRIVE的分割结果。第一行和第二行分别显示健康图像和病变图像的分割效果。(a)彩色眼底图像。(b)分割结果为彩色眼底图像,绿色、蓝色和红色分别代表TP、FP和FN。©概率图。(d)二值分割结果。(e)ground truth。
图8所示。STARE的分割结果。第一行和第二行分别显示健康图像和病变图像的分割效果。(a)彩色眼底图像。(b)分割结果为基底色图像,绿色、蓝色和红色分别代表TP、FP和FN。©概率图。(d)二值分割结果。(e)ground truth。
图9显示了局部区域的一些视觉比较图像,其中第一行显示交叉处的血管边缘,第二行显示低对比度区域中的微小细血管。 如图9所示,基础结构未能检测到血管的某些细节。 然而,我们的方法通过使用更多关注硬样本的多尺度信息和损失函数在一定程度上改善了这些细节的分割结果。 当血管分支太接近分离或对比度不够好时,我们的方法表现良好。 为了评估不同改进的影响,我们以多种方式分析改进的影响。
Fig. 9. Comparison of the segmentation effects. (a) The fundus images. (b) The local fundus images. © The Ground truths. (d) The segmentation results with multiscale CNN and improved loss function. (e) The base results.
为了验证多尺度CNN结构的有效性,我们进行了一些有细化和无细化的实验。比较结果见表2和表3。表中从上到下分别列出了多尺度结构改进前后,结合不同损失函数的性能结果。
我们经常增加网络的深度,以便为我们的任务学习更多有辨别力的信息。然而,在我们的血管分割任务中,各个尺度、各个层次提取的信息是必不可少的。尤其是低水平的信息有利于细节的检测,高水平的特征对血管结构的识别贡献更大。因此,多尺度信息的融合有助于更好地分割细长的[10]血管结构。我们已经在图10中绘制了包含和不包含多尺度信息的图像的概率分布。横轴表示概率值,纵轴表示位于概率值处的像素数。理想的分割结果是,血管和非血管的概率分别集中在1和0值。从图10可以看出,多尺度网络的概率值更多的集中在两端,这使得概率图的对比度更好,可以区分血管和非血管。
图10所示。中间值之间的概率分布
见表2和表3
提出新的损失是为了加强对概率值不真实的难算例的学习。分割任务的最佳情况是概率值非常接近真实值,而在最坏的情况下,概率值与真实值相差甚远。因此,两端的样本不需要太多的关注,我们只分析位于0.2到0.8之间的值,这些值很容易被CRFs误分类。如图11所示,使用我们的损失函数所提出的方法中间像素更少。虽然这种改进对于最终的二值分割结果的改进不是特别显著,但它确实在一定程度上减少了中间区域的概率值的数量。
图11所示。中间值之间的概率分布。
尽管上面给出了损失函数改善之前和之后的评估指标的比较结果,但仅仅通过评估指标证明效果是不够的,因为难实例占一个眼底图像的一小部分。 因此,我们提供一些代表性的视觉图来说明改进对难实例的影响,如图12所示。从图中可以看出,TP(绿色区域)的改善损失更好。 同时,边缘区域也有一定的改善。
图12所示。局部视觉效果有无功能改善的比较。绿色代表TP,红色代表FN,蓝色代表FP。第一行列出了没有改进损失函数的结果,第二行是有改进损失函数的结果。
我们将性能与包含监督方法和无监督方法的一些最先进的方法进行比较,包括Se,Sp,Acc和AUC。 如表4和表5中所列,对于DRIVE数据集,Se,Sp,Acc和AUC分别为0.7772,0.9793,0.9533和0.9759,对于STARE数据集,分别为0.7543,0.9814,0.9632和0.9751。
我们的方法受到Fu等人[16]的启发。他们提出了两种结合深度学习和条件随机域的分割方法[16,29]。Fu等人在[29]中提出了一种比[16]更好的视网膜血管分割方法。然而,该分割方法的灵敏度仍有进一步提高的空间。从表4和表5可以看出,我们的方法在灵敏度和准确度上对两组数据集都取得了较高的评价结果。事实上,我们发现这些改进是通过正确地检测边缘和细小的血管来实现的
表6中给出了深度学习和非深度学习方法的分割时间的比较。深度学习方法分为基于patch的或基于图像的方法。 其中,基于图像的方法一次分割一个图像,基于patch的方法仅对patch进行操作。 对于深度学习方法,比较方法的测试时间用于评估计算复杂性。 从表6可以看出,我们的图像到图像方法花费1.1s来获得分辨率为565×584像素的一个测试图像的概率图。 除了Fu等人的[16]方法,我们的方法不仅明显优于非深度学习方法,而且在分割效率方面也比基于patch的方法有很大的优势。
结果表明,该方法具有良好的分割效率和有效性。然而,对于某些特殊情况,仍然存在一些限制。虽然我们试图对这些硬标本进行鉴别,但由于病变区域的影响和微小薄血管的低对比度,仍存在一些误判。这种情况直接导致了灵敏度低,这是目前方法的普遍问题。
由于现有的基于CNN的图像-图像视网膜血管分割方法未能找到一些细节和血管边缘和细小血管等硬性实例,本文提出了一种新的视网膜血管分割方法,将多尺度CNN与改进损失函数和CRF相结合来检测更多细节和硬性示例。两种改进都在一定程度上优化了分割的性能。一方面,多尺度方式通过结合丰富的多尺度信息来检测更多细节。另一方面,改进的交叉熵损失功能旨在通过忽略相对容易的样本的最轻微损失来更多地关注硬实例。这种方式再次优化了硬样本的分割性能。此外,采用CRF来弥补CNN全球空间信息的不完整考虑。最后,两个公共数据集的定量结果和视觉效果表明,我们的方法达到了最先进水平,在检测血管边缘和微小血管方面表现更好。
在我们的方法中,提出的损失函数是一种硬截断的方法。虽然对于视网膜血管分割任务效果不明显,但这一思想值得研究。在今后的研究中,我们将重点探索一种更有效的损失函数来检测硬例子。