发表在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. 【转】Ubuntu 16 安装 python 依赖出现 error: command 'i686-linux-gnu-gcc' failed with exit status 1

    问题 在 Ubuntu 下安装 python 依赖的时候出现以下错误 build/temp.linux-i686-3.5/_openssl.c:498:30: fatal error: openssl ...

  2. PHP框架 fastadmin 根据条件判断字段的显示隐藏

    首先,因为fastadmin的JS里面字段不支持function函数  里面只能填false或true,不能动态判断显示隐藏, 后面通过看文档发现能在表格初始化的地方判断  如图,就可以实现根据lin ...

  3. Java泛型类型擦除与运行时类型获取

    Java的泛型大家都知道是类型擦除的方式实现的,“编译器会进行泛型擦除”是一个常识了(实际擦除的是参数和自变量的类型).“类型擦除” 并非像许多开发者认为的那样,在 <..> 符号内的东西 ...

  4. 浏览器关闭后Session真的消失了吗?

    今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了?  我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信 ...

  5. Python制作动态二维码只需要一行代码!炒鸡简单!

    分享一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. 用法比较简单,直接通过pip安装即可. pip3 install myq ...

  6. MySQL学习——查询表里的数据

    MySQL学习——查询表里的数据 摘要:本文主要学习了使用DQL语句查询表里数据的方法. 数据查询 语法 select [distinct] 列1 [as '别名1'], ..., 列n [as '别 ...

  7. CAS(比较并交换)

    一.CAS(无锁的执行者) CAS包含3个参数:内存值  V 旧的预期值  A 新值  B 当且仅当V值等于A值时,将V的值改为B值,如果V值和A值不同,说明已经有其他线程做了更新,则当前线程什么都不 ...

  8. .NET MVC5简介(二)

    MVCApplication---Application_Statr--RegisterRoutes--给RouteCollection添加规则,请求进到网站---X----请求地址被路由按照顺序匹配 ...

  9. Python “ValueError: incomplete format” upon print(“stuff %” % “thingy”) 解决方法

    直接贴代码 这里我是想匹配length i  的值并且要打印出data里面%23也就是#的url编码,但是发现这样报错了,这时候我们在%23前面多加一个%号就能够成功执行我这里测试的2.7环境,3.x ...

  10. ABP进阶教程1 - 条件查询

    点这里进入ABP进阶教程目录 添加实体 打开领域层(即JD.CRS.Core)的Entitys目录 //用以存放实体对象添加一个枚举StatusCode.cs //状态信息 using System; ...