系列文章目录
U-Net语义分割系列(一):
SS-Model【5】:U-Net
U-Net语义分割系列(二):
SS-Model【6】:U2-Net
文章目录
前言
在本文中,作者提出了一种网络和训练策略,该策略依赖于对数据增强的有力使用,以更有效地利用现有的注释样本。该架构由一个捕捉上下文的收缩路径和一个实现精确定位的对称扩展路径组成。
UNet 的初衷是为了解决医学图像分割的问题,之后,UNet 凭借其突出的分割效果而被广泛应用在语义分割的各个方向(如卫星图像分割,工业瑕疵检测等)。
原论文链接:
U-Net: Convolutional Networks for Biomedical Image Segmentation
1. Introduction
这个模型非常优雅,结构对称,全是卷积层,没有全连接。因为这个网络使用更少的数据,取得更好的效果
全卷积网络其实就是一个不断缩小特征图的卷积神经网络,只不过后面的一些层中,将pooling 层换为 unsampling 操作了。
卷积神经网络被大规模的应用在分类任务中,输出的结果是整个图像的类标签。但是 UNet 是像素级分类,输出的则是每个像素点的类别,且不同类别的像素会显示不同颜色,UNet 常常用在生物医学图像上,而该任务中图片数据往往较少。
优点
- 输出结果可以定位出目标类别的位置
- 由于输入的训练数据是 patches,这样就相当于进行了数据增强,从而解决了生物医学图像数量少的问题
缺点
- 它很慢,因为这个网络必须训练每个 patch,并且因为 patch 之间的重叠有很多冗余,这样会导致同样特征被多次训练,造成资源的浪费,导致训练时间的加长且效率也会有所降低,
- 定位准确性和获取上下文信息不可兼得,大的 patches 需要更多的 max-pooling,这样会减少定位准确性,因为最大池化会丢失目标像素和周围像素之间的空间关系,而小 patches 只能看到很小的局部信息,包含的背景信息不够。
2. Network Architecture
UNet 网络结构如下图所示,其网络结构是对称的,形似英文字母 U,故而被称为 UNet
就整体而言,UNet 是一个 Encoder-Decoder 的结构(与 FCN 相同),前半部分是特征提取,后半部分是上采样
2.1. Encoder
以 572 × 572 572 \times 572 572×572 的单通道图像为例
下采样阶段是典型的卷积神经网络结构, 由卷积操作和下采样操作组成
- 重复的两个
3
×
3
3 \times 3
3×3 卷积操作
- stride = 1
- 无 padding 操作,所以每次卷积之后特征图的 H 和 W 都变小了
- 每个卷积后面跟着一个 ReLu 激活函数
- 没经过一次卷积操作,特征图的 channel 数翻倍
- 一个
2
×
2
2 \times 2
2×2 的 max-pooling 层
- 实现 2 倍的下采样率,特征图的高和宽变为原来的 1/2
2.2. Decoder
用以恢复特征图的原始分辨率
- 上采样
- 一个
2
×
2
2 \times 2
2×2 的转置卷积
- 将特征层的高和宽放大为原来的 2 倍
- 转置卷积详细的实现过程可以参考我的另一篇 blog:SS【1】:转置卷积与膨胀卷积
- 一个
2
×
2
2 \times 2
2×2 的转置卷积
- 裁剪 & 拼接(跳层连接)
- 将对应位置的下采样后的特征层(上图中灰色箭头左侧),进行中心裁剪后与转置卷积后的特征层进行 concat 拼接
- 保留了更多的维度 / 位置信息,这使得后面的网络层可在浅层特征与深层特征间自由选择,这对语义分割任务来说更具优势
- 跳层连接通过拼接将底层的位置信息与深层的语义信息相融合
- 在上采样过程中融合下采样过程中的特征图
- 融合方式为concatenate,按特征图通道数进行叠加
- 在实际中,融合的两张特征图尺寸可能不同,一般可采用裁剪和 padding(UNet 采用方式)两种方式进行解决;
- 将对应位置的下采样后的特征层(上图中灰色箭头左侧),进行中心裁剪后与转置卷积后的特征层进行 concat 拼接
- 重复的两个 3 × 3 3 \times 3 3×3 卷积操作
- 最后使用的
1
×
1
1 \times 1
1×1 卷积层是为了将 64 channels 调整为分类个数
- 两类
- 前景
- 背景
- 无 ReLu 激活函数
- 两类
3. Training
3.1. Overlap-tile
目的:解决生物医学上的大图片所带来的显存需求急剧升高问题
网络中没有任何全连接层,只对特征图本身进行了卷积。这样操作就使最后得到的分割遮罩就对应于原图的每个像素,输入图片中就包含所有的上下文纹理信息。
这样的只对特征图本身进行卷积的策略就可以对任何的大图片进行无缝分割,进行 overlap-tile 策略:
- 对于图片中心的像素,我们使用其周围区域来分割它
- 对于图片边缘的像素,由于它没有周围像素,所以我们把图片内像素镜像到图片外,作为边缘像素的周围像素
这种 tiling strategy 很重要,因为它的存在,我们就可以把网络应用于大图片了。一次分割大图片的一个区域即可。训练时还可以不受GPU显存的限制。
3.2. Pixel-wise
目的:解决待分割物体占图片像素比重很大问题
需要分割的细胞紧密相连,相互 touching 的。前景部分很多,背景部分很少,所以,我们提出使用了一个加权 loss,使细胞之间的缝隙有较大的训练权重
3.3. Data augmentation
目的:解决生物医学图像的数据非常少的问题
我们只有很少的数据用于训练。所以我们使用了大量的数据增强,对有限的数据进行了elastic deformations(弹性变形)。这一点在生物医学分割上也非常重要,这中形变非常适合生物组织,形变后也是栩栩如生的。
总结
UNet 的优点主要有:
- 深 / 浅层特征有着各自意义:网络越深,感受野越大,网络关注那些全局特征(更抽象、更本质);浅层网络则更加关注纹理等局部特征特征
- 通过特征拼接来实现边缘特征的找回
- 通过上采样(转置卷积)固然能够得到更大尺寸的特征图,但特征图的边缘是缺少信息的
- 毕竟每一次下采样提取特征的同时,必然会损失一些边缘特征,而上采样并不能找回这些失去的特征