U-net论文详解

U-net
论文:《U-Net: Convolutional Networks for Biomedical Image Segmentation》
提交日期:2015年5月
论文链接:https://arxiv.org/abs/1505.04597v1

*这仅是我个人的学习笔记,很多地方也不完善,原博客地址:
https://zhuanlan.zhihu.com/p/43927696

U-net 是基于FCN的一个语义分割网络,适合用来做医学图像的分割。U-Net是比较早的使用全卷积网络进行语义分割的算法之一,论文中使用包含能够捕获上下文语义的压缩路径和可实现精确定位的扩展路径的对称U形结构。

特点:从很少的图像端到端地进行训练,且优于先前的滑动窗口卷积网络。

其实验是一个比较简单的ISBI cell tracking(电子显微镜的细胞图像分割)数据集,由于本身的任务比较简单,U-Net仅仅通过30张图片并辅以数据扩充策略便达到非常低的错误率。

论文源码已开源,可惜是基于MATLAB的Caffe版本。虽然已有各种开源工具的实现版本的U-Net算法陆续开源,但是它们绝大多数都刻意回避了U-Net论文中的细节,虽然这些细节现在看起来已无关紧要甚至已被淘汰,但是为了充分理解这个算法,笔者还是建议去阅读作者的源码,地址如下:https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/

1.滑动窗口卷积网络

卷积网络的典型利用是在分类任务,输出任务的单个类标签。然而,在许多视觉任务,尤其是生物医学图像处理,目标输出应该包括定位等,每个像素都应该有类标签。另外,大量的训练图片往往超过生物医学图像的任务要求。所以,Ciresan等训练了一个神经网络,用滑动窗口来预测每个像素的类标签,提供像素的周围区域(patch)作为输入。

优点:

第一,这个网络可以定位。
第二,输入的是patches,这样训练数据就比图片数据多很多。

缺点:
第一,它很慢,因为这个网络必须训练每个patch,并且因为patch间的重叠有很多的冗余。

冗余会造成什么影响呢? ①时间和资源的浪费
卷积核里面的W,就是提取特征的权重,两个块如果重叠的部分太多,这个权重会被同一些特征训练两次,造成资源的浪费,减慢训练时间和效率。虽然说会有一些冗余,训练集大了,准确率不就高了吗?但对于相同的图片来说,重叠的东西都是相同的。
②过拟合
举个例子,我用一张相同的图片训练20次,按照这个意思也是增大了训练集啊,可是会出现什么结果呢,很显然,会导致过拟合,也就是对你这个图片识别很准,别的图片就不一定了。

第二,定位准确性和上下文间不可兼得。
patch大,分辨率低,丢失信息。
patch小,背景信息少。

大patch需要更多的max-pooling层这样减小了定位准确性?
因为以这个像素为中心的点进行分类,如果patch太大,由于全连接层的固定输出,最后经过全连接层的前一层大小肯定是不变的,如果你patch大就需要更多的pooling达到这个大小。而且Pooling层会降低分辨率,丢失信息。
而小的patches只能看到很小的局部信息,包含的背景信息不够。

2.U-Net

在这里插入图片描述

网络是一个经典的全卷积网络(无全连接)。

nput image tile:572×572×1 的边缘经过镜像操作的图片。

结构:
压缩路径(contracting path)是由卷积和Max Pooling构成的一系列降采样操作。压缩路径由4个block组成,每个block使用了3个valid卷积和1个Max Pooling降采样,每次降采样之后Feature Map的个数乘2,因此有了图中所示的Feature Map尺寸变化。最终得到了尺寸为32×32×1 的Feature Map。

扩展路径(expansive path)由4个block组成,每个block开始之前通过反卷积将Feature Map的尺寸乘2,同时将其个数减半(最后一层略有不同),然后和左侧对称的压缩路径的Feature Map合并,由于左侧压缩路径和右侧扩展路径的Feature Map的尺寸不一样,U-Net是通过将压缩路径的Feature Map裁剪到和扩展路径相同尺寸的Feature Map进行归一化的。

1×1卷积做分类,最终得到的Feature Map的尺寸是388×388 。由于该任务是一个二分类任务,所以网络有两个输出Feature Map。最后得到的两张heatmap,例如第一张表示的是第一类的得分(即每个像素点对应第一类都有一个得分),第二张表示第二类的得分heatmap,然后作为softmax函数的输入,算出概率比较大的softmax类,选择它作为输入给交叉熵进行反向传播训练

2.1 U-Net的输入

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200811003244692.png

首先,数据集我们的原始图像的尺寸都是512×512的。为了能更好的处理图像的边界像素,U-Net使用了镜像操作(Overlay-tile Strategy)来解决该问题。
镜像操作
镜像操作即是给输入图像加入一个对称的边,那么边的宽度是多少呢?一个比较好的策略是通过感受野确定。因为有效卷积是会降低Feature Map分辨率的,但是我们希望512×512的图像的边界点能够保留到最后一层Feature Map。所以我们需要通过加边的操作增加图像的分辨率,增加的尺寸即是感受野的大小,也就是说每条边界增加感受野的一半作为镜像边。

感受野计算:
在这里插入图片描述
这也就是为什么U-Net的输入数据是572×572的。572的卷积的另外一个好处是每次降采样操作的Feature Map的尺寸都是偶数,这个值也是和网络结构密切相关的。

2.2 U-Net的损失函数

ISBI数据集的一个非常严峻的挑战是紧密相邻的物体之间的分割问题。
在这里插入图片描述
如图所示,(a)是输入数据,(b)是Ground Truth,©是基于Ground Truth生成的分割掩码,(d)是U-Net使用的用于分离边界的损失权值。
那么该怎样设计损失函数来让模型有分离边界的能力呢?U-Net使用的是带边界权值的损失函数
在这里插入图片描述

3. 数据增强

由于训练集只有30张训练样本,作者使用了数据扩充的方法增加了样本数量。并且作者指出任意的弹性形变对训练非常有帮助。

数据增强在训练样本比较少的时候,能够让神经网络学习一些不变性,弹性变换是本文使用的方法。
因为弹性形变是实际细胞中比较常见的一种形变,如果我们能采取数据增强的算法去使网络学习这种形变的不变性,就可以在分割数据集很小的情况下,使网络具有遇见弹性形变还是可以准确的检测出,相当于就是把原图,做了下弹性变形,然后,就相当于扩大了数据集嘛,自然网络就能适应这种弹性变化了,在遇见弹性变形的时候一样可以正确的分类分割。
在这里插入图片描述
在这里插入图片描述

4. 总结

U-Net是比较早的使用多尺度特征进行语义分割任务的算法之一,其U形结构也启发了后面很多算法。但其也有几个缺点:
1.有效卷积增加了模型设计的难度和普适性;目前很多算法直接采用了same卷积,这样也可以免去Feature Map合并之前的裁边操作
2.其通过裁边的形式和Feature Map并不是对称的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值