语义分割的U-Net网络结构Unet是2015年诞生的模型,它几乎是当前segmentation项目中应用最广的模型。Unet能从更少的训练图像中进行学习,当它在少于40张图的生物医学数据集上训练时,IOU值仍能达到92%。Unet网络非常简单,前半部分作用是特征提取,后半部分是上采样。在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U,故得名U-net。

论文链接: https://arxiv.org/pdf/1505.04597v1.pdf

github:  https://github.com/milesial/Pytorch-UNet

1 Motivation

生物医学图像处理面临的问题

  • 经典卷积网络大部分都是针对图像分类任务的,但是在一些特定场景,如医疗图像处理领域,应是pixel-wise像素级的处理,输入输出均是图像,即图像分割。
  • 生物医学任务中没有很多标注的数据集

为了解决这两个问题,Ciresan用滑窗法来预测patch的类别(patch指像素周围的局部区域)。 该算法有两个主要问题:(1)由于每个patch都需要训练导致这个算法很慢,且patch之间有很多重复。(2)定位准确率和上下文联系之间需要平衡,patch越大需要pooling越多准确率越低,patch越小则不具备上下文联系。

2 U-Net网络

  作者以FCN全卷积神经网络为基础设计了Unet,其中包含两条串联的路径:contracting path用来提取图像特征,捕捉context,将图像压缩为由特征组成的feature maps;expanding path用来精准定位,将提取的特征解码为与原始图像尺寸一样的分割后的预测图像。

  FCN相比,U-Net的第一个特点是完全对称,也就是左边和右边是很类似的,而FCN的decoder相对简单,只用了一个deconvolution的操作,之后并没有跟上卷积结构。第二个区别就是skip connection,FCN用的是加操作(sum),U-Net用的是叠操作(concat)。最重要的是编码和解码(encoder-decoder)的思路,编码和解码常用于压缩图像和去噪声,后来这个思路被用在了图像分割上,非常简洁好用。

  • 网络左边一侧作者称之为contracting path,右边一侧为expanding path。
  • 蓝色箭头为卷积层,卷积层的stride=1,padding=0,因此卷积后特征层的宽高会减2。卷积层后接ReLU激活函数,没有BN层(BN由Google于2015年提出)。
  • 池化层stride=2,池化后宽高减半,通道数不变。池化层之后的卷积层将通道数翻倍。
  • 绿色的up-conv是转置卷积,将特征层的宽高×2,通道数减半。
  • 灰色copy and crop是先对左边的特征层进行中心裁剪(保留中心特征),再与右边path对应的特征层进行通道数上的concat。
  • 最后的1×1的卷积没有ReLU,输出通道数为类别数。

Overlap-tile

  可以发现Unet论文中输入的图像是572×572,但是输出图像大小为388×388。也就是说推理上图黄色部分,需要蓝色区域内的图像数据作为输入。当黄色区域位于边缘时,就会产生边缘数据缺失的情况(上图右边蓝框中的空白部分)。我们可以在预处理中,对输入图像进行padding,通过padding扩大输入图像的尺寸,使得最后输出的结果正好是原始图像的尺寸,同时输入图像块(黄框)的边界也获得了上下文信息从而提高预测的精度,本文用的是mirror padding。我们自己搭建网络的时候,输入输出往往是一样大小的(padding=1),因此不需要考虑这个问题。

3 训练

3.1 数据增强

网络需要大量标注训练样本,生物医学任务中没有数千个标注的数据集,所以需要对数据进行数据扩张。作者采用了弹性变形的图像增广,以此让网络学习更稳定的图像特征。因为数据集是细胞组织的图像,细胞组织的边界每时每刻都会发生不规则的畸变,所以这种弹性变形的增广是非常有效的。论文笔记:图像数据增强之弹性形变(Elastic Distortions)

3.2 损失函数的权重

细胞组织图像的一大特点是,多个同类的细胞会紧紧贴合在一起,其中只有细胞壁或膜组织分割。因此,作者在计算损失的过程中,给两个细胞的边缘部分及细胞间的背景部分增加了损失的权重,以此让网络更加注重这类重合的边缘信息。

如上图所示,图(a)为原始图像,图(b)为人工标注的实例分割ground truth,图(c)为mask,图(d)为每个像素的损失权重weight map。首先用形态学操作获得边界,再用下面的公式计算weight map

