飞桨paddlepaddle图像分割课程笔记

飞桨paddlepaddle图像分割课程笔记

最近花了一周时间听了百度飞桨推出的图像分割课程,受益匪浅,特此记录一下。

1. FCN 全卷积网络

飞桨paddlepaddle图像分割课程笔记
上图是一个FCN-32s网络的结构图。在这个网络中,图片经过骨干网络(VGG Network)提取特征后,得到长宽缩小32倍的特征图,随后直接将特征图上采样32倍,得到和输入图片一样大小的分割图。

是不是特别简单直接。别看这个网络设计的这么简单,但确实可以得到分割图。

当然,因为是直接将特征图上采样32倍,这种方式得到的分割精度不会很高。

为了提高分割精度,作者还提出将骨干网络的中间层提取出来,与上述分割结果融合,得到最终的输出结果。这样就可以得到FCN-16s, FCN-8s, FCN-4s以及FCN-2s网络。
飞桨paddlepaddle图像分割课程笔记
上图展示的是FCN-8s网络,该网络将Pool3和Pool4的输出取出,与FCN-32s的输出结果融合,得到最终的分割图。具体的融合方式见下图:
飞桨paddlepaddle图像分割课程笔记
首先将FC7(FCN-32s的输出)上采样2倍,与Pool4输出结果相加,得到与Pool4融合的特征图。随后将这个特征图再上采样2倍,与Pool3层的结果相加,得到融合了Pool4、Pool3信息的特征图。再将这个特征图上采样8倍,经过一个softmax层,就得到了与输入图片一样大小的分割图。因为最终上采样8倍,所以称为FCN-8s。

2. U-Net

飞桨paddlepaddle图像分割课程笔记
上图是U-Net的网络结构图,图片首先经过4次卷积池化操作后得到特征图,随后又将特征图经过4次上采样(这里使用的是反卷积)卷积操作得到最终的分割结果。同时,在每一次上采样的过程中,特征图还会与前面特征提取层的对应层结果拼接起来,以便融合特征提取层的信息,提高分割结果的精度。

U-Net与FCN网络结构很相似,区别在于,U-Net上采样时,还会一系列卷积操作,而FCN没有。另外,融合特征提取层信息时,U-Net使用的时沿通道拼接(Concat),而FCN使用的时相加。

3. PSPNet

PSPNet (Pyramid Scene Parsing Network)网络结构如下图所示:
飞桨paddlepaddle图像分割课程笔记
PSPNet在特征图上引入了Pyramid Pooling Module(上图虚线框部分),扩大了感受野,使得模型能够获取到更多上下文信息,期待让分割结果更加准确。

Pyramid Pooling Module的设计也不复杂。该模块将骨干网络提取的特征图通过AdaptivePooling缩放为四种不同的尺寸,并分别通过卷积层将通道数压缩为原来的四分之一,随后各自经过上采样得到与输入特征图长宽一样、通道数为原来的1/4的特征图,最后将这些特征图与原特征图拼接(Concat)起来,得到该模块的输出。

4. DeepLab系列

DeepLab图像分割网络有V1、V2、V3、V3+等一系列网络,下表对比了DeepLab系列网络的关键结构
飞桨paddlepaddle图像分割课程笔记

下图显示了DeepLabV1 - V3的网络结构。
飞桨paddlepaddle图像分割课程笔记

这里我们主要介绍一下ASPP模块,ASPP’ (upgraded ASPP)模块。

ASPP(Atrous Spatial Pyramid Pooling)模块是在DeepLabV2中引入的一个模块,它的结构如下图所示。特征图分别经过4种kernel size一样,dilation不一样的卷积,得到4个大小一样的特征图,最后将这四个特征图相加融合,得到输出结果
飞桨paddlepaddle图像分割课程笔记

ASPP’ (upgraded ASPP)是ASPP模块的改进版,结构如下图所示。相比原始的ASPP模块,改进版的增加了一个1x1的卷积以及一个AdaptivePooling层,最后将5个特征图concat并经过一个1x1卷积,得到最终的输出。
飞桨paddlepaddle图像分割课程笔记

5. 总结

我们对比上面介绍的网络可以发现,这些分割网络从设计上来讲都是大同小异。图片特征提取层使用的都是典型的网络,例如VGG、ResNet等,主要的不同点在于分割头的设计上,也就是如何将从特征图变换到分割图。FCN和U-Net选择将特征提取网络中间层的输出融合到分割图中,而PSPNet以及DeepLab系列则是选择用扩大网络的感受野的方式整合上下文信息,以期待获得良好的分割图。

学完这些网络后,自然而然会问出这么几个问题:网络这样设计为什么有效?除此之外,有没有其他方式融合浅层信息,有没有其他方式整合整合上下文信息?好好想想,也许就是一篇不错的paper咧!

Acknowledgement

非常感谢百度AIStudio开设的这次课程,感谢百度研究院的朱老师伍老师授课!特别是朱老师,在线Coding,佩服至极!