本人研一小白,写博客是为了记录学习笔记,也为了和各位大佬交流,如果文中出现错误,希望各位指正,本人不胜感激!
论文原文名称:U-Net: Convolutional Networks for Biomedical Image Segmentation
论文原文链接:https://arxiv.org/abs/1505.04597
该论文提出的U-Net是用于生物医学图像分割的卷积网络,但是现在其结构也被魔改用于很多图像分割领域。
U-Net网络结构图:
其结构主要包括卷积、池化、上采样和中间的复制裁剪。
卷积:卷积核大小为3×3,步长为1,填充为0;
池化:大小为2×2,步长为2;
上采样:高度、宽度翻倍,通道减半;
复制和裁剪:将特征图进行裁剪,以保证后面的拼接可以完成;
整个网络结构也被称为编码器-解码器,其结构的左边部分是编码器,又称为收缩路径,其包含不同细腻程度的位置信息、分辨率高;结构的右边部分是解码器,又称为扩展路径,其包含不同语义信息丰富程度的上采样图、分辨率低;将低层的特征图进行复制和裁剪后进行拼接的操作可以结合不同网络层中具有不同深度的语义抽象信息和不同细腻程度的位置信息,实现了包含密集位置信息的特征图与包含丰富语义信息的特征图之间的融合,实现像素分类的同时,提高了像素定位的准确性。
论文中还在此网络中做了很多调整,使其能得到更高效的图像分割:
- 重叠瓦片策略
该网络没有任何完全连接的层,只使用每个卷积的有效部分,即分割图仅包含在输入图像中可获得完整上下文的像素。该策略允许通过重叠瓦片策略对任意大的图像进行无缝分割。(该方法的原因是:输入的图像很大时,使用瓦片策略进行平铺分块训练可以使分辨率不受电脑GPU的影响;瓦片策略可以很好的提取像素点特征,充分利用上下文环境;)(重叠瓦片的原因是在内部的边缘处可以使用重叠法来为边缘图像提供像素信息,因为至少是原本的信息没有被改动的,所以该方法比镜像方法效果要好的多)
- 镜像
- 瓦片策略带来了图像边界没有周围像素提供上下文信息的问题,作者通过镜像扩充的办法,给图像边界提供信息,这个方法也会比直接填充0要效果好的多;
- 在论文中输入图像在经过一系列没有填充的卷积操作之后,图像大大减小,希望输入与输出的图像的大小差距不是很大,通过在输入图像处进行扩充;
- 数据增强
采用数据增强的原因是医学可使用的图像比较少,而神经网络学习需要很多图片,所以需要对图像进行弹性形变来进行数据增强。
- 加权损失
采用加权损失的原因是相同类别的触摸对象的分离,使用加权损失,其中触摸单元格之间的分离背景标签在损失函数中获得大的权重。
- 训练
- 使用随机梯度下降实现来训练网络;
- 为了最小化开销并最大限度地利用GPU内存,我们倾向于使用大的输入切片而不是大的批处理大小,因此将批处理减少到单个图像;
- 因此我们使用高动量(0.99),使得大量先前看到地训练样本确定当前优化步骤中地更新;
- 能量函数通过在最终特征图上地逐像素软最大值与交叉熵损失函数相结合来计算的;
- 预先计算每个地面真值分割的权重图,以补偿训练数据集中某个类别的像素的不同频率,并迫使网络学习我们在触摸细胞之间引入的小分离边界,使用形态学操作计算分离边界,计算其权重;
- 在具有许多卷积层和通过网络的不同路径的深度网络中,权重的良好初始化非常重要。否则,网络的某些部分可能给予过度激活,而其他部分则不会做出贡献;
- 当只有很少的训练样本可用时,数据增强对于教会网络所需的不变性和鲁棒性是必不可少的;
本文的结构就差不多是这样,下面是总结的文章创新点和待改进的地方:
创新点:
- 支持少量的训练模型;
- 可以对每个像素点进行分割;
- 训练中使用高梯度下降,high momentum=0.99可以使训练模型处于自我调节过程;
- 权重划分;
- 引入图像镜像;
待改进:
- 不能很好兼顾精确定位和上下文信息;