U-Net: Convolutional Networks for Biomedical Image Segmentation

U-Net:用于生物医学图像分割的卷积网络

摘要

  要想成功地训练一个深度网络需要大量的数以千计的有标记的样本,这已经成为了业内共识。在本文中,我们提出了一种网络和相应的训练策略,它依赖于强大的数据扩充技术,以更有效地使用可用的有标记的样本。该体系结构由捕获context的contracting路径和实现精确定位的symmetric expanding路径构成。我们表明这样的网络可以用非常少的图像端到端地进行训练,并且优于先前ISBI挑战赛中对电子显微镜堆叠中的神经元结构进行分割的最佳方法(滑动窗口卷积网络)。使用在透射光显微镜图像(相位对比度和DIC)上训练的相同网络,我们在这些类别中大幅度地赢得了2015年ISBI细胞追踪挑战。而且,网络速度很快。 在最近的GPU上,512x512图像的分割不到一秒钟就可以完成。完整的实施(基于Caffe)和训练的网络可在以下网站获得http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net .

1.绪论

  在过去两年中,深度卷积网络在许多视觉识别任务中表现优于现有技术,例如,[7,3]。虽然卷积网络已经存在了很长时间[8],但由于可用训练集的大小和所考虑网络的规模,它们的成功受到限制。Krizhevsky等人的突破 [7]是由于对包含100万个训练图像的ImageNet数据集用有8层和数百万个参数的大型网络进行有监督训练。在那之后,更大更深的网络也可以训练了。

  卷积网络的典型用途是分类任务,其中图像的输出是单个类别标签。然而,在许多视觉任务中,尤其是在生物医学图像处理中,期望的输出应该包括定位,即,应该将类标签分配给每个像素。此外,生物医学任务中通常无法拿到数千个将标记分配给每个像素训练图像。因此,Ciresan等人。 [1]在滑动窗口设置中训练网络,通过在该像素周围提供局部区域(patch)作为输入来预测每个像素的类标签。首先,这个网络可以定位。 其次,以patches方式组织的训练数据远远大于训练图像的数量。由此产生的网络在ISBI 2012上大幅度赢得了EM细分挑战。

  显然,Ciresan等人的策略[1]有两个缺点。 首先,它非常慢,因为必须为每个patch丁单独运行网络,并且由于patches重叠而存在大量冗余。其次,在定位准确度和context的使用之间存在trade-off。较大的patches需要更多的最大池层这会降低定位精度,而小patches则只允许网络看到很少的context。最近的方法[11,4]提出了一种分类器输出,其考虑了来自多个层的特征。同时兼具良好的定位与context的使用成为了可能。

  在本文中,我们建立了一个更优雅的网络结构,即所谓的“完全卷积网络”[9]。我们对这种架构进行了修改和扩展,使得它只需很少的训练图像就可以进行更精确的分割;见图1。[9]中的主要思想是通过successive layers补充通常的contracting网络,其中池化操作由上采样操作替换。因此,这些层增加了输出的分辨率。为了进行定位,来自contracting路径的高分辨率特征与上采样输出相结合。然后,successive卷积层可以基于该信息学习组装出更精确的输出。我们的架构中的一个重要修改是在上采样部分中我们还有大量的特征通道,这些通道允许网络将context信息传播到更高分辨率的层。因此,expanding路径或多或少地与contracting路径对称,并产生U形结构。网络没有任何全连接层,并且仅使用每个卷积的有效部分,即,分割图仅包含在输入图像中可获得完整context的像素。该策略允许通过overlap-tile策略无缝分割任意大的图像(参见图2)。为了预测图像边界区域中的像素,通过镜像输入图像来外推缺失的context。这种平铺策略对于将网络应用于大图像很重要,否则分辨率将受到GPU内存的限制。

  至于我们的任务,可用的训练数据非常少,我们通过对可用的训练图像应用弹性变形来获得大量扩增的数据。这允许网络学习这种变形的不变性,而不需要在有标签的图像语料库中看到这些变换。这在生物医学分割中尤其重要,因为变形是组织中最常见的变化,并且可以有效地模拟真实的变形。Dosovitskiy等人已经在无监督特征学习的范围内证明了学习数据扩增的不变性的价值 [2]。

  许多细胞分割任务中的另一个挑战是分离同一类的相连物体; 见图3。为此,我们提出使用加权损失,其中相连细胞之间的分离背景标签在损失函数中获得大的权重。

  由此产生的网络适用于各种生物医学分割问题。在本文中,我们展示了EM堆栈中神经元结构分段的结果(ISBI 2012开始的持续竞争),其中我们的表现优于Ciresan等人的网络[1]。此外,我们在2015年ISBI细胞追踪挑战的光学显微镜图像中显示了细胞分割的结果。在这里,我们在两个最具挑战性的2D透射光数据集上获得了巨大的优势。

