《利用眼底图像进行青光眼筛查的视神经盘感知组合网络》论文笔记

原论文: Fu, Huazhu , et al. "Disc-aware Ensemble Network for Glaucoma Screening from Fundus Image."IEEE Transactions on Medical Imaging(2018):1-1.

 

概述

青光眼是一种能够致盲的常见眼病,并且具有不可逆性。因此早期的诊断和治疗对于提高患者的生活质量有至关重要的作用。然而很多青光眼患者对自己的病情一无所知,因此青光眼被称为“无声的光明小偷”。

临床上,有三种方法可以检测青光眼。1. 眼压检测(intraocular pressure,IOP) 2. 基于功能的视野监测(function-based visual fifield test) 3. 视神经头(optic nerve head,ONH)评估。病理性高眼压是青光眼的一个普遍症状,然而也有极少部分青光眼患者眼压是正常的,有些高眼压症患者也不一定是青光眼。因此眼压检测并不能用来作为诊断青光眼的唯一依据。功能性视野监测需要特定的设备,并且有些青光眼患者在早期并没有视觉上的明显症状。

一种比较流行的ONH评估方式是基于一些临床指标的度量,比如杯盘比(vertical cup to disc ratio,CDR),即纵向视杯直径(vertical cup diameter,VCD)和纵向视盘直径(vertical disc diameter,VDD)之比。CDR越大,青光眼的风险越高。为了自动筛查青光眼,人们研究出了一些基于度量的方法,首先分割出主要的图像结构(包含视杯(optic cup)和视盘(optic cup)),然后计算一些度量参数值来判断。然而这些方法严重依赖于分割的精度,而分割的精度又容易受到一些因素干扰很难控制。

近年来基于学习的方法逐渐得到了发展,主要是学习眼底图像的各种可视化的特征,然后根据训练好的分类器来对青光眼进行筛查。根据提取的可视化图像特征,又可以挖掘出更多的相关信息,进一步丰富了临床数据。深度学习技术近年来被证明在很多计算机视觉的领域都取得了良好的成效,在医学图像分析领域也是如此。举例来说,卷积神经网络(CNNs)通过学习分层的特征,在眼底血管检测方面效果显著。在青光眼检测方面也有人开发了深度学习系统来直接鉴别青光眼。然而,这些方法主要集中在研究视盘区域有限的上下文信息,而忽视了整个眼底图像的全局信息。视盘区域的裁切也影响了筛查的准确度。

文中提出了一种青光眼筛查神经网络,命名为视神经盘感知组合网络(Disc-aware Ensemble Network, DENet)具备如下特点:

  1. 视盘感知:青光眼作为眼科疾病往往会导致眼压升高视神经受到损害,因此主要的临床特征会出现在视神经盘区域。因此文中提出的网络会着重强调视盘区域的上下文信息。
  2. 多层次:大部分已知的深度学习网络都集中在对全局图像进行处理,普遍的局限就是需要对图片进行降采样使得分辨率降低以保证计算上的可控性。然而,这样做会使得很多图像的细节信息会丢失,从而影响到模型的精度。因此把全局和局部区域的上下文结合起来就显得有必要了。
  3. 多模块:一些几何变换可以改变一些病态区域的形态学结构,从而提高检测率。一个例子就是视杯和视盘分割中,利用极坐标变换来平衡图像区域的比例从而分割出视杯。文中也考虑用这种变换来改善筛查准确率。

 

                                   

                                                                                             Fig.1

文中提出的DENet将图像信息分成全局图像和局部视杯区域两个层次。全局图像表示图像的粗略结构,局部视杯区域则学习视杯区域的精细表示。

模型

在全局图像层,数据流由两个神经网络构成。一个是标准的ResNet,一个是用来做分割的U-Net。

 

                                                                                                Fig.2

ResNet是基于卷积神经网络并在网络中添加了一些快捷连接来解决深层网络中梯度消失的问题(如Fig.3所示)。用ResNet-50网络作为框架来学习整个眼底图像的全局表示,由5个降采样的模块组成,每一个后面是一个全局最大池化层和一个全连接层,用来做青光眼筛查。输入图像转换成224×224的大小作为的初始化。

第二个全局层次的数据流是分割网络,用来定位视盘区域并分割表示出来。如Fig.3所示,分割网络的主架构是U型的U-Net网络——一种在生物医学图像分割领域效果十分突出的全卷积神经网络。和原始的U-Net结构相似,我们的做法也是由编码路径(左边)和解码路径(右边)组成。每个编码路径先是做一组卷积层的运算,生成一个特征编码图的集合,然后进行一个ReLU激活函数的运算。解码层同样用卷积层来输出解码的特征图。中间的快捷连接将特征图从编码路径传递到对应的上采样解码路径。最后,用一个1×1的带sigmoid激活函数的卷积层来进行像素级的分类,生成一个视盘区域的概率图。然后进一步,我们从U-Net网络中间的马鞍状部分扩展出一个新的分支,该部分的图像尺寸是最小的(i.e., 40×40)通道数也是最多的(i.e., 520-D)。这一分支后面连接一个两层的全连接神经网络,来作为一个青光眼的分类器。整个U-Net部分输入数据流的图像尺寸是640×640,稍微大一点,以保证细节部分足够清晰使得定位视盘部分更准确。

 

                                                                                              Fig.3

