UNet网络

UNet

本博客主要对UNet网络进行讲解,以下为文章目录:

  • UNet 原论文作用
  • UNet 网络结构
  • UNet 分多批次训练
  • 镜像得到边缘缺失
  • 数据集展示

本文参考资料如下:

  • UNet原论文 https://arxiv.org/pdf/1505.04597.pdf
  • U-Net网络结构讲解(语义分割) https://www.bilibili.com/video/BV1Vq4y127fB/
  • 语义分割前言 https://www.bilibili.com/video/BV1ev411P7dR/
  • 转置卷积(transposed convolution) https://www.bilibili.com/video/BV1mh411J7U4
  • U-Net原理分析与代码解读 https://zhuanlan.zhihu.com/p/150579454?utm_medium=social&utm_oi=933364753825456128&utm_psn=1565058304753229824&utm_source=wechat_session
  • 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割) https://www.bilibili.com/video/BV1rq4y1w7xM?p=1&vd_source=61b5ff132eca1d44ecddf022bf9b9def

UNet 原论文作用

UNet原论文于2015年提出,主要影响领域是生物医学影像。

UNet网络_第1张图片

UNet网络结构

UNet网络是以Encoder-Decoder为主要形式,它的主要网络结构形式如下:

UNet网络_第2张图片

我们在这里展开讲解一下网络的实现形式,借助如下两个公式:

  1. 输入特征矩阵channel = 卷积核深度;输出特征矩阵channel = 卷积核个数
  2. 输出特征矩阵大小计算公式: N = ( W − F + 2 P ) / S + 1 N=(W-F+2P)/S+1 N=(WF+2P)/S+1。其中输入图片大小 W ∗ W W*W WW,卷积核大小 F ∗ F F*F FF,步长 S S S,补充(padding)像素数 P P P

conv 3x3, ReLU

在每一次下采样后都会给一个翻倍卷积核个数的卷积层,使得输出特征矩阵的channel翻倍;或者每次上采样后会给一个缩小卷积核个数的卷积层,使得输出特征矩阵的channel缩小为二分之一。

输出特征矩阵大小 = (W - 3 + 0)/1 + 1 = W -2 。 故输出特征矩阵的大小-2。(主流实现形式为(W - 3 + 2)/1 + 1 = W, 故特征矩阵大小不变,最终输出大小=最终输入大小)

可能会加上BN层。

copy and crop

进行中心裁剪后使得特征矩阵大小相等后再拼接。(

max pool 2x2

MaxPooling下采样层,使得输出特征矩阵的大小变为原先的二分之一,channel不变。但在随后的conv 3x3中channel变为两倍。

up-conv 2x2

上采样,这里采用的是转置卷积,线性插值等。经过这一层操作会使得输出矩阵大小变为原来的两倍,channel变为原来的二分之一。

conv 1x1

最后的一层卷积层没有激活函数,特征矩阵大小不变,只改变channel。

UNet 分多批次训练

对于一个医学图像,他的图片大小往往是较大的,为了能够有一个较好的预测结果,我们往往将原图进行裁剪后分批次进行训练,如下图:

UNet网络_第3张图片

镜像得到边缘缺失

根据UNet原论文,我们最终要预测的输出图片(下图Fig.2. 黄色框区域)是小于输入图片(下图Fig.2. 蓝色框区域)的,故我们需要对输入图片的像素进行扩充才能使得最终输出图片的大小等于输入图片的大小。我们采用进行镜像方式对原输入图进行扩充,如下所示:

UNet网络_第4张图片

数据集展示

对于UNet数据集如下。其中图a指的是原图片,是一种灰度图片;图b是进行标注后的图片,不同颜色代表不同细胞;图c是UNet语义分割图片,前景和背景表示细胞和非细胞;但是细胞和细胞之间空隙较小,比较难分割,所以这里采用了图d的权重标注,使得细胞间的权重增加,使得更好地分割细胞。

UNet网络_第5张图片

你可能感兴趣的:(人工智能)