UNet网络学习笔记

文献:U-Net: Convolutional Networks for Biomedical Image Segmentation

代码:U-Net: Convolutional Networks for Biomedical Image Segmentation (uni-freiburg.de)

本文用于个人学习,学习过程以原论文为主。如有错误,欢迎指正🙏

Abtracts

一些渣翻

很多赞同的声音认为深度网络需要成千上万的附加训练采样。本文中,我们提出一种网络和训练策略依赖于数据扩增。这个结构包括一个捕捉文本的方法和一个能精确定位的对称扩展方法。我们展现了这种网络可以从非常少的图像被训练端到端并相较于之前最好的方法(滑动窗口卷积神经网络)其在对于电子显微镜堆栈中神经结构分类的ISBI挑战赛中表现更出色。使用相同的网络在转换的轻量显微镜图像上训练,我们赢得了2015年ISBI细胞追踪挑战赛。然而,网络是快速的。在最新的 GPU 上,分割一幅 512x512 的图像只需不到一秒钟的时间。

1.Introduction

在过去的两年,深度卷积网络在许多视觉识别任务领域大放光彩。尽管卷积网络已经存在很长时间,但是他们的成功由于可训练集群大小和可考虑的网络大小而受限。Krizhevsky的突破在于其在具有1百万训练图像的ImageNet数据集上使用8个layers和数百万的参数训练网络。从那以后,更大更深层的网络都能够被训练。

卷积网络的经典用途就是分类任务,其输出图像为单分类标签。然而,在很多视觉任务中,特别是生物医学图像处理,理想输出应具有定位功能,一个分类标签应具体对应某一像素。并且,成千上万的训练图像通常超过生物医学任务领域数量。因此,Ciresan训练了一个滑动窗口建立的网络来预测每一像素点的分类标签,具体通过提供像素点周围得到位置信息作为输入。首先,网络是定位的,其次,训练数据转换为patch要比训练图像多得多哦。其训练结果在2012年赢得EM分类任务。显然,Ciresan的策略有两大缺点。1.它很慢,由于其网络必须对与每一个patch单独运行,这对于重叠的补丁块是非常冗余的。更大的patch需要更多的最大池化层,这会降低定位精度,然而小patch使得网络只能看见非常少的有用信息。更新的研究推出了一种分类器,从大量的层中考虑特征,精确定位和信息的使用都得到了更好的实现。

本文中,我们提出了一种更优雅的架构,称为“全卷积神经网络”。我们证明了这一架构可以在较少的训练图像上实现精确定位。核心思想是通过继承一些层来补充一个contract网络。为了定位,联接通道的一些特征与高采样联合。通过这些,一个继承的卷积层可以学习更加精确的定位。

在我们的架构中,一个重要的修改是在上采样部分我们同样拥有大量的特征通道,使得网络可以向更高的分辨率层传播信息。因此,扩张路径与收缩路径基本对称,形成一个 U 型结构。整个网络没有任何全连接层只使用了每个卷积的活跃部分,分割图只包含输入图像中具有完整上下文的像素。这种策略可以通过重叠-切片策略对任意大的图像进行无缝分割。为预测在图像边缘位置的像素,错失的信息通过镜像输入图像进行推断。这种策略对于将网络应用在大型图像上是十分重要的,其他方法将受限于GPU。我们的任务可利用的训练数据是十分有限的,我们通过对可用训练图像进行弹性变换来进行数据扩增。另外一个挑战就是接触同类对象的分离,我们使用权重损失。

2. Network Architecture

原论文这部分比我想象中短很多,可能借鉴了一些博客。

它由收缩路径(左侧)和扩展路径(右侧)组成。收缩路径遵循卷积网络的典型架构。它包括重复应用两个 3x3 卷积(无填充卷积),每个卷积后都有一个整流线性单元(ReLU)和一个步长为 2 的 2x2 最大池化操作来进行下采样。在每个下采样步骤中,我们都会将特征通道的数量增加一倍。扩展路径中的每一步都包括对特征图进行一次上采样,然后进行一次 2x2 卷积(up-convolution),将特征通道数减半;与收缩路径中相应裁剪的特征图进行连接;以及两次 3x3 卷积,每次卷积后都进行一次 ReLU。由于每次卷积都会损失边界像素,因此必须进行裁剪。在最后一层,使用 1x1 卷积将每个 64 分量的特征向量映射到所需的类别数。网络总共有 23 个卷积层。

为了实现输出分割图的无缝平铺,必须选择输入平铺的大小,使所有 2x2 最大池化操作都应用于 x 和 y 大小相同的图层。

原论文到这里就介绍结束了网络架构,下面参考了一些讲解。

参考视频:https://www.youtube.com/watch?v=NhdzGfB1q74

 UNet首先针对医学领域图像分割问题提出,后因其在提高输入输出图像分辨率出色表现被广泛应用。UNet有一个编码器和解码器组成。编码器负责从输入图像中提取特征,解码器负责对中间特征进行上采样并产生最终输出。编码器和解码器是对称的,中间通过路径连接,故称为U型结构。

