U-Net: Convolutional Networks for Biomedical Image Segmentation

Ronneberger O, Fischer P, Brox T. U-net: Convolutional networks for biomedical image segmentation[C]//International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.

Abstract

这篇文章是生物学会议ICMICCAI2015的文章,主要针对的是生物影像进行分割。由于普遍认为深度学习需要大量的样本进行训练,而生物医学领域上的数据量比较少,所以本文提出了一种网络和训练策略,依靠数据增强等技巧有效的利用了有限的标签信息。该体系结构包括捕捉上下文的收缩路径(contracting path)和实现精确定位的对称扩展路径(symmetric expanding path)。实验表明,该网络结构可以在非常少的图像数据集上进行端到端训练。

代码复现也很多,贴几个代码链接:
Caffe:http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
Keras:https://github.com/zhixuhao/unet
Pytorch:https://github.com/czifan/unet.pytorch

Motivation

Ciresan, D.C., Gambardella, L.M., Giusti, A., Schmidhuber, J.: Deep neural net-
works segment neuronal membranes in electron microscopy images. In: NIPS. pp.
2852{2860 (2012)
Ciresan等人使用滑动窗口,提高围绕该像素的局部区域(补丁)作为输入来预测每个像素的类别标签。U-Net: Convolutional Networks for Biomedical Image Segmentation
虽然该方法可以达到很好的精度,但是存在两个缺点:
U-Net: Convolutional Networks for Biomedical Image Segmentation

网络结构

本文提出的网络,是全卷积网络,其中主要是想是通过逐层扩充来补充通常的收缩网络(下采样),其中pooling被unsampling操作代替(称之为上采样),这些层能够增加输出的分辨率。为了精准定位每一个像素,下采样和上采样路径中相同尺度的特征进行连接,整体架构如下图:
U-Net: Convolutional Networks for Biomedical Image Segmentation

Training

  1. input/output:输入为572x572分辨率的图像,标签为388x388的分割图;
  2. batch size:为了最小化开销并最大限度地利用GPU内存,我们倾向于使用大的输入块而不是大的批处理大小,从而将批处理减少到单个图像,即batch_size设置为1;
  3. optimizer:SGD(随机梯度下降)优化器,其momentum(动量)设置为0.99,使得几乎所有之前训练的样本都能影响到当前训练样本的更新(我觉得就和batch size设置得比较大的效果应该是一样的);
  4. criterion:交叉熵损失函数,作者通过预先计算每个真实分割的权重图,来补偿训练集中不同类别的不同频率,并迫使网络学习我们的触摸单元之间引入的小分离边界。分离边界使用形态学操作来计算,计算权重图通过公式w(x)=wc(x)+w0exp((d1(x)+d2(x))22σ2)w(x)=w_c(x)+w_0∗exp(−{(d_1(x)+d_2(x))^2\over2σ^2})其中wcw_c是权重图用来平衡像素的频率,d1d_1表示最近单元边界的距离,d2d_2表示到第二进单元的边界的距离,文中设置w0w_0=10,σσ≈5pixels(涉及到形态学和边界的部分还没有搞懂,后续需要补充);
  5. initialize:文中提出使用标准偏差为2N\sqrt {2\over N}的高斯分布来初始化卷积网络的kernel,其中N表示一个神经元输入节点的数量,例如3x3的64通道的卷积层的N=3364=576N=3∗3∗64=576
  6. data augmentation:文中主要使用移位、旋转、变形、灰度值变化等数据增强方法,其中似乎是训练样本的随机弹性变形是训练具有很少标签的分割网络的关键。文中使用随机位移矢量在粗糙的3x3网络上生成平滑变形,位移从10像素便准偏差的高斯分布中采样,然后使用双三次插值计算每个像素位移。下采样路径末尾的dropout层执行进一步的隐式数据增强(这一点似乎网络结构图没有体现,按文中的意思应该是在下采样路径末尾加入了dropout层从而防止过拟合而达到相当于图像增强的效果)。
  7. overlap_tile:U-Net接收任意尺寸的图像作为输入,对于缺失的数据是通过,镜像操作来进行补充的。例如下图右边黄色区域的分割数据是需要通过左图中蓝色的框中的数据来提供的,不足的数据那就需要镜像操作来完成。
    U-Net: Convolutional Networks for Biomedical Image Segmentation

参考资料:https://www.cnblogs.com/CZiFan/p/10799472.html
U-Net: Convolutional Networks for Biomedical Image Segmentation