2017 CVPR
Pyramid Scene Parsing Network
Semantic Segmentation on PyTorch (include FCN, PSPNet, Deeplabv3, DANet, DenseASPP, BiSeNet, EncNet, DUNet, ICNet, ENet, OCNet, CCNet, PSANet, CGNet, ESPNet, LEDNet)
PyTorch Implementations for DeeplabV3 and PSPNet
Pytorch implementation of pspnet
本文提出的金字塔池化模块( pyramid pooling module)能够聚合不同区域的上下文信息,从而提高获取全局信息的能力。
场景解析(Scene Parsing)
难度与场景的标签密切相关。大多数先进的场景解析框架大多数基于FCN
FCN存在的问题
上下文关系匹配对理解复杂场景很重要,例如在,在水面上的大很可能是“boat”,而不是“car”。虽然“boat和“car”很像。FCN缺乏依据上下文推断的能力。
许多标签之间存在关联,可以通过标签之间的关系弥补。上图第二行,把摩天大厦的一部分识别为建筑物,这应该只是其中一个,而不是二者。这可以通过类别之间的关系弥补。
模型可能会忽略小的东西,而大的东西可能会超过FCN接收范围,从而导致不连续的预测。如上图第三行,枕头与被子材质一致,被识别成到一起了。为了提高不显眼东西的分割效果,应该注重小面积物体。
总结这些情况,许多问题出在FCN不能有效的处理场景之间的关系和全局信息。本论文提出了能够获取全局场景的深度网络PSPNet,能够融合合适的全局特征,将局部和全局信息融合到一起。并提出了一个适度监督损失的优化策略,在多个数据集上表现优异。
本文的主要贡献
比赛
主要工作
获取全局信息
一般CNN中感受野可以粗略的认为是使用上下文信息的大小,论文指出在许多网络中没有充分的获取全局信息,所以效果不好。常用的方法是:
baseline network : FCN + dilated network
Network Architecture
使用了残差网络、空洞卷积和降维卷积的方法(先使用11降低维度,然后使用33卷积,再用1*1恢复维度)。网络中一共出现三次特征图缩小,一次使用maxpool,两次使用conv,每次减少二分之一
最终的feature map大小为输入图像的1/8
feature map经过Pyramid Pooling Module得到融合的带有整体信息的feature,在上采样与池化前的feature map相concat
- 金字塔池模块融合了四种不同金字塔尺度下的特征。
金字塔池模块中不同层次的输出包含不同大小的feature map
bin size 分别为 1×1 , 2×2 , 3×3 ,6×6
- 第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。
- 为了保证全局特征的权重,如果金字塔共有N个级别,则在每个级别后使用1×1 的卷积将对于级别通道降为原本的1/N。
- 再通过双线性插值获得未池化前的大小,最终concat到一起。
- PSPNet提供了一个全局上下文的先验(即指代Pyramid Pooling Module这个结构)
论文提出了一个具有层次全局优先级,包含不同子区域之间的不同尺度的信息,称之为pyramid pooling module。
用额外损失的监督产生初始结果,然后用最终损失来学习剩余的结果。
论文在ImageNet scene parsing challenge 2016, PASCAL VOC 2012,Cityscapes 三个数据集上做了实验。
测试不同配置下的ResNet的性能,找到比较好的预训练模型:
对比了 max pooling vs average pooling 最大池化 vs 平均池化
one global feature vs four-level features 一个全局特征和四级特征
全局池化模块之后是否降维
发现 平均池化 + four-level features + 降维 最好
测试辅助loss的影响
设置辅助loss的权重在0-1之间
baseline 使用基于ResNet50的扩展网络FCN , a = 0.4 时最好
测试 pre-trained model 深度
测试的{50,101,152,269}这四个层次的网络中,网络越深,效果越好。
https://blog.csdn.net/u011974639/article/details/78985130
https://blog.csdn.net/qq_18293213/article/details/79882890
https://blog.csdn.net/py184473894/article/details/84205779