快速理解Unet的网络结构

Unet

  • 前言
  • FCN
  • Unet

前言

U-Net和FCN非常的相似,U-Net比FCN稍晚提出来,但都发表在2015年,和FCN相比,U-Net的第一个特点是完全对称,也就是左边和右边是很类似的,而FCN的decoder相对简单,只用了一个deconvolution的操作,之后并没有跟上卷积结构。第二个区别就是skip connection,FCN用的是加操作(summation),U-Net用的是叠操作(concatenation)。这些都是细节,重点是它们的结构用了一个比较经典的思路,也就是编码和解码(encoder-decoder),早在2006年就被Hinton大神提出来发表在了nature上。

FCN

这里我门先来看一下FCN和CNN的区别。关于这两点的区别,这篇文章总结的非常好。
我们知道, 通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature map)映射成一个固定长度的特征向量。以AlexNet为代表的经典CNN结构适合于图像级的分类和回归任务,因为它们最后都期望得到整个输入图像的一个数值描述(概率),比如AlexNet的ImageNet模型输出一个1000维的向量表示输入图像属于每一类的概率(“全连接层 + softmax归一化”的结构)。

下图中的猫, 输入AlexNet网络中, 经过后面的全连接层后得到一个长为1000的输出向量, 再加上softmax归一化后即可以表示输入图像属于每一类的概率, 其中在“tabby cat”这一类统计概率最高。
快速理解Unet的网络结构_第1张图片
这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。

CNN一般用作图像级的分类,而FCN可以对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类(最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本).如下图所示

快速理解Unet的网络结构_第2张图片
简单的来说,FCN与CNN的区域在把于CNN最后的全连接层换成卷积层,输入一张原始图,输出的是一张已经Label好的图片,做到了端到端.

这里再说一下实现吧:
FCN采用了两种上采样的方法, 一种是采用反卷积的方法,另外一种是采用Resize,如双线性插值直接缩放,类似于图像缩放。

Unet

我们先来看一下UNET的网络结构
直入主题,U-Net的U形结构如图1所示。网络是一个经典的全卷积网络(即网络中没有全连接操作)。网络的输入是一张 572 × 572 572\times572 572×572 的边缘经过镜像操作的图片(input image tile),关于“镜像操作“会在1.2节进行详细分析,网络的左侧(红色虚线)是由卷积和Max Pooling构成的一系列降采样操作,论文中将这一部分叫做压缩路径(contracting path)。压缩路径由4个block组成,每个block使用了3个有效卷积和1个Max Pooling降采样,每次降采样之后Feature Map的个数乘2,因此有了图中所示的Feature Map尺寸变化。最终得到了尺寸为 32 × 32 32\times32 32×32的Feature Map。

网络的右侧部分(绿色虚线)在论文中叫做扩展路径(expansive path)。同样由4个block组成,每个block开始之前通过反卷积将Feature Map的尺寸乘2,同时将其个数减半(最后一层略有不同),然后和左侧对称的压缩路径的Feature Map合并,由于左侧压缩路径和右侧扩展路径的Feature Map的尺寸不一样,U-Net是通过将压缩路径的Feature Map裁剪到和扩展路径相同尺寸的Feature Map进行归一化的(即图1中左侧虚线部分)。扩展路径的卷积操作依旧使用的是有效卷积操作,最终得到的Feature Map的尺寸是 338 × 338 338\times338 338×338。由于该任务是一个二分类任务,所以网络有两个输出Feature Map。
快速理解Unet的网络结构_第3张图片

你可能感兴趣的:(深度学习)