在全局级的网络里,定义了两个损失函数(Loss Function):第一个是作用在青光眼检测层的二值交叉熵函数,一个是用来评估视盘分割的Dice系数,其定义如下:

 

 

其中N是像素数,pi∈[0, 1]和gi∈{0, 1}分别表示视盘区域的预测概率以及正确标注(ground truth),后者是0或1的二值表示。对Dice系数的损失函数求导,得到如下梯度函数:

 

 

这两种损失函数可以有效结合,然后通过随机梯度下降法在网络中后向传播来训练系数。

文中分两个阶段来训练分割网络。首先,用像素级的训练数据通过Dice系数损失函数来训练U-net来检测视盘。CNN层的参数暂时不变,用来分类的全连接层用青光眼检测的训练数据来训练。这里之所以单独训练分割网络,而不是和其他网络一起训练,是因为:1)用视盘分割的数据来做筛查可以增加网络的多样性。2)视盘分割的像素级的带标签的数据要远比图像级的带标签的数据要昂贵。单独训练可以增加不同的训练数据集和网络参数(比如不同的batch大小和图像数量)。3)提取出来的视盘区域对接下来的数据流影响很大,因此视盘检测的精度要比分类更重要的多。

网络的第二个层次就是基于局部视神经盘区域的处理。局部视盘区域可以由分割网络的计算结果裁切得到,包含了更多的高分辨率的细节信息,有利于学习得到更好的描述。文中的网络使用了两种局部数据流来学习局部视盘区域的描述。第一种是标准的基于ResNet的分类网络(如Fig.2)。其他数据流则集中在视盘区域的极坐标变换上。

 

                       

                                                                                                Fig.4

在文中的方法里,应用像素级的极坐标变换将原图像转换成极坐标系。让p(u, v)来表示像素点在原笛卡尔坐标系上的坐标,p’(theta, r)代表这个点在极坐标系下的坐标(如Fig.4所示),r和theta分别代表半径和方向角。进行极坐标变换需要三个参数:视盘中心O(u0, v0),半径R和角度。极坐标变换映射的计算方式如下:

 

 

其逆变换为:

 

 

变换后极坐标图像的高和宽分别为R和2×pi/s,其中s是步长。进行极坐标变换有如下好处:

  1. 视杯和视盘区域通常都是近似于同心圆的结构,转换成极坐标后,由于插值的作用,视杯区域可以显示出更多的细节,如Fig.4。
  2. 由于这种映射是像素级的,因此极坐标变换相当于对原数据进行了数据增强。

视盘区域这两股数据流的输入大小转换成224×224,主要是方便作为预训练好的ResNet网络的初始化输入数据。在这里,用二值交叉熵来做为损失函数来对视盘区域进行青光眼的检测。

实验部分

  1. 数据集及量化评估准则

文中使用了三种青光眼筛查数据集, 第一个是ORIGA,包含了650张来自不同眼睛的眼底图像,其中168张是青光眼482张是正常眼睛,均人工标注了视盘边界。第二个数据集是Singapore Chinese Eye Study (SCES)数据集,包含了46种不同情况青光眼症状的1676张图像。第三个数据集是一个新的数据集,叫做Singapore Indian Eye Study (SINDI),由5783张图像构成,里面包含113张青光眼图像和5670正常眼睛的图像。三个数据集里只有ORIGA有人工标注的视盘边界,因此用ORIGA的数据来进行网络的训练,用SCES和SINDI数据集来进行测试。三个数据集的图像分辨率是3072×2048,裁切的视盘区域大小为800×800。

文中采用的量化评估标准是ROC和AUC曲线。

  1. 一些实现细节

整个框架是由Python + Keras,Tensorflow做后端。4个数据流训练所使用的数据都经过不同的数据增强策略进行增强,这样做主要出于三点原因:

  1. 视盘局部的数据流是基于全局数据流对视盘的检测结果的
  2. 每个数据流单独训练,一起整合的时候更方便
  3. 每个训练的数据增强策略不同,可以增加不同的训练数据集和配置。

对于全局数据流和分割网络,所做的图像增强是随机旋转(0/90/180/270度)以及随机的翻转。对于局部区域的数据流,所做的随机变换是随机旋转(0/90/180/270度)以及边界平移的裁切(±20像素)加上一些随机的翻转。对于视盘极坐标区域,将极坐标参数做如下随机的改动:角度旋转(0/90/180/270度),极坐标中心随机平移(±20像素),半径的改变(R = 400×{0.8, 1},注意是取值集合而不是区间)。训练过程中,采用随机梯度下降法(SGD)来求最优解。采用逐渐递减的学习率,初始位0.0001,动量(momentum)为0.9。所使用的ResNet-50网络使用在ImageNet上预训练好的模型参数作为初始值,每一层都已调好参数。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值