1️⃣特征通过重复的卷积层和最大池化层组成的编码器传递。从上图中可以看到,蓝色框中的部分即为编码器组成,其中横向蓝色箭头代表3×3的卷积层,每个卷积层后带有一个ReLU,每经历两个卷积层就会遇见一个步长为2的2×2最大池化层进行特征提取(向下的红色箭头),也就是下采样过程,从图中还可以看到,经过下采样后特征通道从64变为128,再有128变为256,最终经过4次下采样过程变为1024,即每下采样一次特征通道数量翻倍。

2️⃣右侧的红色框中部分为解码器组成,经编码器提取的特征通过解码器进行上采样。其中编码器的特征副本通过连接路径(绿色框中部分)进行与解码器的特征相连接,解码器最后一层产生输出。上采样过程同样由3×3的卷积层+RLU组成,与下采样不同的是,上采样在经历两隔卷积层后不再设有最大池化层,而是一个2×2的卷积(绿色向上箭头),将特征通道数减半。并与编码器(即为原论文中的收缩路径)对应连接路径传过来的特征通道数量进行连接,同样经过四次上采样过程,特征通道数压缩至64。每次卷积会损失边界像素,要进行裁剪。最后输出层,使用一个1×1卷积将每个64分量的特征向量映射到所需的类别数。

3️⃣连接路径,分为两种。一种被称为bottleneck瓶颈(红色箭头),一种被称为connecting paths(绿色箭头)。后者只是简单复制编码器对称部分的特征,并将它们与解码器中相对应的阶段连接起来。这使得后续卷积层可以同时操作解码器和编码器特征。解码器特征包含更多的语义信息,编码器特征包含更多的空间信息。

bottleneck瓶颈部分是编码器转换为解码器的部分,先是一个下采样最大池化层,两个卷积层,最后一个上采样的卷积层。

编码器(收缩路径)为什么要对特征通道加倍处理?

在学习编码器的时候我在想,为什么对于特征通道进行加倍处理了还要叫收缩路径?

✅这是因为下采样过程中,每经历两个3×3卷积层+ReLU后,会有一个步长为2的2×2的最大池化层,相当于在图像上平滑一个大小为2×2的滑动窗口,每次移动2个步长距离,每次选择窗口内最大值。这显然降低了空间维度,为了补偿这一点,每次下采样之后将通道数翻倍。所以收缩路径是指最大池化过程的维度收缩,特征通道翻倍也是为了弥补这一点。

解码器(扩展路径)上采样过程采用2×2的卷积层进行特征通道减半操作

✅上采样操作恢复在编码阶段丢失的特征的空间分辨率

3.Traning

输入图像和对应的分类图被用来训练带有随机梯度下降的网络,输出图像要比输入图像小,为了最小化开销并最大化利用GPU,我们倾向于使用大尺寸的输入图块,而不是大尺寸的批处理,因此将批处理缩减为单幅图像。因此,我们使用了较高的动量(0.99),从而使大量以前见过的训练样本决定了当前优化步骤中的更新。能量函数由最终特征图上的像素softmax与交叉熵损失函数计算得出。

接着介绍了soft-max函数

 soft-max被定义为,其中ak(x)代表在像素点x处特征通道k处的活跃值。K是标签数,pk(x)是最大似然函数。交叉熵函数定义,l是每个像素点的真实标签,w是权重图,我们认为一些像素点在训练中更加重要。

我们预计算了每个ground truth 分类的权重图,以补偿训练数据集中某个类别像素出现的不同频率,并迫使网络学习我们在相邻单元之间引入的微小分离边界。权重图计算公式如下

wc用来权衡class的频率,d1代表最近的细胞边界的距离 ,d2代表第二近的细胞边界距离。在我们的实验中设置w0=10,的σ≈5。

在具有很多卷积层的深度网络中,有不同的路径穿过网络,一个好的权重初始化是非常重要的。否则,网络的部分将十分活跃,其他部分则不起作用。理想情况下,初始权重的调整应使网络中的每个特征图都具有近似单位方差。对于我们这种架构的网络(卷积层和 ReLU 层交替出现),可以通过从标准偏差为 p2=N 的高斯分布中提取初始权重来实现。N 表示一个神经元的输入节点数。例如,对于前一层的 3x3 卷积和 64 个特征通道,N = 9 ×64 = 576。

3.1 Data Augmentation

在只有少量训练样本时,数据扩增对于教会网络稳健性十分重要。在显微图像中,我们主要需要移动和旋转不变性,以及对变形和灰度值变化的稳健性。尤其是训练样本的随机弹性变形,似乎是利用极少注释图像训练分割网络的关键概念。我们在 3 × 3 的网格上使用随机位移向量生成平滑变形。位移从标准偏差为 10 像素的高斯分布中采样。然后使用双三次插值法计算每个像素的位移。收缩路径末端的drop-out层会执行进一步的隐式数据增强。

4.Experiments

 实验这部分,没有复现原文,在b站找了一个视频手敲了一边unet网络

视频链接:图像分割UNet硬核讲解(带你手撸unet代码)_哔哩哔哩_bilibili

5.Conclusion

u-net 架构在不同的生物医学分割应用中都取得了很好的性能。由于使用了弹性变量进行数据扩充,它只需要很少的注释图像,而且在 NVidia Titan GPU(6 GB)上的训练时间非常合理,仅需 10 个小时。我们提供了基于 Caffe的完整实现和训练好的网络。我们确信,u-net 架构可以轻松应用于更多任务。

渣翻完结撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值