发表在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. Mac下MongoDB配置与操作

    1.环境配置 Xcode安装 2.下载安装包 官网地址是:MongoDB Download Center | MongoDB 3.解压文件, 将文件放置/usr/local 4.配置环境变量 open ...

  2. SourceTree3.2.6版本跳过注册办法

    一.去sourceTree官网下载最新的包 官网:https://www.sourcetreeapp.com/windows版下载地址:https://product-downloads.atlass ...

  3. 【shell脚本】自动磁盘分区,格式化,挂载===autoMount.sh

    #!/bin/bash # 自动对磁盘分区.格式化.挂载 # 对虚拟机的 vdb 磁盘进行分区格式化,使用<<将需要的分区指令导入给程序 fdisk # n(新建分区),p(创建主分区), ...

  4. 利用shell脚本快速定位日志

    我们平时查日志,在测试环境,日志文件只有几个的情况下,我们可以通过找时间接近的文件然后根据关键词定位报错位置,大不了都查一遍,这都可以忍受.但是在实际的生产环境下,服务器集群部署,每天的日志非常多非常 ...

  5. 对并发Map的测试

    /** * ConcurrentHashMap效率最高 */ public class MapTest { public static void main(String[] args) throws ...

  6. Spring Boot 启动以后然后再加载缓存数据 CommandLineRunner

    实际应用中,我们会有在项目服务启动完成以后去加载一些数据或做一些事情(比如缓存)这样的需求. 为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRu ...

  7. 基于 EntityFramework 生成 Repository 模式代码

    借助 WeihanLi.EntityFramework 实现简单的 Repository Intro 很多时候一些简单的业务都是简单的增删改查,动态生成一些代码完成基本的增删改查,而这些增删改查代码大 ...

  8. WPF/.net core WPF 系统托盘支持

    WPF 原生不支持系统托盘图标,需要依靠其它方式处理. 1 使用 WinForm 的支持 WPF最小到系统托盘 - Arvin.Mei - 博客园 2 使用 wpf-notifyicon 库 hard ...

  9. SmtpClient发送邮件时附件名称乱码

    在用户环境发现一个现象,使用System.Net.Mail.SmtpClient发送邮件,当附件名包含中文且长度较长时,最终的邮件里附件名会乱掉,写个简单的测试程序: var mail = new M ...

  10. xml解析-jaxp遍历结点

    jaxp遍历结点 把xml中所有的结点都打印出来 // 遍历结点把所有元素名称打印出来 / 1.创建解析器工厂 * 2.根据解析器工厂创建解析器 * 3.解析xml返回document * * 4.得 ...