U-Net: Convolutional Networks for Biomedical Image Segmentation理解二

U-Net: Convolutional Networks for Biomedical Image Segmentation是Olaf Ronneberger等人在全卷积网络(fully
convolutional network)的基础上的改进。

该文章一开始说明了对于医学图像等需要像素级标签预测(即语义分割)的任务。针对这种现象,Ciresan提出了一种 采用动态滑动窗口从原始图像中根据一定的滑动步长来获取patch,然后再将这些patch放到网络中训练。他们设计的网络可以定位,并且用来输入模型的patch远多于原始训练图像,赢得了ISBI 2012挑战。
接着作者说明了这个网络的不足:
1)因为模型对每个patch都会跑一遍,而且在得到的这些patch中,由于移动步长并不是一定patch的大小,所有patch之间存在着大量的冗余,这导致网络跑完比较慢
2)该网络不能很好的平衡 精准定位和有效使用上下文信息这两个方面。若为减少patch的数量,将patch取大一点,那么会需要更多的池化层,而池化是下采样,降低了图像的分辨率就不能很好的联系上下文信息。但patch太小,那么感受野也就小,这样就只能用到一点点上下文信息。

然后作者就引出了他们的网络模型,基于全连接的U-net模型。其结构图如下图所示:
U-Net: Convolutional Networks for Biomedical Image Segmentation理解二_第1张图片
该模型由一条(contracting path)收缩路径(下采样,常规的卷积网络)和(expansive path)扩展路径(上采样,转置卷积网络)组成。共23个卷积层,模型的输入图像和输出图像的大小是不一样的,输出的图像比输入的要小。具体结构请参考

https://blog.csdn.net/aliyanah_/article/details/90110959

这里说一下扩展路径部分,该部分紧接着下采样卷积网络,其整体形状与下采样卷积网络相似,但用上采样操作来代替池化操作,这样可以提高图像的分辨率。每次上采样操作后每个特征映射(feature map)的大小都是之前的一倍,而feature map的数量就减少一半,并与下采样卷积网络对应的层的feature maps结合作者认为这样可以更好的定位,并通过几次连续的卷积操作来获得更准确的输出图像(即对应的分割图像)

作者提出他们的网络相对于fully convolutional network网络的一个重大改进是他们的网络在扩展路径部分有大量的feature channels,就是特征映射很多,这样网络可以向高分辨率层传递更好更多的context information (上下文信息)。并且他们的网络没有全连接层,仅使用每个卷积的有效部分,即,分割图仅包含在输入图像中可获得完整上下文的像素。

对于边缘区域的预测,它的图块存在缺失,作者采用镜像推理( mirroring)来补上,也就是Overlap-tile strategy。这部分我感觉在代码中我感觉没体现出来,但也说一下自己的理解。
U-Net: Convolutional Networks for Biomedical Image Segmentation理解二_第2张图片
对于有些图像,由于本身太大直接输入到模型中都会受到电脑内存的限制,所以一般都会对图像裁剪,分成很多块。如上图中左边白色框中的图像就是原始图像中裁剪出来的一块,对于这块图像,如果直接放到网络中取,由于模型在卷积操作时没有采用padding,所以对于边缘部分的预测就会丢失。那么将裁剪出来的所有图像块预测出来的结果再拼接到一起时就会不完整。overlap-tile strategy就是用来解决这个问题的。首先,如果要预测一个图像块(如上图中的黄色框部分),一般会输入都要比该图像块大(如上图蓝色框部分),这样可以充分利用上下文信息,更好的预测。对于边缘部分,如输入的蓝色框,存在一些信息的缺失,作者会将白色图像块的边缘进行镜像操作(就是沿着图中左边图白色的先进行对称扩充,至于扩充多少就要根据你的卷积操作和转置卷积以及输出图像的大小来定了),这样就可以预测出边缘部分的分割线了。那么得到的所有图像块的预测都是完整的,重新拼接到一起也是完整的,也可以说是无缝的。

Data Augmentation(数据扩充)
由于训练样本较少,作者采用平移、旋转来扩充了数据

模型训练
权重初始化: 标准正态分布权重初始化
带动量的随机梯度下降法(动量为0.99) batch size=1
用交叉熵-soft -max 损失函数
对于相互紧密连接的属于同一类的目标(如细胞),作者会加大粘连目标(细胞)背景区域的损失函数中的权重,这样可以强迫模型学习粘连细胞的边界信息。就是对于损失函数的权重,作者首先会根据真实分割结果计算一个权重映射,对于粘连部分的边界,它的背景权重会大一点。
U-Net: Convolutional Networks for Biomedical Image Segmentation理解二_第3张图片

你可能感兴趣的:(图像处理,python,机器学习,深度学习)