UNet++在图像分割的应用

原文链接: https://zhuanlan.zhihu.com/p/44958351

U-net

u-net相比FCN的一个特点是完全对称。输入是一幅图,输出是目标的分割结果。继续简化就是一幅图,编码,或者说降采样,然后解码,也就是升采样,然后输出一个结果。然后根据结果和真实分割之间的差异来反向传播来训练这个分割网络。
U-Net里面最精彩的部分就是这三部分:

下采样
上采样
skip connection

深度网络深度的问题

关于到底要多深这个问题,还有一个引申的问题就是,降采样对于分割网络到底是不是必须的?问这个问题的原因就是,既然输入和输出都是相同大小的图,为什么要折腾去降采样一下再升采样呢?

比较直接的回答当然是降采样的理论意义,我简单朗读一下,它可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移,旋转等,减少过拟合的风险,降低运算量,和增加感受野的大小。升采样的最大的作用其实就是把抽象的特征再还原解码到原图的尺寸,最终得到分割结果。

深度学习的深度是不是越深越好?

并不是越深越好,它背后所传递的信息就是,不同层次的重要性对于不同的数据集是不一样的。
特征提取阶段,浅层结构可以抓取图像的一些简单的特征,比如边界,颜色,而深层结构因为感受野大了,而且经过的卷积操作多了,能抓取到图像的一些说不清道不明的抽象特征,讲的越来越玄学了,总之,浅有浅的侧重,深有深的优势。

U-net的长短连接问题

UNet++在图像分割的应用_第1张图片
U-Net中的长连接是有必要的,它联系了输入图像的很多信息,有助于还原降采样所带来的信息损失,在一定程度上,我觉得它和残差的操作非常类似,也就是residual操作,x+f(x)。我不知道大家是否同意这一个观点。因此,我的建议是最好给出一个综合长连接和短连接的方案

如何同时抓取深度和浅度的特征?让网络自行判断哪一层的特征是最重要的。

UNet++在图像分割的应用_第2张图片
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。

深监督

具体的实现操作就是在图中 X01,X02 , X03, X04 后面加一个1x1的卷积核,相当于去监督每个level,或者每个分支的U-Net的输出

如果我在训练过程中在各个level的子网络中加了这种深监督,可以带来怎样的好处呢?:剪枝

UNet++在图像分割的应用_第3张图片

为什么可以剪枝?

关注被剪掉的这部分,你会发现,在测试的阶段,由于输入的图像只会前向传播,扔掉这部分对前面的输出完全没有影响的,而在训练阶段,因为既有前向,又有反向传播,被剪掉的部分是会帮助其他部分做权重更新的。这两句话同样重要,我再重复一遍,测试时,剪掉部分对剩余结构不做影响,训练时,剪掉部分对剩余部分有影响。这意味什么?

因为在深监督的过程中,每个子网络的输出都其实已经是图像的分割结果了,所以如果小的子网络的输出结果已经足够好了,我们可以随意的剪掉那些多余的部分了。

简单的总结一下,UNet++的第一个优势就是精度的提升,这个应该它整合了不同层次的特征所带来的,第二个是灵活的网络结构配合深监督,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量

本文主要引自知乎周纵苇文章、

你可能感兴趣的:(深度学习)