U-Net: Convolutional Networks for Biomedical Image Segmentation
主要内容:
- 背景及综述
- 网络结构
- 训练
- Trick
- 实验结果
背景(2015年)和综述
- 卷积网络传统的应用领域是分类任务,其中图像的输出是单个的类标签。但是在许多CV任务尤其是生物医学图像领域, 所需的输出应该包括定位——类标签应该分配给每个像素。
此外,得到成千上万的图像数据集在生物医学领域是很难实现的。本文在全卷积网络的基础上做了修改和扩展,以此能够用更少的训练图像并获得更高的精度。同时由于没有使用
全连接层,速度很快。在最近的GPU上,512x512图像的分割不到一秒钟。 - U-Net最早用作生物图像的分割,后来在目标检测、图像转换,以及Tone Mapping ,Reverse Tone Mapping很多地方都有应用。它的一个特点是早期的卷积层结果和最后几层
的结果采用级联的形式作为新的神经网络层。我觉得它的过程很类似图像金字塔和图像重建的过程,前面的下采样,提取出信息,后面进行重建,区别在于这里不是像拉普拉斯金
字塔重建那样将图像复原,这里则是生成了具有“新特性”的图像。之所以叫它U-Net,是因为他看起来像个U形,如果考虑中间层次的级联,更像一把琴。 - 课代表总结:每个像素分类、较小数据集效果好、网络速度更快、端到端
网络结构
- 网络分为两部分:第一部分是收缩路径(左边部分);第二部分是扩展路径(右边部分)。收缩部分采用了传统的卷积网络算法。收缩部分由两个3x3卷积(unpadding)重复组成,
接上Relu和一个2x2的最大池化层以及步长为2的下采样层。在每个下采样层我们将特征图的通道数扩充为两倍。在扩展路径的每一步我们采用特征图的上采样,后接上2x2的卷积层从
而将特征图的通道数减半。 从收缩路径与相应裁剪的特征映射的级联,以及两个3x3卷积,每个卷积后面都是ReLU。因为边界像素的损失发生在每个卷积层所以剪裁是必要的。在最
后一层,使用1x1卷积将每个64分量特征向量映射到所需的类数。 网络总共有23个卷积层。 - 为了实现输出分割图的无缝平铺,选择输入切片大小非常重要,这样所有2x2最大池操作都应用于具有偶数x和y大小的层。
- 输入为一个单通道的图片,输出为双通道,一个是前景,一个是后景
训练
- 上图中a代表的是原图;b代表分割好的ground truth;c代表生成的分割结果,黑色为背景,白色为目标;d是pixel-wise的损失权重图,它迫使网络学习边缘处的像素
- 基本配置:使用momentum=0.99的SGD进行训练,momentum取0.99是作者希望梯度能结合尽量多的之前的动量。为了尽可能利用GPU,作者选用的网络输入图像尺寸是尽可能大。
- 功能函数(energy function)是通过基于最后特征图的pixel-wise soft-max和交叉熵损失函数,其中soft-max是这样定义的:
- 然后使用交叉熵惩罚每个位置上与上面提到的soft-max与1偏差:
- 分隔边界是通过形态学运算得到的。其中的w(x)是这样定义的:
- d1代表离最近细胞的边界的距离,d2代表离第二近的细胞边界的距离,经过实验将w0设为10,δ为5像素。
- 网络权值初始化:通过标准差为sqrt(2/N)的高斯分布初始化,N代表的是输入神经元节点的数目。例如一个33的64通道的前一层卷积就有N=33x64=576。
Trick
数据增广(Data Augmentation):
- 主要需要:移位、旋转 不变性;变形、灰度值变化 鲁棒性
- 在深度学习网络中数据集的数量对于训练的预期结果和鲁棒性都是很关键的,但是在医疗图像领域不满足这样的数据两条件,这就需要进行数据增大(扩充)。 在该论文中是通过在3×3的网格使用随机位移向量生成平滑变形。位移是从10像素标准差的高斯分布抽样得到的。逐像素位移然后使用双立方插值计算。收缩路径的漏失层(Drop-out layers)执行进一步的隐式数据增强。
边界的镜像处理:
- 它接收任意尺寸的图像作为输入,对于缺失的数据是通过,镜像操作来进行补充的。例如上图右边黄色区域的分割数据是需要通过左图中蓝色的框中的数据来提供的,不足的数据那就需要镜像操作来完成。
实验结果
参考
- https://blog.csdn.net/weixin_39302095/article/details/105106745
- https://blog.csdn.net/m_buddy/article/details/79399203
- http://blog.leanote.com/post/lily/U-Net
- 原文:https://arxiv.org/pdf/1505.04597.pdf