当前位置:   article > 正文

【霹雳吧啦】手把手带你入门语义分割10:U-Net 网络结构(Encoder-Decoder)_霹雳巴拉 unet网络

霹雳巴拉 unet网络

目录

前言

Preparation

一、U-Net 网络的介绍

1、Encoder 部分

2、Decoder 部分

3、主流的实现方式 

二、U-Net 网络的实际使用


前言

这篇文章是我根据 B 站 霹雳吧啦Wz 的《深度学习:语义分割篇章》中的 U-Net 网络结构讲解(语义分割)所作的学习笔记,涵盖内容如目录所示,希望能为正在学习语义分割的小伙伴们提供一些帮助ヾ(^▽^*))) 因为才刚刚开始接触语义分割,所以在表达上可能比较幼稚,希望王子公主们多多包涵啦!如果存在问题的话,请大家直接指出噢~

Preparation

相关论文:U-Net: Convolutional Networks for Biomedical Image Segmentation

【补充】这篇论文是针对 生物医学影像 提出的,所以在提到 U-Net 时,我们通常会想到生物医学影像~

一、U-Net 网络的介绍

 U-Net 网络的结构为 Encoder-Decoder ,图中的每一个长条矩形都对应一个特征层,每一个箭头都对应一种操作:

  • 图中 U 形的左侧为 Encoder 部分,作用:特征提取,下采样
  • 图中 U 形的右侧为 Decoder 部分,作用:上采样,得到分割图

原论文作者将左侧部分称为 contracting path ,右侧部分称为 expansive path ,注意 输入输出特征图的宽高不同

Fig. 1. U-net architecture (example for 32x32 pixels in the lowest resolution). Each blue box corresponds to a multi-channel feature map. The number of channels is denoted on top of the box. The x-y-size is provided at the lower left edge of the box. White boxes represent copied feature maps. The arrows denote the different operations.

针对论文给出的 U-Net 网络结构图,我们来分步骤进行具体讲解(结合对应的图片):

1、Encoder 部分

输入:572 x 572 x 1 的单通道图片

  • 操作1:先通过卷积核大小为 3 x 3 的卷积层,padding = 0,stride = 1,再通过 ReLU 层(BN 层在当时不流行)。
  • 效果1:每进行一次上述操作,特征图的宽高就会各自减少 2 ,连续两次操作后,特征图的宽高变为 568 x 568 ,通道数变为 64 。
  • 操作2:通过 2 x 2 的最大池化层,进行下采样。
  • 效果2:特征图的宽高缩小为原来的一半,即 284 x 284 ,通道数不变。

——开始套娃 ( •̀ .̫ •́ )✧

  • 操作3:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 翻倍,得到 280 x 280 x 128 的特征图。
  • 操作4:通过 1 次最大池化(下采样),将特征图的宽高缩小一半,得到 140 x 140 x 128 的特征图。
  • 操作5:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 翻倍,得到 136 x 136 x 256 的特征图。
  • 操作6:通过 1 次最大池化(下采样),将特征图的宽高缩小一半,得到 68 x 68 x 256 的特征图。
  • 操作7:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 翻倍,得到 64 x 64 x 512 的特征图。
  • 操作8:通过 1 次最大池化(下采样),将特征图的宽高缩小一半,得到 32 x 32 x 512 的特征图。
  • 操作9:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 翻倍,得到 28 x 28 x 1024 的特征图。

Encoder 输出:28 x 28 x 1024 的特征图

2、Decoder 部分

Decoder 输入:28 x 28 x 1024 的特征图

  • 操作1:通过 2 x 2 的转置卷积层,进行上采样。
  • 效果1:特征图的宽高扩大两倍,channel 通道数减半,即得到 56 x 56 x 512 的特征图。
  • 操作2:将左侧对应部分的特征图进行 中心裁剪 ,得到与右侧大小相同的特征图,再与右侧的特征图进行 Concat 拼接
  • 效果2:特征图的宽高不变,channel 通道数扩大两倍,即得到 56 x 56 x 1024 的特征图。
  • 操作3:先通过卷积核大小为 3 x 3 的卷积层,padding = 0,stride = 1,再通过 ReLU 层。
  • 效果3:每进行一次上述操作,特征图的宽高就会各自减少 2 ,连续两次操作后,特征图的宽高变为 52 x 52 ,通道数变为 512 。