2. 网络结构

  网络结构如图1所示。它由contracting路径(左侧)和expanding路径(右侧)组成。contracting路径遵循卷积网络的典型架构。它包括重复应用的两个3x3卷积(unpadded卷积),每个卷积后跟一个整流线性单元(ReLU)和一个步长为2的用于下采样的2x2最大池化操作。在每个下采样步骤中,我们将特征通道的数量加倍。expanding路径中的每一步都包括对特征图通过2x2卷积(“向上卷积”)进行上采样,这将会把特征通道数量减半,然后与来自contracting路径的相应的裁剪后的特征图串联,再经过两个3x3 卷积,每个都跟着ReLU。由于每个卷积中边界像素的丢失,裁剪是必要的。在最后一层,使用1x1卷积将每个64分量特征向量映射到所需数量的类。总的来说,网络有23个卷积层。

  为了实现输出分割图的无缝平铺(参见图2),选择输入图块大小非常重要,这样所有2x2最大池操作都应用于具有偶数x和y尺寸的图层。

3. 训练

  输入图像及其相应的分割图用于训练网络,采用Caffe [6]的随机梯度下降实现。由于unpadded的卷积,输出图像小于输入图像一定的边界宽度。为了最大限度地减少开销并最大限度地利用GPU内存,我们倾向于在大batch size的情况下使用大输入tiles,从而将batch减少到单个图像。因此,我们使用高动量(0.99),使得大量先前看到的训练样本确定当前优化步骤中的更新。能量函数通过将最终特征图上的逐像素soft-max与交叉熵损失函数组合来计算。soft-max被定义为:

${p_k}(x) = \exp ({a_k}(x))/(\sum\nolimits_{{k^'} = 1}^K {\exp ({a_{{k^'}}}(x))} $

其中${a_k}(x)$为在像素位置$x \in \Omega $,$\Omega  \subset {Z^2}$处特征通道$k$处的激活。$K$是类别数,${p_k}(x)$是近似最大函数,即对于有最大激活${a_k}(x)$的$k$,${p_k}(x) \approx 1$,对于其他的$k$,${p_k}(x) \approx 0$。然后交叉熵在每个位置惩罚${p_{l(x)}}(x)$与1的偏差,使用:$E = \sum\limits_{x \in \Omega } {w(x)\log ({p_{l(x)}}(x))} $

其中,$l:\Omega  \to \{ 1,...,K\} $是每个像素的真实标签,$w:\Omega  \to IR$是权重图,我们引入它来给一些像素在训练期间分配更大的权重。

  我们预先计算每个ground truth分割的权重图,以补偿训练数据集中某个类别的不同像素频率,并迫使网络学习我们在相连细胞之间引入的小分离边界(见图3c 和d)。使用形态学运算来计算分离边界。然后将权重图计算为:

$w(x) = {w_c}(x) + {w_0} \cdot \exp ( - {{{{({d_1}(x) + {d_2}(x))}^2}} \over {2{\sigma ^2}}})$

