The Importance of Skip Connections in Biomedical Image segmentation_2016

来源:互联网 发布:消防报警主机编程 编辑:程序博客网 时间:2024/04/28 00:54

作者:Michal Drozdzal, Eugene Vorontsov, Gabriel Chartrand, Samuel Kadoury and Chris Pal
Abstract

论文研究了在FCNs上长短跳跃连接对医学图像分割的影响。类似残差网络,作者在FCNs上增加短跳跃连接,这样网络可以做的很深(100多层)。梯度流动的观察证实了,对于一个非常深的网络,长短跳跃连接是有益的。

1 Introduction
跳跃连接方式有:拼接(叠加),相加。在两个上采样直接在加上卷积和非线性。也是因为跳跃连接能恢复全空间分辨率,所以FCN才适合语义分割。我们称这些连接为长跳跃连接。
作者将残差网络引入的连接称为短跳跃连接,促使在训练中更快的收敛。
作者通过实验证明,短跳跃连接加速学习过程收敛,可以使非常深得网络架构有相对少的参数。贡献有以下3点:
1)将残差网络扩展到FCN,用来语义分割;
2)一个非常深得网络而不用后处理,可以达到一个非常好的效果;
3)长短跳跃连接结合对非常深的网络的收敛有促进作用

2 Residual network for semantic image segmentation
和残差网络类似,在上采样路径上,长跳跃连接的方式为相加,而不是叠加。

我们考虑3种block,每种至少包含一个卷积和一个激活函数:bottleneck, basic block, simple block(如上图)。每种可以在输入端使用BN,也可以在空间下采样的输入使用(用蓝色标记,用在下采样路径),也可以在空间上采样的输出使用(用黄色标出,用在上采样路径)。bottleneck和basic block来源于文献8,使用短跳跃连接将block的输入和输出连接,而几乎不做改动,鼓励路径通过非线性(non-linearities)来学习输入数据的残差表达。为了减小对输入数据的修改,我们没有对短跳跃路径进行变换,除非当滤波器的个数或者空间分辨率需要被调整来匹配block的输出。我们使用1×1的卷积来调整滤波器的个数,但是对于空间调整,我们仅仅对输入的行和列使用简单的抽取或简单的重复,这样可以不增加参数的个数。我们对残差路径上所有的blocks增加了一个可选的droupout层。
论文还使用了两种损失函数:cross-entropy和dice损失函数。公式如下:
Cross-entropy loss:
这里写图片描述
dice loss:
这里写图片描述
说明:Oi是最后一层输出通过sigmoid的输出,在0到1之间。y i是对应的label,为0或者1。
这里写图片描述
论文使用keras,以theano为后端,使用RMSprop(Lr=0.001, weight decay=0.001)为优化器。论文也实验了不同概率的dropout。

3.1 Segmenting EM data
在训练过程中,使用了数据增强,随机翻转变换,sheering,旋转,spline warping(和2015年的U-net使用的一样)。
有趣的是,作者发现,使用拿cross-entropy loss训练的网络来预测,结果质量高; 但拿Dice loss训练的网络来预测,结果却看起来很干净,因为它们是二进制的。前者预测的边界看起来模糊的地方,后者预测的看起来很分明。
这里写图片描述
但是,使用Dice loss训练的边界的连续性,在测试阶段可以通过使用droupout训练的网络输出样本的模型平均来提高。相对于使用binary cross-entropy来训练,这使得验证和测试指标的表现非常好。
在这个数据集上,论文使用了两个评价指标:Maximal foreground-restricted Rand score after thinning (V rand ), maximal foreground-restricted information theoretic score after thinning (V inf o )文献2有说明。
这里写图片描述
这个图表明长短跳跃连接效果最好。

3.2 On the importance of skip connections
一句话,长短跳跃连接,不管是在收敛速度,还是最终结果上,效果都比只有其一效果好。
像这样深的网络,没有跳跃连接,就不能训练。从图三还可以看出,短跳跃连接看起来能够稳定更新(因为图三中。a和b的验证损失比c光滑)。
我们期待,由于梯度消失问题,接近模型中间的层不能被有效更新,但又被短跳跃连接所减轻。这种本征短路经连接(就是将输入直接与某个输出连接)通过更少的给线性单元给我们模型的深层非常有效的引入更短路经。我们在一系列不同深度的模型上经验的验证,通过可视化每个周期每层平均模型参数更新。为了简单分析和可视化,我们使用简单的blocks而不是bottleneck blocks。
这里写图片描述
从图四(a)看出,有短跳跃连接时,参数更新分布很好; 从(b)看出,当去掉短跳跃连接时,对于深度模型,模型的深层部分更新很少,当长跳跃连接诶被重新训练时,模型的浅层部分可以被更新,因为这些连接给梯度流动提供了短路经。有趣的是,从(c)看出,当一个模型足够浅使得所有层能够很好更新时,使用短跳跃连接会使模型表现下降。从(d)看出,更重要的是,BN会增加网络最大更新深度。没有BN的网络,在网络的中间更新会下降,有长跳跃连接时,更加不稳定,要求更小的学习率。
还有一个有趣的现象是,这些所有模型中大部分的更新总是一开始接近或者在分类层。文献16表明,在只训练分类器后,即使是随机初始化权重,也会很大的影响模型的表现。

4 Conclusions
论文证明,虽然长跳跃可以在网络浅层给梯度流动提供短路经,但是并不能缓和深层网络的梯度消失问题。最后就是,给FCN加上短跳跃连接,能够增加收敛速度,使得可以训练更深的网络。

原创粉丝点击