论文阅读——SD-Unet: A Structured Dropout U-Net for Retinal Vessel Segmentation
一种结构化随机失活UNet用于视网膜血管分割
from BIBE2019
Abstract
目前眼底疾病的人工视觉诊断一方面人工阅读效率低下,另一方面存在较大主观性,容易导致无检测。而眼底视网膜血管的自动分割对于一些疾病(如糖尿病、高血压)的早期诊断十分有效。因此本文则基于UNet结构获得视网膜血管的局部特征,并完成了端到端的血管分割任务。 灵感主要来源于针对卷积层提出的正则化方法(drop block),替换掉了传统卷积的dropout层而是使用结构化的随机失活来正则化UNet,因此称之为Structures Dropout UNet(SD-UNet)。
Section I Introduction
根据视网膜血管的不同结构可辅助诊断多种疾病,比如高血压或糖尿病。比如高血压引起的高血压性视网膜病变,会引起血管曲率增加、血管变窄;而由于血糖升高引起的糖尿病性视网膜病变伴随着视网膜血管的肿胀。因此从眼底图像进行视网膜血管分割可以帮助眼科医生检测或诊断某些严重疾病的早期症状。
已经有诸多学者研究如何精确分割眼部血管,现存的算法主要包括手动和自动分割两类。其中手动分割不仅耗时久还对分割专家的水平有较高要求;因此越来越多的学者倾向于基于算法进行视网膜血管的额自动分割。
在过去的20年间,已经有诸多学者在此方面进行了深入研究,但由于视网膜血管的复杂性,仍有许多具有挑战性的问题,如:对血管结构的分割、在血管分叉和交叉口附近的分割以及对异常的分割。
在近期研究中,基于深度学习的算法在病理图像分析任务中表现出优异性能,尤其是视网膜血管方面。比如Liskowskip[4]提出一种堆叠卷积和三层全连接的网络,但只能接受输入较小的视网膜patch进行训练;Maninis[5]的DRIU网络则是将在ImageNet上预训练过的VGG16的中间特征图进行采样和拼接;还有用全卷积神经的UNet以及Yan[9]等人的进一步改进:在UNet后增添两个分支同时计算分割级别的损失函数以及像素级别的损失函数。
本文也是基于全卷积神经网络提出的SD-UNet,可以有效减少UNet中过拟合问题,提升端到端分割血管的能力,而且是使用的整幅眼底图像。整个SD-UNet与UNet类似,会在对称网络中级联同层的大量特征通道,这样可以有效捕获上下文信息并且传递到更高分辨率的层次。
本文的主要工作总结如下:
(1)受DropBlock启发在每层卷积后使用了结构化随机失活;
(2)在三个视网膜图像数据集上测试了SD-UNet的性能,分别是:DRIVE,STARE,CHASE_DB1;
(3)阐述SD-UNet性能在三个数据集上均超过了UNet,并且在DRIVE和CHASE-DB1数据集上达到了SOTA。
# Section II Methodology
本文的目标是建立一个视网膜血管的精确分割模型,主要灵感来自于UNet和DropBlock,因此将本文的网络称之为Structured Dropout UNet(SD-UNet)。
Fig 1展示了SD-UNet的详细结构,可以看到在U形网络中包含三层下采样模块和上采样模块,中间通过skip connection连接。每一层下采样模块中包含两个3x3卷积以及一次最大池化,随后是DropBlock层和ReLU层。在上采样部分结构与之类似,区别在于将池化层调换为了转置卷积。
Part A UNet
在医学图像分析领域,CNN在诸多标杆数据集中性能超过传统方法,主要是由于卷积操作可以有效提取到医学图像的结构信息。而UNet广泛用于医学图像,比如心脏MRI图像、脑瘤以及腹部CT。
UNet的优势在于可以有效提取不同层次的特征用于医学图像分析,通过不同尺度的特征融合,可以有效提升模型精度,其中粗粒度的特征图负责捕获上下文信息,强调前景物体的类别、位置等;而细粒度特征包含更多细节信息,通过skip connection跨层连接使得不同粒度的特征有效的融合在了一起。
Part B DropBlock for Image Analysis
为了防止计算机视觉中的过拟合问题常使用不同的正则化方法,其中随机失活DropOut就是一种简单但有效的防止过拟合的方法,随机失活指的就是在训练过程中对特征中的神经元进行随机失活。这种策略更适合全连接层但不适合卷积层,因为卷积层中激活的神经元之间具有空间相关性;然而若将输入图像的语义信息传播到后续的层也会引起过拟合,因此需要对卷积网络进行结构化的随机失活,就是Golna[14]等人近期提出的DropBlock策略,通过对特征图中一部分相邻的整片区域整体失活,这样网络丢失了这一部分整体的信息,就可以更关注其他部位特征的学习。
从Fig2中可以看出,(a)代表送入卷积网络的一部分原图
(b)(c)中蓝色的部分代表激活的神经元;
(b)代表随机失活的情况,可以看到不足以完全丢弃语义信息,因为网络可以从失活神经元附近继续学到同样的特征信息;而(c)中则丢弃一部分连续的区域,这样就可以将一部分语义信息完全丢弃(比如非血管区域),这样就强迫网络学习其他语义特征(如背景部分、血管部分)。
因此,DropBlock与随机失活类似,主要的区别在于DropBlock会将某一层特征图谱的一整块连续区域整体进行失活,因此DropBlock layer包含两个参数:block_size和γ。其中block_size=1时与传统的dropout一样,而block_size=整张特征图时其实就是Spatial Dropout;γ参数负责控制一张特征图中有多少个激活点可以被失活。计算公式如下:
其中keep_prob是保证神经元在某一失活状态的概率,以及有效的区域变成了:
Part C DropBlock in UNet Model
大多数情况下主要在全连接层使用随机失活,因为通过随机失活全连接层的神经元可以提升泛化性,但是随机失活确实适合于FCN模型,因此像UNet这种全卷积神经网络需要更有效的随机失活方式来丢弃语义信息防止过拟合。
因此本文在UNet中卷积后加入DropBlock,随后跟ReLU,具体结构参见Fig3,借助于DropBlock可以丢弃部分特定的语义信息强迫网络学习其他部分的特征信息。
Section III 实验结果
Part A Dataset
本节将系统的对比SD-UNet与原始的UNet在不同数据集上的效果,还会将SD-UNet与当前一些SOTA的框架进行对比。
DRIVE:40张565x548大小的图像 train:test = 20:20 resize=700x700
STAREL20zhang700x605张的图像 手动将其分成train:test=10:10 resize = 790 x 790
CHASE_DB1:28张999x960的图像 resize = 1100 x 1100
数据扩充:随机旋转、颜色变换、增加高斯噪声、水平/垂直翻转
Part B 评价指标
PPV,TNR,TPR,Acc,AUC,F1score,JS
Table I、II、III分别展示了前面两种UNet与SD-UNet在三个数据集上的对比。
Part C Comparison with UNet
UNet表示未使用dropout的原始UNet
UNet*表示使用了随机失活的UNet 随机失活率0.25
可以看到SD-UNet在非血管区域表现更好,它还能检测到在UNet和UNet中可能丢失的微血管,从而使得分割结果包含更多细节。通过DropBlock的使用SD-UNet可以更好的保留微血管,尤其与UNet相比的结果更可以说明这一问题。
Part D Comparison with Existing Method
Table IV V VI还展示了SD-UNet与其他SOTA方法的对比,可以看到SU-UNet的性能均比其他方法好。
Section IV Conclusion
深度学习被用于从数据中学习特征,广泛用于医学图像分析领域。本文提出了一种基于全卷积UNet的网络结构-SD-UNet用于视网膜血管的逐像素分割,主要在UNet中增加DropBlock来提升模型性能。
其中UNet负责在下采样过程中捕获上下文信息,在上采样过程中可以有效融合不同层次的特征;同时借助DropBlock,SD-UNet可以在训练时丢弃部分区域的语义特征,从而减轻过拟合问题。
本文首次实现SD-UNet用于视网膜血管分割,为了验证这一方法的有效性在三个开源数据集DRIVE,STARE,CHASE_DB1上进行了测试,并且与其他方法对比,SD-UNet也取得了SOTA的结果。
未来本文将在更多数据集上测试SD-UNet的有效性,还打算将SD-UNet用于其他任务,如细胞核分割、肺部分割等。