Pytorch代码
1. 研究问题
目前基于FCN的语义分割网络缺乏利用不同尺度全局上下文信息的能力,对于复杂图像的语义分割(如ADE20K数据集)存在问题。
注:感受野的大小可以粗略表示为使用上下文信息的程度。
2. 研究方法
提出了金字塔场景理解网络PSPNet,通过四级金字塔池化模块捕获多尺度全局上下文信息,提高了语义分割的精度。并且还提出在深度ResNet中加入辅助损失,提升了基于ResNet的FCN网络的性能。
2.1 发现问题
2.2 PSPNet
2.2.1 Pyramid Pooling Module
尽管理论上 ResNet 的感受野已经大于输入图像,但 Zhou 等人[42]已经证明了 CNN 的经验感受野比理论感受野小得多,尤其是在高层。这使得许多网络没有充分整合之前重要的全局上下文先验。
全局平均池化是一个产生全局上下文先验的很好的基线模型,常用于图像分类和图像分割。但是对于ADE20K 数据集中的复杂场景图像,全局平均池化不足以涵盖必要的信息会导致失去像素的空间关系并导致歧义。因此,融合全局上下文信息以及局部上下文有助于提供更强大的表示,有助于图像分割。
为了减少不同子区域之间的上下文信息丢失,我们提出了一个分层的全局先验,包含不同尺度和不同子区域之间变化的信息。我们将其称为金字塔池化模块,用于在深度神经网络的最后一层特征图上构建全局场景先验,如图 3 的 ( c ) 部分所示。
金字塔池化模块融合了四种不同金字塔尺度下的特征。以红色突出显示的最粗糙的级别是全局池化以生成单个 bin 输出。下面的金字塔层将特征图分成不同的子区域,并形成不同位置的池化表示。金字塔池化模块中不同级别的输出包含不同大小的特征图。为了保持全局特征的权重,如果金字塔的级别大小为 N,我们在每个金字塔级别之后使用 1×1 卷积层将上下文表示的维度降低到原始维度的 1/N。然后我们直接对低级进行上采样。维度特征图通过双线性插值获得与原始特征图相同大小的特征。最后,将不同级别的特征串联起来作为最终的金字塔池化全局特征。
我们的金字塔池模块是一个四级模块,bin 大小分别为 1×1、2×2、3×3 和 6×6。
2.2.2 Network Architecture
通过金字塔池化模块,我们提出了我们的金字塔场景解析网络(PSPNet),如图 3 所示。
给定图 3(a) 中的输入图像,我们使用预训练的 ResNet 模型和空洞卷积策略来提取特征图。 最终的特征图大小是输入图像的 1/8,如图 3(b) 所示。 下面给出ResNet50-v2的事例,本文就是在此基础上进行修改,将Conv4_x和Conv5_x中的下采样去掉(即保留分辨率),然后又将Conv4_x中的 3*3
标准卷积替换成空洞卷积,dilated rate = 2,将Conv5_x中的 3*3
标准卷积替换成空洞卷积,dilated rate = 4。
然后,我们使用(c)中所示的金字塔池模块来收集上下文信息,得到的不同尺度的特征图融合为全局先验。然后我们在 ( c ) 的最后部分将先验与原始特征图连接起来。 之后是卷积层以生成(d)中的最终预测图。
因此,PSPNet 为像素级场景解析提供了有效的全局上下文先验。
下面给出PSPNet的完整网络结构图。
2.3 基于 ResNet 的 FCN 的深度监督
deep ResNet 的后几层主要是在前几层的基础上学习残差。受此启发,我们引入带有辅助损失的监督生成初始结果,然后用最终损失学习残差。因此,深度网络的优化被分解为两个,每个都更容易解决。
辅助损失有助于优化学习过程,而主分支损失承担最多的责任。我们增加权重来平衡辅助损失。
在测试阶段,我们放弃了这个辅助分支,只使用优化好的主分支进行最终预测。
3. 实验结果
3.1 实验细节
3.2 ImageNet Scene Parsing Challenge 2016
3.3 PASCAL VOC 2012
3.4 Cityscapes
4. 结论
(1)提出PSPNet,利用金字塔池化捕获多尺度上下文信息。
(2)为基于ResNet的FCN引入了辅助损失,作为中间监督信息。
(3)在多个数据集上的场景理解和语义分割任务中取得了state-of-the-art的结果。
5. 启发
金字塔池化可以捕获不同尺度的上下文信息,对于基于CNN的立体匹配,光流,深度估计都具有指导意义。
参考
有一篇博客写的挺好,这里贴一下链接PSPnet:Pyramid Scene Parsing Network