其中,${w_c}:w \to IR$是用来平衡类别频率的权重图,${d_1}:w \to IR$代表到最近细胞边界的距离,${d_2}:w \to IR$到第二个最近细胞边界的距离。在我们的实验中,我们设置w0 = 10和σ≈5像素。

  在具有许多卷积层和通过网络的不同路径的深度网络中,权重的良好初始化是极其重要的。否则,网络的某些部分可能会过度激活,而其他部分则不会发挥作用。理想情况下,应调整初始权重,使得网络中的每个特征图具有近似单位方差。对于具有我们的架构(交替卷积和ReLU层)的网络,这可以通过从标准偏差为$\sqrt {2/N} $的高斯分布绘制初始权重来实现,其中N表示一个神经元的传入节点的数量[5]。例如, 对于前一层中的3x3卷积和64个特征通道,N = 9·64 = 576。

3.1. 数据扩增

  当只有少数训练样本可用时,数据增加对于教授网络所需的不变性和鲁棒性属性至关重要。在显微图像的情况下,我们主要需要移位和旋转不变性以及对变形和灰度值变化的鲁棒性。特别是训练样本的随机弹性变形似乎是训练具有极少有标签图像的分割网络的关键概念。我们使用粗略3乘3网格上的随机位移矢量生成平滑变形。位移是从具有10个像素标准偏差的高斯分布中采样的。然后使用双三次插值计算每像素位移。contracting路径末端的droupout层执行进一步的隐式数据扩充。

4. 实验

  我们演示了u-net在三种不同分割任务中的应用。第一项任务是电子显微镜记录中神经元结构的分割。图2显示了数据集和我们获得的分割的示例。我们提供完整的结果作为补充材料。该数据集是由ISBI 2012启动的EM分割挑战[14]提供的,并且仍然对新的贡献者开放。训练数据是来自果蝇第一龄幼虫腹侧神经索(VNC)的连续切片透射电子显微镜的一组30个图像(512×512像素)。每个图像都带有相应的完全注释的ground truth分割图,用于细胞(白色)和膜(黑色)。该测试集是公开的,但其f分割图保密。可以通过将预测的膜概率图发送给组织者来获得评估。通过在10个不同的级别对图进行阈值处理并计算“扭曲误差”,“随机误差”和“像素误差”[14]来完成评估。

  u-net(输入数据的7个旋转版本的平均值)在没有任何进一步预处理或后处理的情况下实现0.0003529的扭曲误差(新的最佳分数,参见表1)和0.0382的随机误差。

  这明显优于Ciresan等人的滑动窗口卷积网络结果[1],其最佳提交的扭曲误差为0.000420,随机误差为0.0504。就rand误差而言,该数据集上唯一性能更好的算法使用高度数据集特定的后处理方法,应用于Ciresan等人的概率图[1]。

  我们还将u-net应用于光学显微图像中的细胞分割任务。 这种分割任务是2014年和2015年ISBI小区跟踪挑战的一部分[10,13]。第一组数据“PhC-U373”在聚丙烯酰亚胺底物上含有胶质母细胞瘤 - 星形细胞瘤U373细胞,通过相差显微镜记录(参见图4a,b和Supp。材料)。它包含35个部分注释的训练图像。 在这里,我们实现了92%的平均IOU(“交联结合”),这明显优于第二个最佳算法(83%)(见表2)。第二组数据“DIC-HeLa”是通过微分干涉对比(DIC)显微镜记录的平板玻璃上的HeLa细胞(参见图3,图4c,d和Supp。材料)。它包含20个部分注释的训练图像。 在这里,我们的平均IOU为77.5%,明显优于第二好的算法,为46%。

5. 结论

  u-net架构在非常不同的生物医学分割应用程序上实现了非常好的性能。由于弹性变形的数据增强,它只需要非常少的注释图像,并且在NVidia Titan GPU(6 GB)上只有10小时的非常合理的训练时间。我们提供完整的基于Caffe [6]的实施和训练的网络。我们确信u-net架构可以轻松应用于更多任务。

