李孟歆 徐 睿 张天慧 陈 莉 郝佳丽
1(沈阳建筑大学信息与控制工程学院 沈阳 110168)
2(沈阳建筑大学建筑设计研究院 沈阳 110015)
眼睛作为人感知世界的重要组成部分,与我们的工作、学习、生活密切相关。但一些疾病常常会导致眼部并发症,严重的甚至会造成失明,因此通过分析视网膜图像辅助医生来进行眼部早期诊断和监测具有重要意义。例如,糖尿病视网膜病变(Diabetic Retinopathy,DR)是由糖尿病引起的微血管眼部并发症。这种疾病依照严重程度分为 2 型 4 期[1],其中 1~3 期是症状较轻的非增殖型,表现为视网膜内出现微动脉瘤、血点血斑、硬性和软性溢出物;而 4 期是增殖型,症状表现为新生血管、玻璃体出血、乃至视网膜脱落,由该病引起的致盲风险是非糖尿病患者的 25 倍[2]。为了更充分地了解和保护眼睛,从 20 世纪开始,视网膜血管分割的研究就成为了医学图像分割的热点。
考虑到视网膜图像的部分血管细微,且边界模糊,依靠医生人工分割的传统方法费时费力,所以许多学者从多个方向对视网膜血管进行了分割。主要可分为监督学习和无监督学习两类:(1)监督学习是依靠人工标记的血管分割图像训练模型,随后利用训练好的模型进行分割。早期,监督学习包括基于支持向量机[3]、随机森林模型[4]、高斯混合模型(Gaussian Mixture Model,GMM)[5]等分类器的血管分割方法。近几年,随着人工智能的兴起,通过基于深度学习的方法进行视网膜血管分割成为热点。例如,卓钟烁等[6]提出基于多尺度的卷积神经网络视网膜血管分割,对同一层卷积层设计不同尺寸卷积核多尺度提取特征,同时拼接浅层和深层的信息进行特征融合,以此来提高分割精度。除此之外,还有许多基于 U-Net 改进后用于医学图像处理的方法[7]。(2)无监督学习的方法是指在不设置标签、没有人工标注的情况下进行图像分割。例如,早年 Chaudhuri 等[8]研究视网膜血管特性,专门设计了分割视网膜血管的二维高斯匹配滤波器。Yin 等[9]提出一种血管跟踪的方法,通过利用血管的连续性特征以及统计局部灰度信息拟合血管结构,再应用贝叶斯方法识别血管结构,该方法对于血管边缘有较高的贴合性。许言兵等[10]首先借用自适应简单线性迭代聚类(Adaptive Simple Linear Iterative Clustering,ASLIC)进行超像素分割,再依靠仿射传播聚类分别聚类血管和背景,达到分割血管的目的。
但无监督学习易受噪声影响,而监督学习的方法对细小血管分割性能较差,且基于卷积神经网络的方法由于卷积和池化带来的信息丢失,容易出现边缘细节粗糙等问题。针对这些缺陷,本文提出一种结合生成对抗网络(Generative Adversarial Networks,GAN)和超像素分割的视网膜血管分割方法。该方法利用 GAN 较准确的分割结果和超像素分割时较好的边缘贴合效果,通过将 GAN 的血管输出结果映射到超像素图上对像素块进行分类,以达到分割的效果。
为了使分割的效果更好,需要对视网膜图像进行预处理[11]。首先提取视网膜血管的绿色通道,之后利用限制对比度自适应直方图均衡算法(Contrast Limited Adaptive Histogram Equalization,CLAHE)和基于 Retinex 的去雾算法,增强视网膜血管结构,最后使用 BM3D 对图像平滑去噪,结果如图 1 所示。
2.2.1 SegAN
生成对抗网络是 Goodfellow[12]于 2014 年提出的一种用于生成新模型的神经网络框架,由于其在生成图像方面的出色性能,被广泛应用于计算机视觉的各个领域中。在此基础上,2017 年 Xue 等[13]提出了首个用于医学图像分割的对抗网络 SegAN,以脑部磁共振成像(MRI)影像为模板进行脑肿瘤的图像分割。
SegAN 是一个端到端的网络结构,主要由分割器(Segmentor)和评估器(Critic)两个网络模型组成。Segmentor 网络模型是一个全卷积的编解码网络结构,利用 4×4 的卷积核以 2 个 Stride 进行下采样,3×3 的卷积核进行上采样,同时参考 U-Net 网络在编码器和解码器之间添加跳跃结构。Critic 网络模型与 Segmentor 网络解码器结构相似,但它的输入由 2 部分组成,第 1 个输入是原始图经过 Segmentor 的输出作为掩膜后得到的图像,第 2 个输入是原始图利用专家分割的图像进行掩膜后得到的图像。Critic 网络通过计算每个卷积层输出特征图像的 L1损失,来获得不同分辨率像素之间的特征关系。依靠 Segmentor 与 Critic 网络间的相互对抗,分别固定轮流训练,使得对 Critic 取得最大损失,而对 Segmentor 取得最小损失。其中 L1损失如公式(1)所示:
图 1 图像预处理Fig. 1 Image pre-process
2.2.2 改进的 SegAN
感受野表示的是网络内神经元对原图像感知范围的大小。由于传统的卷积核较小且紧密,所以感受野也较小。扩大卷积核,虽然能扩大感受野,但会造成参数的倍增。为解决该问题,Chen 等[14]提出一种通过在卷积核参数之间填充 0 来扩大图像感受野的空洞卷积,由于不增加参数数量,所以在获取更多细节的同时,不会提升计算复杂性。 空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)最早在 DeepLab v2 中被提出,主要是用于多尺度特征的学习,随后在 DeepLab v3 中进行了改进,改进后的 ASPP 模块如图 2 所示。其结构可以分为:(1)3×3 的空洞卷积,空洞率分别是 0、6、12、18;(2)全局平均池化层(Image Pooling)。之后将这 5 个输出进行连接,利用一个 1×1 的卷积层减少通道数。ASPP 模块采用不同空洞比率的并行空洞卷积,对图像进行多尺度的特征提取,通过特征融合可以得到多尺度信息。
图 2 DeepLab v3 中的 ASPP 结构Fig. 2 ASPP structure of DeepLab v3
为了提升对眼部图像中细小分支血管的分割精度,本文在传统 SegAN 模型基础上进行了改进,提出一种包含 ASPP 模块的 SegAN 网络,其网络结构如图 3 所示。具体地,在 Segmentor 的编码器和解码器之间增加一个 ASPP 模块,通过并行的 4 个空洞卷积以及平均池化后,再经过 1 个通道数为 1 024 的 1×1 卷积层,之后进行解码,Critic 部分则没有做改动。
图 3 改进的 SegAN 网络结构Fig. 3 The network structure of the improved SegAN
利用改进后的 SegAN 得到的视网膜血管分割结果如图 4 所示。可以看到,利用 GAN 进行视网膜图像的血管分割,对于血管末梢和分支的分割效果较好,但同时也存在少量的噪声以及分支之间存在空隙等问题。
图 4 基于 SegAN 的视网膜血管分割结果Fig. 4 Retinal vessel segmentation result based on SegAN
超像素分割是指将具有相似纹理、颜色、亮度的像素点,聚合在一起形成像素块进行图像分割的方法。线性谱聚类(Linear Spectral Clustering,LSC)超像素分割算法在 2017 年由陈建生等[15]提出。该算法通过研究加权 K-means 和 Ncuts 间的一致关系,使像素点 m、n 同时具有 K-means 和 Ncuts 的特点,即相似度 W(m,n)同时满足公式(3)~(4):
加权 K-means 的目标函数 Fkm和 Ncuts 的目标函数 FNcuts是等价的,此时的等价函数如公式(5)所示。再利用设计的核函数 φ(m) 将像素值映射到十维特征空间,此时每个点都是多维向量,将这些像素点进行聚类即可达到分割效果。需要注意的是,由于经过预处理后得到的视网膜血管图像是灰度图像,所以 LSC 中 l、a、b 的数值改为采用灰度值 g 进行计算,其公式如(6)~(7)所示:
由 SegAN 处理的视网膜图像,有着较高的分割精度,但由于卷积操作,图像的轮廓信息不可避免地会有所丢失。而 LSC 超像素分割算法有着边缘贴合性高、连通性好、轮廓清晰的优点,从图 5 结果可以看到,即使是血管的末端与背景也有明显的分割线,血管末梢的边缘轮廓也较为清晰。所以,结合超像素分割较好的细节效果来对 SegAN 的分割效果进行优化。
图 5 超像素分割图Fig. 5 Superpixel segmentaion chart
无论是 SegAN 还是 LSC 超像素分割,都是对原视网膜图像进行处理,输出结果也与原始图像大小一致。因此这里采用映射的方法,在 LSC 进行图像分割时,将 SegAN 的血管分割图像同时输入,对种子点进行判别。如果该像素块种子点对应的 SegAN 输出图像上是白色的血管图像,那么该像素块输出白色,反之,该像素块输出黑色背景图像。具体流程为:(1)对原始图像进行预处理;(2)利用增加空洞卷积的 SegAN 对视网膜图像进行分割;(3)设置种子点数量 N,对预处理后的图像进行 LSC 超像素分割,得到 N 个像素块,每个像素块会标记相同的标签 L(N);(4)将 SegAN 输出的黑白图像映射到超像素分割图像上,通过种子点对同标签的像素块进行分类,输出完成图像。
本文所用实验材料为国际上公开的视网膜图像数据集 DRIVE。该数据集中有 40 张像素大小为 584×565 的眼底视网膜图像以及 2 位专家的真实分割图。基于 SegAN 的视网膜血管分割是在 Win10 系统 Tensorflow 框架下实现,硬件配置为 Inteli7-9700 CPU 和 NVIDIA RTX 2060S。图像预处理及其他后续操作都是在 MATLAB R2016b 上进行。
为了更客观地评价本文方法对视网膜血管分割的效果,采用 3 个评价指标:准确度(Accuracy,Acc),用于衡量正确分类的像素数目占总像素数目的比例;灵敏度(Sensitivity,Se),用于衡量正确分割的血管图像像素数目占实际血管像素数目的比例;特异性(Specificity,Sp),用于衡量正确分割的非血管图像像素数目占非血管像素数目的比例。其公式如(8)~(10)所示:
采用 GAN 和超像素分割的方法进行视网膜血管分割结果如图 6 所示。图 6(a)为 DRIVE数据库测试集原图;图 6(b)为基于改进后的 SegAN 的血管分割结果;图 6(c)为本文结果;图 6(d)为真实数据。
表 1 关系示意图Table 1 Relation diagram
从图 6 可以明显看出,结合超像素方法的血管分割在边缘纹理上都有着较好的分割效果,对于一些血管分支的不连续性,也通过像素块连接了起来,血管的整体轮廓更好;对于一些 GAN 分割出现的噪声,也因为稀疏直接被抹去。但同时也发现,该方法过于依赖 GAN 的分割效果,由于少量分支血管与主干距离空隙过大,未能映射到种子点,无法彻底解决不连续性的问题,并且极少量的极细血管分支在预处理后被模糊化,导致超像素分割时被忽略抹去。
表 2 列出了近几年利用 DRIVE 的分割效果指标,以及本文方法的性能指标。从表 2 可以看出,本文方法在保证分割准确度的情况下,能够更好地提取血管部分。结合超像素方法后,本文方法在灵敏度和准确度方面有了一定程度的提高,但由于超像素分割对于极少量极细血管的忽略,影响了视神经密集处的像素块分类效果。而在特异性方面,与 GAN 方法相比,本文方法并没有体现出优势。
表 2 不同方法在 DRIVE 上的评价结果Table 2 Segmentation evaluation of different methods on DRIVE
需要注意的是,经反复实验验证,本文方法仅适用于处理正常的视网膜图像,或者普通的非增殖型糖尿病视网膜病变图像。对于血点血斑、硬性和软性溢出物过多的非增殖型或者病情更严重的增殖型糖尿病视网膜病变图像,当病变组织处于血管上时,LSC 算法的边缘纹理贴合效果较差,分割结果并不理想。
本文提出一种新的视网膜血管分割方法。首先改进 SegAN,融入 ASPP 模块后扩大了网络的感受野,以便捕获多尺度图像信息。之后利用改进的 SegAN 对血管进行提取,得到了具有较高准确度的分割图像。借用线性谱聚类超像素边缘贴合性高、计算速度快、分割效果好的优点,将 SegAN 的分割结果映射到超像素分割图上,对像素块进行分类。实验证明该方法对于血管的提取与分割有着较好的效果。对于增殖型糖尿病视网膜病变图像,以及普通视网膜图像中少量细血管分支不连续性问题则需要进一步的研究。
图 6 分割结果Fig. 6 Segmentation result