1. 什么是PSPNet?
PSPNet(金字塔场景解析网络),用于场景解析和语义分割,为了挑战开放词汇和复杂场景而提出。
PSPNet利用全局上下文信息和金字塔池化模块,分层次(等级)提取不同区域的上下文信息并聚合,为像素级场景解析提供有效的上下文信息。
网络架构简述:基于ResNet50框架,金字塔池化模块
2.论文中提到的三个贡献
• We propose a pyramid scene parsing network to embed difficult scenery context features in an FCN based pixel prediction framework.
• We develop an effective optimization strategy for deep ResNet [13] based on deeply supervised loss.
• We build a practical system for state-of-the-art scene parsing and semantic segmentation where all crucial implementation details are included.
- 提出金字塔场景解析网络,将困难场景的上下文特征嵌入到基于像素级预测的FCN中。
- 对基于深度监管损失的深层ResNet提出一个有效的优化策略。
- 为SOTA场景分析和语义分割(包括所有关键的实现细节)建立一个实用的系统。
2.1为什么要提出PSPNet?
首先介绍一下FCN,目前参考FCN博客,后续我会在自己的专栏中写有关FCN的文章。
FCN(全卷积神经网络)的缺点(为什么要提出PSPNet):
①缺乏收集上下文信息的能力增加了错误分类的机会,存在不匹配的关系
图(1)第一行,由于却少上下文信息(大白话讲就是:以经验来讲,靠近汽车几乎不在河上行驶,相反船是在河上行驶),将船错误分类为车
②像素与像素之间的关系弱,缺乏空间一致性,会产生混淆种类
图(1)第二行,标签“建筑物”和“摩天大厦”混淆
③感受野(接受场)小:对复杂场景中不显眼的类不友好,大物体可能超过FCN的感受野区域,导致不连续的预测
PSPNet的作者因此提出PSPNet:专注于维护上下文信息,关注不同子区域,加强像素间的联系
2.2 pyramid scene parsing network
PSPNet网络框架如下:
首先使用卷积神经网络提取特征,将最后一个卷积层的特征映射(b),经过金字塔卷积池化模块获取不同子区域的表示,紧接着进行上采样和连接层,得到最终的同时携带局部和全局上下文信息的特征表示(c),最后将特征表示进行卷积得到最后的像素级预测(d)
c:为了维护全局特征的权重,在每一个金字塔层后使用1×1卷积层减小上下文的维度表征到原始金字塔输入尺度N的1/N
2.3 为什么提出金字塔池化模块呢?
在深层神经网络中,感受野(接受场)的大小可以大致表示我们使用了多少的上下文信息
理论上来说ResNet的感受野远大于输入图片的大小,但经验上来说,CNN的感受野比理论感受野小很多(特别实在深层网络),使得很多网络不能有效地合并全局重要的场景先验。
直接将像素融合成一个单一的向量也许会丢失空间关系造成模糊的结果(如混淆种类),但是全局上下文的信息和子区域上下文一起有助于区分不同的种类。为了进一步减小不同子区域之间的上下文损失,作者提出了分层的全局先验,包含不同尺度且在不同子区域之间变化的信息。
实验结果表面使用平均池化的效果优于最大池化 。
2.4 基于深度监管损失的ResNet的优化策略是什么?
优化策略:在每个块中引入跳跃连接,通过监督生成初始结果并在最后的损失函数中学习残差;
训练阶段额外损失函数和辅助损失函数通过所有的层,辅助损失帮助优化学习进程,同时主分支分支在表征能力方面占主导地位。
测试阶段放弃辅助分支,仅仅使用优化过的主分支进行预测(速度)