FCN
全卷积网络(Fully Convolutional Networks,FCN)是Jonathan Long等人于2015年在Fully Convolutional Networks for Semantic Segmentation一文中提出的用于图像语义分割的一种框架,是深度学习用于语义分割领域的开山之作。FCN将传统CNN后面的全连接层换成了卷积层,这样网络的输出将是热力图而非类别;同时,为解决卷积和池化导致图像尺寸的变小,使用上采样方式对图像尺寸进行恢复。
网络结构
FCN网络结构主要分为两个部分:全卷积部分和反卷积部分。其中全卷积部分为一些经典的CNN网络(如VGG,ResNet等),用于提取特征;反卷积部分则是通过上采样得到原尺寸的语义分割图像。FCN的输入可以为任意尺寸的彩色图像,输出与输入尺寸相同,通道数为n(目标类别数)+1(背景)
PSPNET(金字塔场景分析网络)
对于上图的(a)中的输入图像,我们使用一个带有扩展网络策略且预训练过的ResNet模型来提取特征图,最终特征图尺寸为输入图像的1/8,如上图(b)所示。我们对上述特征图使用(c)中所示的金字塔池化模块来获取语境信息,其中,金字塔池化模块分4个层级,其池化核大小分别为图像的全部、一半和小部分,最终它们可融合为全局特征。然后,在(c)模块的最后部分,我们将融合得到的全局特征与原始特征图连接起来。最后,在(d)中通过一层卷积层生成最终的预测图。
这就是网络的大致运行流程。为了解释我们的网络结构,PSPNet为像素级场景解析提供了一个有效的全局语境信息,其中,金字塔池化模块能收集不同尺度的语境信息并融合,会比全局池化所得的全局信息更具代表性。在计算成本方面,我们的PSPNet并没有比原来的扩展FCN网络增加多少。另外,在端到端的学习中,全局金字塔池化模块和局部FCN特征还可被同时优化。
Deeplab-v3
Deeplab-v3可分为两种模型:分别为 cascaded model 和 ASPP model。
1、cascaded model 模型结构
cascaded model 如下图 (b) 所示,其中的 Block1~Block4 都是原始 ResNet 网络中的层结构,但在 Block4 中将第一个残差结构里的 3 x 3 卷积层以及捷径分支上的 1 x 1 卷积层的步距 stride 由 2 改为了 1 ,不再进行下采样操作,并且所有残差结构里的 3 x 3 的普通卷积层都换成了膨胀卷积层。而 Block5~Block7 是额外新增的层结构,同 Block4 相同,也是由三个残差结构构成的。
ASPP model 如下图所示,同样,原论文提到 训练 时 output_stride = 16 (特征层相对输入图片的下采样率),但 验证 时 output_stride = 8 。但在 PyTorch 官方实现的 DeepLab V3 源码中直接将 output_stride 设置成 8 来进行训练。