《U-Net: Convolutional Networks for Biomedical Image Segmentation》学习笔记

1. 总述

在15年的文章:《U-Net: Convolutional Networks for Biomedical Image Segmentation》中提出了一种基于少量数据进行训练的网络的模型,得到了不错的分割精度,并且网络的速度很快。对于分割一副512*512大小的图像只需要不到1s的时间。它的网络模型结构是这样的,看起来像是一个U型,故也叫U-net
这里写图片描述
从上面的U-net网络图结构可以看出下降的部分是采用conv+max-pool来实现的,并且在下采样过程中逐次增加feature channels;对于上升部分是使用左边的feature map拷贝和剪裁(是因为每次卷积过程中边缘像素的丢失)+up_convolution,这样的结构使得在上采样过程中网络可以传播到更高分辨率的层。
整个网络的思路跟FCN是差不多的,一个区别是它没有用VGG等CNN模型作为预训练模型,因为u-net做的是医学图像的二值分割,没必要用ImageNet的预训练模型,而且u-net这个结构我们是可以根据自己的数据集自由加深网络结构的,比如在处理具有更大的感受野的目标的时候;另一个区别是u-net在进行浅层特征融合的时候,采用的是叠加的做法,而不是FCN中的求和操作,也就是上图中的白色模块,是直接从左边的蓝色模块叠加过来的(如果是在Caffe中实现的,u-net是Concat层,而fcn是Eltwise层)。
这里写图片描述
它接收任意尺寸的图像作为输入,对于缺失的数据是通过,镜像操作来进行补充的。例如上图右边黄色区域的分割数据是需要通过左图中蓝色的框中的数据来提供的,不足的数据那就需要镜像操作来完成。

2. 训练

上图中a代表的是原图;b代表分割好的ground truth;c代表生成的分割结果,黑色为背景,白色为目标;d是pixel-wise的损失权重图,它迫使网络学习边缘处的像素
这里写图片描述
功能函数(energy function)是通过基于最后特征图的pixel-wise soft-max和交叉熵损失函数,其中soft-max是这样定义的:
这里写图片描述
然后使用交叉熵惩罚每个位置上与上面提到的soft-max与1偏差:
这里写图片描述
分隔边界是通过形态学运算得到的。其中的w(x)是这样定义的:
这里写图片描述
d1代表离最近细胞的边界的距离,d2代表离第二近的细胞边界的距离,经过实验将w0设为10,δ为5像素

网络权值初始化:通过标准差为sqrt(2/N),N代表的是输入神经元节点的数目。例如一个3*3的64通道的前一层卷积就有N=3*3*64=576。

3. 数据增大

在深度学习网络中数据集的数量对于训练的预期结果和鲁棒性都是很关键的,但是在医疗图像领域不满足这样的数据两条件,这就需要进行数据增大(扩充)。 在该论文中是通过在3×3的网格使用随机位移向量生成平滑变形。位移是从10像素标准差的高斯分布抽样得到的。逐像素位移然后使用双立方插值计算。收缩路径的漏失层(Drop-out layers)执行进一步的隐式数据增大。

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/79399203