发表在2015 MICCAI。原本是一篇医学图像分割的论文,但由于U-Net杰出的网络设计,得到了8k+的引用。

摘要
There is large consent that successful training of deep networks requires many thousand annotated training samples. In this paper, we present a network and training strategy that relies on the strong use of data augmentation to use the available annotated samples more efficiently. The architecture consists of a contracting path to capture context and a symmetric expanding path that enables precise localization. We show that such a network can be trained end-to-end from very few images and outperforms the prior best method (a sliding-window convolutional network) on the ISBI challenge for segmentation of neuronal structures in electron microscopic stacks. Using the same network trained on transmitted light microscopy images (phase contrast and DIC) we won the ISBI cell tracking challenge 2015 in these categories by a large margin. Moreover, the network is fast. Segmentation of a 512x512 image takes less than a second on a recent GPU. The full implementation (based on Caffe) and the trained networks are available at http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.

结论
The u-net architecture achieves very good performance on very different biomedical segmentation applications. Thanks to data augmentation with elastic deformations, it only needs very few annotated images and has a very reasonable training time of only 10 hours on a NVidia Titan GPU (6 GB). We provide the full Caffe[6]-based implementation and the trained networks. We are sure that the u-net architecture can be applied easily to many more tasks.

要点

  1. U-Net能对有限的数据,进行非常强有效的处理和利用。即所谓的strong use of data augmentation。

  2. 该网络处理速度也比较快:借助GPU处理一张\(512 \times 512\)的图像,耗时不到一秒。

故事背景

现有的CNN突破,大多集中在两点:1,数据量大,如ImageNet;2,网络参数多,如[7]的网络具有百万参数。

但是在大多数问题中,如医学图像处理,数据是稀缺品,标注数据更是稀缺品。

为了解决这一问题,[1]采用如下方式:将patch输入网络训练,而不是整图输入。测试也按patch测。
优点:

  1. 扩大了训练集:patch的数量显然比图像数量多得多。

  2. 对patch处理,可以更好地考虑局部细节。

缺点:

  1. patch太小了,上下文(context)不足。

  2. 非常耗时,并且重叠patch导致了冗余。

U-Net

U-Net的使命是:利用很少的数据,实现很好的效果

U-Net的基础是全卷积网络[9],其核心思想是:连续CNN处理会导致尺寸的收缩和分辨率下降;为此,我们将池化层改为升采样层。为了更好地处理局部特征(localize),在前端收缩通路(contracting path)的特征与后端升采样的输出(upsampled output)进行拼接。
在这篇工作里,作者的主要改进是:在升采样通路,U-Net也设置了大量的特征图。这样就使得上下文信息(context information)得以通过BP传递至高分辨率的收缩通路。因此整体上看,U-Net是一个U型的、较为对称的网络

我们知道,现在的GPU能力有限,无法处理任意大的输入。此时,我们只能采取块处理:

但这样处理有一个缺点:多多少少会丢失一些上下文信息。为此,作者引入了overlap-tile策略。如图,为了获得黄框的分割结果,U-Net的输入必须略大一些:蓝框,使得周围上下文信息得到一定的保持。如果边缘信息不存在,那么就简单地镜像扩展,如左图。

具体结构

左侧称为收缩通路(contracting path),右侧称为扩张通路(expansive path)。

  • 我们看收缩通路。收缩通路由重复的两层\(3 \times 3\)卷积和ReLU激活组成,不补零(如蓝色箭头)。这导致图像在每一层尺寸(长或宽)都会减2(左右各减1)。一共重复5次,即10次卷积。

  • 在每一次2层卷积后,都执行步长为2的\(2 \times 2\)的最大池化,效果为\(\frac{1}{2}\)降采样(如图红色箭头)。一共执行4次。

  • 在每一次降采样后,第一层卷积的输出通道数翻倍。

  • 我们再看扩张通路。首先经过\(2 \times 2\)的升卷积(up-conv),通道尺寸拓展为4倍;其次,从收缩通路中短连接过来的特征图经过裁剪,与之拼接;最后,执行2层\(3 \times 3\)的卷积和ReLU激活。同理也会越来越小。

  • 最后一层,我们采用\(1 \times 1\)的卷积,即尺寸不变,但通道数减小为目标类别数。可以注意到,输入图像尺寸比输出尺寸要大。

网络一共有23层卷积(包括\(3 \times 3\)不补零卷积、\(2 \times 2\)升采样卷积和\(1 \times 1\)卷积)。

注意,输入图像(tile或者patch)的长和宽必须是偶数,这样才可以让\(2 \times 2\)升采样卷积真正实现2倍升采样。

