【U-Net】《U-Net:Convolutional Networks for Biomedical Image Segmentation》

在这里插入图片描述
MICCAI-2015



1 Background and Motivation

最近一两年,deep CNN 在许多视觉识别任务(visual recognition)中表现出最好的结果,典型的应用例子是 classification task,然而,在生物医学图像处理方面的应用中,往往需要网络的输出包含定位信息,例如给每个像素都打上标签,而不是只对一个图片打一个标签,而且,生物医学图像处理领域,成千上万的训练集过于奢侈!

Ciresan等人采用滑动窗口的方法,以patch做为输入,扩充训练集的同时,能进行像素级分类(定位)

缺点:

  • 慢,多patch,每个pathc接一个网络,有 overlap,会重复计算
  • 大 patch 中过多的 max-pooling 操作会影响 localization 能力,小 patch 的话上下文信息不足(关于语意分割中“上下文”的理解可以参考: 语义分割上下文信息的定义是什么?

最近的一些方法考虑了 features from multiple layers,能很好的兼顾到定位能力(localization上下文信息(context

作者在 FCN 的基础上(successive layer 来恢复分辨率),提出了 U-Net 结构


U-Net 采用 overlap-tile strategy,可以 seamless segmentation of arbitrarily large images,具体图2所示

在这里插入图片描述
假设原始图片是左图中间的白色区域,现在要对黄色区域进行分割(GPU显存有限,不可能把很大的图片直接丢进GPU来训练),直接把黄色区域输入到网络中会损失边界位置的上下文信息,不利于边界区域的分割,作者通过镜像复制(沿里面的白线复制,沿白色线是镜像对称的)来扩充边界区域的上下文信息!

这样的话,对黄色区域进行分割,首先镜像复制,然后将蓝色区域输入到网络中,采用无 padding 的 Conv(多个 valid Conv,空间分辨率会越卷积越小),就能输出右图中只包含有黄色区域的分割结果


touching objects of the same class(对抱团粘黏在一起的同类别细胞进行分割) 是细胞分割任务中的一项重大挑战!U-Net 中采用了 weighted loss,来增大细胞轮廓的 loss 权重,更好的学习出分离边界(separation border)!
在这里插入图片描述

2 Advantages / Contributions

  • 设计提出了 U-Net 网络,在三个公开数据集上,取得了最好的结果
  • 采用了弹性形变的数据增强方法,可以在样本比较少的生物医学图像应用场景下,采用少量的图片,取得很好的效果
  • 在 512×512的图片上,1s以内能分割出结果

3 Method

3.1 Network Architecture

在这里插入图片描述
在这里插入图片描述

  • 左边 :contracting path to capture context

  • 右边:symmetric expanding path that enables precise localization

下采样,通道数翻倍,上采样,通道数减半!注意 cropping 操作!

采用无 padding 的 Conv,空间分辨率会越卷越小

网路初始化采用高斯分布,标准差为 2 / N \sqrt{2/N} 2/N N N N denotes the number of incoming nodes of one neuron(这是恺明大神的 he_normal 初始化方法!!!he_normal 15年提出,BN也是15年提出,两个观点有些相似耶)
在这里插入图片描述

3.2 Loss Function

Fig 可以看到,输出特征图的大小为 388×388×2,任务是二分类,所以在2的维度上做每个像素的 softmax,配合 cross-entropy 损失!softmax 对应公式如下
p k ( x ) = e a k ( x ) ∑ k ′ = 1 K e a k ′ ( x ) p_k(x) = \frac{e^{a_k(x)}}{\sum_{k'=1}^{K}e^{a_{k'}(x)}} pk(x)=k=1Keak(x)eak(x)

  • x ∈ R 2 x \in \mathbb{R}^2 xR2:横纵坐标
  • k k k 是特征图的 k k k-th 通道, K K K 是类别数(二分类中 K = 2 K=2 K=2,前景和背景)
  • a k ( x ) a_k(x) ak(x) 是特征图第 k k k-th 通道的像素点 x x x 的activation 的值(上一层卷积,Relu 后的)

配合加权了的 cross-entropy 损失(写成损失的话要多个负号,注意和论文里的区别,参考 softmax损失函数理解

E = − ∑ x ∈ R 2 w ( x ) l o g ( p l ( x ) ( x ) ) E=-\sum_{x \in \mathbb{R}^2}w(x)log(p_{l(x)}(x)) E=xR2w(x)log(pl(x)(x))

x x x 进行了加权,损失中多了一项 w ( x ) w(x) w(x)

  • l ( x ) l(x) l(x) 属于 { 1 , … , K } \{1,…,K\} {1,,K},表示每个像素 x x x 的类别标签(二分类问题的话,背景类为0,前景类别为1,只有前景类在计算 loss,参考损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系
  • w ( x ) ∈ R w(x) \in \mathbb{R} w(x)R:是一个权重图,让一些像素在训练的时候,权重更大!根据 GT计算得到,计算方式如下
    w ( x ) = w c ( x ) + w 0 ⋅ e − ( d 1 ( x ) + d 2 ( x ) ) 2 2 σ 2 w(x) = w_c(x)+w_0·e^{-\frac{(d_1(x)+d_2(x))^2}{2\sigma^2}} w(x)=wc(x)+w0e2σ2(d1(x)+d2(x))2
  • w c ( x ) w_c(x) wc(x) 是不同类别的基础权重值
  • d 1 ( x ) ∈ R d_1(x) \in \mathbb{R} d1(x)R 表示当前像素离最近细胞边界的距离
  • d 2 ( x ) ∈ R d_2(x) \in \mathbb{R} d2(x)R 表示当前像素离第二近的细胞边界的距离
  • w 0 = 10 , σ = 5 w_0 = 10,\sigma = 5 w0=10σ=5

可以观察到,如果当前像素离细胞边界比较近, d 1 d_1 d1 d 2 d_2 d2 很小,公式 w ( x ) w(x) w(x)值很大!反之,如果当前像素离细胞边界比较远, d 1 d_1 d1 d 2 d_2 d2 很大,公式 w ( x ) w(x) w(x)值很小!达到了加大边界像素点的权重的目的!

3.3 Data Augmentation

采用 elastic deformations 做为数据增强(因为在生物医学图像处理领域, deformation 是非常常见的 variation,而 elastic deformations 又比较容易在计算机中仿真)

下面这组图总结的比较好
在这里插入图片描述 在这里插入图片描述
参考 U-Net:基于小样本的高精度医学影像语义分割模型

而直接看论文描述看着比较懵圈
在这里插入图片描述
大概的意思就是,把图片划分为 3×3的网格,每个网格根据高斯分布(标准差是10像素)抽样来产生扭曲量,最后用 bicubic interpolation 来补上形变后的像素空缺!
在这里插入图片描述
关键字是扭曲形变,OK!再看下面这组图

在这里插入图片描述
图一划分网格(假设网格是橡皮筋,有弹性),图二借助外力让网格扭曲,图片不动,图三,网格和图片合体,撤去外力,扭曲的网格恢复成方形,图片也跟着变形了!!!
在这里插入图片描述
图四,蓝色是扭曲前的图片,绿色是扭曲后的,没有覆盖到的位置需要用插值方法补上!!!

参考 图象扭曲算法

4 Experiments

4.1 Datasets

  • EM segmentation challenge官网,电子显微镜场景):segmentation of neuronal structures in electron microscopic recordings,ISBI 2012 开始,30 images (512x512 pixels),评价指标,warping error、Rand error、pixel error。
  • a cell segmentation task in light microscopic images(光学显微镜场景):part
    of the ISBI cell tracking challenge 2014 and 2015
    • PhC-U373 数据集,35 partially annotated training images,评价指标 IoU(预测的和GT的交并比)
    • DIC-HeLa 数据集,20 partially annotated training images,评价指标 IoU

在这里插入图片描述

4.2 EM segmentation challenge

在这里插入图片描述
IDSIA 就是Ciresan等人提出的基于滑动窗口的方法

4.3 PhC-U373 and DIC-HeLa

在这里插入图片描述
HeLa 是人类宫颈癌细胞的意思耶,666

5 Conclusion(own)

  • successive layer,localization 和 context

  • 镜像复制padding,给边缘的分割提供上下文信息,提供了一种无缝分割高分辨率的图像的解决思路

  • 图像处理中的扭曲形变了解一下,双三线性差值就算了,哈哈哈!插值方法千千万

  • 采用恺明的 he_normal 初始化,和 BN有点像哟

  • encode 和 decode 的思想来自 Hinton,06年就发在 Nature 上了,这种开山级别的幕后 BOSS 接触的还是太少了,反倒是恺明大神在心中的地位比较高,哈哈哈哈
    在这里插入图片描述
    图片来自 研习U-Net

  • 注意 U-Net 和同年的 FCN 的区别:1)skip connection,一个add一个concatenate;2)decoder,一个一层,一个对称的 U 形,有多层

  • keras 的代码:这个版本输出特征图用的是单 channel 配合 sigmoid activation function 的

6 附录

语义分割的三点奇技淫巧

BCELoss 不等于 mIoU

怎么去直接优化 IoU 呢

论文:Lovász-Softmax!A tractable surrogate for the optimization of the intersection-over-union measure in neural networks

代码:https://github.com/bermanmaxim/LovaszSoftmax

技巧,loss 双倍快乐

def symmetric_lovasz(outputs, targets):
        return (lovasz_hinge(outputs, targets) + lovasz_hinge(-outputs, 1 - targets)) / 2

加 OHEM + focal loss

def focal_loss(self, output, target, alpha, gamma, OHEM_percent):
        output = output.contiguous().view(-1)
        target = target.contiguous().view(-1)

        max_val = (-output).clamp(min=0)
        loss = output - output * target + max_val + ((-max_val).exp() + (-output - max_val).exp()).log()

        # This formula gives us the log sigmoid of 1-p if y is 0 and of p if y is 1
        invprobs = F.logsigmoid(-output * (target * 2 - 1))
        focal_loss = alpha * (invprobs * gamma).exp() * loss

        # Online Hard Example Mining: top x% losses (pixel-wise). Refer to http://www.robots.ox.ac.uk/~tvg/publications/2017/0026.pdf
        OHEM, _ = focal_loss.topk(k=int(OHEM_percent * [*focal_loss.shape][0]))
        return OHEM.mean()
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值