——开始套娃 ( •̀ .̫ •́ )✧

  • 操作4:进行 1 次转置卷积(上采样),将特征图的宽高扩大两倍,将 channel 减半,得到 104 x 104 x 256 的特征图。
  • 操作5:将左侧对应部分的特征图进行中心裁剪,再与右侧进行拼接,将 channel 翻倍,得到 104 x 104 x 512 的特征图。
  • 操作6:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 减半,得到 100 x 100 x 256 的特征图。
  • 操作7:进行 1 次转置卷积(上采样),将特征图的宽高扩大两倍,将 channel 减半,得到 200 x 200 x 128 的特征图。
  • 操作8:将左侧对应部分的特征图进行中心裁剪,再与右侧进行拼接,将 channel 翻倍,得到 200 x 200 x 256 的特征图。
  • 操作9:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 减半,得到 196 x 196 x 128 的特征图。
  • 操作10:进行 1 次上采样(上采样),将特征图的宽高扩大两倍,将 channel 减半,得到 392 x 392 x 64 的特征图。
  • 操作11:将左侧对应部分的特征图进行中心裁剪,再与右侧进行拼接,将 channel 翻倍,得到 392 x 392 x 128 的特征图。
  • 操作12:通过 2 次卷积,将特征图的宽高各自减少 2 * 2 = 4 ,将 channel 减半,得到 388 x 388 x 64 的特征图。

——最后一步 ( •̀ .̫ •́ )✧

  • 操作13:通过 1 x 1 的卷积层 ,其卷积核个数为类别个数,原论文只有前景和背景 2 个类别,最终得到 388 x 388 x 2 的特征图。

输出:388 x 388 x 2 的特征图

3、主流的实现方式 

现在主流的实现方式:将自己的卷积层加上 padding ,并在 Conv 与 ReLU 之间加上 Batch Normalization 模块。

采用这种实现方式后,以下图为例,和上面的操作相同,64 x 64 x 512 的特征图在下采样后变成 32 x 32 x 512 的特征图,然后再依次通过 2 个卷积层,但由于卷积层有了 padding ,故不再改变特征图的宽高,即不用像之前一样各自减少 4 ,得到 32 x 32 x 1024 的特征图。接着,使用转置卷积进行上采样,特征图的宽高扩大两倍,通道数减半,得到 64 x 64 x 512 的特征图。这时可以发现,我们不再需要对左侧对应的特征图进行中心裁剪,直接拿过来进行 Concat 拼接即可。注意,采用这种实现方式时, 输入输出特征图的宽高相同

二、U-Net 网络的实际使用

原论文还提供了 U-Net 网络的实际使用,如下图所示,蓝色框区域是我们的输入图像,黄色框区域是我们的分割图像。

Fig. 2. Overlap-tile strategy for seamless segmentation of arbitrary large images (here segmentation of neuronal structures in EM stacks). Prediction of the segmentation in the yellow area, requires image data within the blue area as input. Missing input data is extrapolated by mirroring.

【题外话】针对 高分辨率的图像 进行分割时,若直接把整张图片放到模型中进行预测,可能会导致显存“爆炸”,因此现在常用的方法是:每次只去分割一小块区域(batch),相邻的两个区域通常会有重叠的部分( overlap ),这是为了更好地分割边界区域的信息。

【说明】若没有 overlap ,预测区域 1 边界位置处的分割图时,由于没有利用其右侧的图像信息,其分割的结果并不是那么精确;同样地,预测区域 2 边界位置处的分割图时,由于没有利用其左侧的图像信息,其边缘位置的分割效果也不佳。

再回到原论文提供的图,这里假设我们要预测的图像为红色框区域。黄色框区域的分割图需要用到蓝色框区域的信息,但是在图像边缘通常没有这些信息,需要 镜像 对应部分来补全缺失的边缘信息,然后才能进行分割。

【补充】事实上,当采用 U-Net 网络的主流实现方式时,因为在卷积时会有 padding 来保证输入特征图的大小与输出特征图的大小相同,所以不需要考虑边缘信息的缺失问题。

最后来讲解原论文中的图 3 ,也是对细胞图片进行分割:

  • 图 a :分割原图的灰度图
  • 图 b :人工标注的实例分割的标签数据,每个细胞用不同的颜色表示
  • 图 c :语义分割任务,只有前景和背景两个类别
  • 图 d :热力图,训练时针对 ground truth 每个像素的权重,细胞间的背景区域施加更大的权重,大片的背景区域施加较小的权重

Fig. 3. HeLa cells on glass recorded with DIC (differential interference contrast) microscopy. (a) raw image. (b) overlay with ground truth segmentation. Different colors indicate different instances of the HeLa cells. (c) generated segmentation mask (white: foreground, black: background). (d) map with a pixel-wise loss weight to force the network to learn the border pixels.

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号