论文阅读笔记(二)U-Net的更多相关文章

  1. 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)

    论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...

  2. 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)

    论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...

  3. 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)

    论文源址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn 摘要 在PASCAL VOC数据集上,最好的方法的思路是将低级信息与较高层次的上下文信息进 ...

  4. 论文阅读笔记二十九:SSD: Single Shot MultiBox Detector(ECCV2016)

    论文源址:https://arxiv.org/abs/1512.02325 tensorflow代码:https://github.com/balancap/SSD-Tensorflow 摘要 SSD ...

  5. 论文阅读笔记二十八:You Only Look Once: Unified,Real-Time Object Detection(YOLO v1 CVPR2015)

    论文源址:https://arxiv.org/abs/1506.02640 tensorflow代码:https://github.com/nilboy/tensorflow-yolo 摘要 该文提出 ...

  6. 论文阅读笔记二十六:Fast R-CNN (ICCV2015)

    论文源址:https://arxiv.org/abs/1504.08083 参考博客:https://blog.csdn.net/shenxiaolu1984/article/details/5103 ...

  7. 论文阅读笔记二十三:Learning to Segment Instances in Videos with Spatial Propagation Network(CVPR2017)

    论文源址:https://arxiv.org/abs/1709.04609 摘要 该文提出了基于深度学习的实例分割框架,主要分为三步,(1)训练一个基于ResNet-101的通用模型,用于分割图像中的 ...

  8. 论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)

    论文源址:https://arxiv.org/abs/1605.09410 tensorflow 代码:https://github.com/renmengye/rec-attend-public 摘 ...

  9. 论文阅读笔记二十一:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS(ICRL2016)

    论文源址:https://arxiv.org/abs/1511.07122 tensorflow Github:https://github.com/ndrplz/dilation-tensorflo ...

  10. 论文阅读笔记二十:LinkNet: Exploiting Encoder Representations for Efficient Semantic Segmentation(CVPR2017)

    源文网址:https://arxiv.org/abs/1707.03718 tensorflow代码:https://github.com/luofan18/linknet-tensorflow 基于 ...

随机推荐

  1. 使用Swagger辅助开发Fabric Application的Web API

    前面的几篇博客,我们已经把Fabric环境搭建好了,也可以使用Go开发ChainCode了,那么我们在ChainCode开发完毕后,可以通过CLI来测试ChainCode的正确性,ChainCode开 ...

  2. Elastic Stack-Elasticsearch使用介绍(三)

    一.前言     上一篇说了这篇要讲解Search机制,但是在这个之前我们要明白下文件是怎么存储的,我们先来讲文件的存储然后再来探究机制: 二.文档存储 之前说过文档是存储在分片上的,这里要思考一个问 ...

  3. 使用ES6的模块编写web页面碰到的坑

    昨天写最近在做的web应用时,在web页面的js文件中使用了模块功能,这样在html文件中只需要导入一个js就好了

  4. 使用.Net Core Mvc +SqlSugar +Autofac+AutoMapper+....

    开源地址:https://github.com/AjuPrince/Aju.Carefree 目前用到了 SqlSugar.Dapper.Autofac.AutoMapper.Swagger.Redi ...

  5. beanshell断言模版

    if("${createTime_1}".equals("${createTime_2}")){ Failure = false; FailureMessage ...

  6. (七)jdk8学习心得之join方法

    七.join方法 1. 作用:将list或者数组按照连接符进行连接,返回一个字符串. 2. 使用方法 1) String.join(“连接符”,数组对象或者list对象) 2) 首先转换成stream ...

  7. JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值

    JS实现 阿拉伯数字金额转换为中文大写金额 可以处理负值 //************************* 把数字金额转换成中文大写数字的函数(可处理负值) ****************** ...

  8. [安全转帖]浅析安全威胁情报共享框架OpenIOC

    浅析安全威胁情报共享框架OpenIOC https://www.freebuf.com/sectool/86580.html Indicator of compromise Outline: 1. I ...

  9. Javascript实现base64的加密解密

    //1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); // ...

  10. Linux(Ubuntu)使用日记------trash-cli防止误删文件

    1.安装过程 cd /tmp git clone https://github.com/andreafrancia/trash-cli cd trash-cli sudo python setup.p ...