损失

作者特别强调了不同分类之间的边界像素点。因此在设置损失函数时,作者对每一个像素点设置了不同的权重,见式2。如果该像素离最近的两个分类的距离之和小,说明该像素接近边界,则其权重会较大。

数据扩充

作者采取了弹性变形(elastic deformations)对有限的数据进行扩充。这能促使网络具有变形不变性。

具体而言,我们根据一个高斯分布(方差为10),随机生成一个位移向量,然后对像素点在\(3 \times 3\)的格点内进行位移。位移后执行双三次插值,即得到了最终的弹性形变结果。

此外,在收缩通路的最后,我们还采用了drop-out层。

Paper | U-Net: Convolutional Networks for Biomedical Image Segmentation的更多相关文章

  1. 【Semantic Segmentation】U-Net: Convolutional Networks for Biomedical Image Segmentation 论文解析(转)

    目录 0. 前言 1. 第一篇 2. 第二篇 3. 第三篇keras实现 4. 一篇关于U-Net的改进 0. 前言   今天读了U-Net觉得很不错,同时网上很多很好很详细的讲解,因此就不再自己写一 ...

  2. 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

    前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...

  3. U-Net: Convolutional Networks for Biomedical Image Segmentation(理解+github代码)

    github代码:https://github.com/Chet1996/pytorch-UNet 0 - Abstract 这篇文章是生物学会议ICMICCAI2015的文章,主要针对的是生物影像进 ...

  4. Paper | Densely Connected Convolutional Networks

    目录 黄高老师190919在北航的报告听后感 故事背景 网络结构 Dense block DenseNet 过渡层 成长率 瓶颈层 细节 实验 发表在2017 CVPR. 摘要 Recent work ...

  5. Convolutional Networks for Image Semantic Segmentation

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52857657 把前段时间自己整理的一个 ...

  6. 论文阅读(Xiang Bai——【CVPR2016】Multi-Oriented Text Detection with Fully Convolutional Networks)

    Xiang Bai--[CVPR2016]Multi-Oriented Text Detection with Fully Convolutional Networks 目录 作者和相关链接 方法概括 ...

  7. 《Attention Augmented Convolutional Networks》注意力的神经网络

    paper: <Attention Augmented Convolutional Networks> https://arxiv.org/pdf/1904.09925.pdf 这篇文章是 ...

  8. (原)DropBlock A regularization method for convolutional networks

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/9985027.html 论文网址: https://arxiv.org/abs/1810.12890 ...

  9. 【ML】Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos & Towards Good Practices for ...

随机推荐

  1. 2019csp-s

    11.17一切尘埃落定 回来之后一直“沉迷”文化课,不想去面对自己,更多的可能是不敢吧 晃晃悠悠一个星期过去了 其实信息学考完就知道成绩了,很垃圾,不想去想,所以沉迷解析几何无法自拔(但好像也做不对几 ...

  2. HTML连载50-伪元素选择器、清除浮动方式五

    一.伪元素选择器 1.什么是伪元素选择器 伪元素选择器作用给指定标签的内容前面添加一个子元素,或者给指定标签的内容后面添加一个子元素. 2.格式: 标签名称::before{ 属性名称:值: } 给指 ...

  3. spring cloud 2.x版本 Sleuth+Zipkin分布式链路追踪

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  4. manage.py相关命令

    python manage.py makemigrations <app_name> 在对应app下的migrations目录下,生成XXXX_initial.py文件,该XXXX_ini ...

  5. c#汉字转拼音首字母全拼支持多音字

    1.首先在NuGet安装pingyinConverter 2.下载-安装-引用ChineseChar.dll到项目中 官网了解:http://www.microsoft.com/zh-cn/downl ...

  6. eclipse强行停止buliding workspace

    使用Eclipse的过程中可能会遇到buliding workspace卡在一半走不动的情况. 出现这个情况往往是因为Eclipse太调皮了,需要拉出去打屁股,打一顿就好了. 开玩笑的,事实上出现这个 ...

  7. 用go-module作为包管理器搭建go的web服务器

    本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器.并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档. 源码在 ...

  8. python执行shell实时输出

    1.使用readline可以实现 import subprocess def run_shell(shell): cmd = subprocess.Popen(shell, stdin=subproc ...

  9. wpf datetime format

    <Style TargetType="{x:Type DatePickerTextBox}"> <Setter Property="Control.Te ...

  10. 练手WPF(三)——扫雷小游戏的简易实现(下)

    十四.响应鼠标点击事件    (1)设置对应坐标位置为相应的前景状态 /// <summary> /// 设置单元格图样 /// </summary> /// <para ...