在医学领域的图像分割任务中,几乎随处可见 U-Net 的身影,为此特别去读了原文,也根据原文自己用 Keras 实现 了一下论文中的架构。U-Net 这个架构的提出实际上受到了全卷积网络 FCN 的启发,因此在解释 U-Net 之前,先通过全卷积网络 FCN 做一个铺垫,具体的文章参见 Fully Convolutional Networks for Semantic Segmentation 这篇文章。
全卷积网络 Fully Convolutional Neural Network, FCN
所谓全卷积网络是指网络的所有需要学习的层都是卷积层,没有 GAP,Dense 或 Flatten 这样的大规模维度缩减操作,这样做的一个显而易见的好处就是网络不再对输入的尺寸有任何要求,因而无需再将输入图片裁剪成相同的尺寸。
经典的基于卷积的深度网络的前半部分为通过卷积层堆叠的 Downsampling 层,这一常见的卷积堆叠的结果使得深层网络对于输入图像具有更大的感受野,输入图像中物体的基本特征随着层次的深入得以组合成更加丰富而抽象化(对于人眼识别来说)的识别特征,进而可以利用这些特征进行很好的实现识别类任务。
为了采用全卷积网络实现分割任务,作者主要对于网络做了以下几个设计:
-
In-network Upsampling:在分割任务中,由于我们需要获取的是原始图片中每一个像素点在空间尺度上的分布信息,因此全卷积网络在 Downsampling 后通过 Deconvolution 层对激活图进行 Upsampling,最终保留宽度 x 高度 x 通道数这样的空间信息
-
Layer Fusion:在实际试验中,作者发现仅通过这两项操作得到的图像不能精确的还原原始图像中的像素边界信息,为此,作者在在深层网络的 Feature Maps 基础上叠加了添加了浅层网络的 Feature Maps 信息,作者将这一叠加称之为 Layer Fusion
此后,作者基于全卷积的思想将 3 个经典的骨架网络改造成了 FCN-AlexNet,FCN-VGG16,和 FCN-GoogLeNet (InceptionV1) ,一个有趣的现象是除了 GoogLeNet 外其他两个网络在执行分割任务上都表现出色,对此作者并未找到合理的解释。
U-Net - 2D
事实上在理解了 FCN 的基础上,U-Net 这个架构本身值得讨论的部分就不多了,针对实现和训练有以下几个细节需要注意:
U-net Architecture, picture from the U-net paper-
U-net 命名:从上图可以看出其架构呈一个 U 型结构,因此作者直接将其命名为 U-net,网络采用基本对称的 Downsampling 和 Upsampling 结构
-
训练样本:由于医学领域的图像本身在模式分布上具有高度的重复性,因此在很多时候网络的训练仅需要少量的图片即可以完成,这个特性是独立于网络架构而成立的
-
Upsampling 的实现:这一操作既可以通过基于卷积核的
Conv2DTranspose
层实现,也可以通过基于插值的UpSampling2D
来实现,在实际使用中有研究表明两种实现方式没有明显差异 -
损失函数的选择:在几篇利用 U-net 实现分割任务的论文中,有的损失函数采用的 Softmax Cross Entropy / Binary Cross Entropy,也有作者采用的是 Dice-Coefficient 函数,具体的优劣由于我现在还没有训练过,并不能简单的说哪一个更好
U-Net - 3D
由于在医疗数据中,很多的影像采集结果都是基于体积而非二维平面的,因此作者在前一篇工作的基础上又进一步对网络的结构进行了改造:将原有结构进行简化,再所有相关的 Conv2D
,MaxPooling2D
,UpSampling2D
更换成相对应的 3D 操作,也即 Conv3D
,MaxPooling3D
,UpSampling3D
,并且在网络中引入了 BatchNormalization
来加速收敛,进而使得这个网络可以实现针对体积数据的分割任务。
由于数据集中的标注相对稀疏,因此作者在训练中采用了基于加权平均的 Weighted Softmax Cross Entropy 损失函数,并且将未标注的像素点的权重设置为 0 ,从而使得网络仅从标注数据中获得学习信息。
网友评论