其中,wc是为了类别平衡,d1是该像素到最近细胞边界的距离,d2是到第二近的细胞边界的距离。在作者实验中设置w0=10,σ≈5pixels.

3.3 其他

  • 优化器:SGD + momentum(0.99)
  • batch:为了最大限度的使用GPU显存,比起输入一个大的batch size,更倾向于大量输入tiles,因此实验batch size为1。
  • 损失函数:pixel-wise softmax + cross_entropy
  • 初始化高斯分布权重:在具有许多卷积层和通过网络的不同路径的深度网络中,权重的良好初始化非常重要。 否则,网络的某些部分可能会进行过多的激活,而其他部分则永远不会起作用。 理想情况下,应调整初始权重,以使网络中的每个特征图都具有大约单位方差。作者用的高斯分布的权重。

参考

1. 精读论文U-Net

2. 论文笔记:图像数据增强之弹性形变(Elastic Distortions)

3. 研习U-Net

【论文笔记】UNet的更多相关文章

  1. [AI] 论文笔记 - U-Net 简单而又接近本质的分割网络

    越简单越接近本质. 参考资料 U-Net: Convolutional Networks for Biomedical Image Segmentation Abstract & Introd ...

  2. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  3. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  4. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  5. Twitter 新一代流处理利器——Heron 论文笔记之Heron架构

    Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...

  6. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  7. Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

    看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...

  8. 论文笔记(1):Deep Learning.

    论文笔记1:Deep Learning         2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...

  9. 论文笔记(2):A fast learning algorithm for deep belief nets.

    论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...

  10. 论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN

    论文笔记:Towards Diverse and Natural Image Descriptions via a Conditional GAN ICCV 2017 Paper: http://op ...

随机推荐

  1. 微信小程序实战,基于vue2实现瀑布流

    1.什么是瀑布流呢? 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部. 瀑布流对于图片的展现, ...

  2. 【大数据-课程】高途-天翼云侯圣文-Day2:离线数仓搭建分解

    一.内容介绍 昨日福利:大数据反杀熟 今日:数据看板 离线分析及DW数据仓库 明日:实时计算框架及全流程 一.数仓定义及演进史 1.概念 生活中解答 2.数据仓库的理解 对比商品仓库 3.数仓分层内容 ...

  3. 【JUC】交换器Exchanger详解

    欢迎关注专栏[JAVA并发] 前言 JDK中提供了不少的同步工具,现在分享一个相对比较冷门的同步工具--交换器(Exchanger).你知道Exchanger的作用是什么吗?实现机制是什么?可以用来做 ...

  4. Service层

    package com.neu.service; import java.util.List; import com.neu.bean.User;import com.neu.dao.UserDao; ...

  5. 【Redis场景1】用户登录注册

    细节回顾: 关于cookie和session不熟悉的朋友: 建议阅读该博客:https://www.cnblogs.com/ityouknow/p/10856177.html 执行流程: 在单体模式下 ...

  6. C#深拷贝方法

    概述 为什么要用到深拷贝呢?比如我们建了某个类Person,并且实例化出一个对象,然后,突然需要把这个对象复制一遍,并且复制出来的对象要跟之前的一模一样,来看下我们一般会怎么做. 方法一(利用反射实现 ...

  7. 使用浏览器inspect调试app

    使用浏览器inspect调试app 在开发混合项目的过程中,常常需要在app环境排查问题,接口可以使用fiddler等工具来抓包,但是js错误就不好抓包了,这里介绍一种调试工具-浏览器. 1.调试过程 ...

  8. MyBatis是如何初始化的?

    摘要:我们知道MyBatis和数据库的交互有两种方式有Java API和Mapper接口两种,所以MyBatis的初始化必然也有两种:那么MyBatis是如何初始化的呢? 本文分享自华为云社区< ...

  9. 用 while 生成猜数字

    import java.util.Random; import java.util.Scanner; public class zy2 { public static void main(String ...

  10. 数据分析中的SQL如何解决业务问题

    本文来自知乎问答. 提问:数据分析人员需要掌握sql到什么程度? 请问做一名数据分析人员,在sql方面需要掌握到什么程度呢?会增删改查就可以了吗?还是说关于开发的内容也要会?不同阶段会有不同的要求吗? ...