概述
这篇语义分割的论文出自于商汤,是ImageNet scene parsing challenge的冠军之作。作者将SPPNet中金字塔池化的方法用于语义分割,充分利用全局上下文(场景)信息,以及不同的局部子区域信息,取得很好的效果。以下是博主自己对于本文的拙见和翻译,不完全对,欢迎讨论。
背景介绍
自FCN以来,使用CNN进行语义分割取得快速的进展。一些主要的方法和技巧也随之发展,诸如dilated convolution和deconvolution。目前主要的工作主要集中在两个方向:1. 综合利用多尺度的feature map进行集成预测,例如FCN、SegNet等;2.对于CNN分割结果进行优化和后处理,例如Deeplab系列使用的CRF(条件随机场)。
但是这些方法无疑没有充分利用全局信息以及没有考虑各子区域之间的关系,导致分割结果出现Mismatched Relationship 、Confusion Categories 等问题。为此作者提出了用于语义分割的Pyramid Pooling模块,可以提取多层级的不同尺度的全局语义信息。
PSPNet模型介绍
众所周知,global pooling可以非常好的作为全局信息的提取器,在分类任务中得到广泛使用。但是只有全局池化会丢失很大部分的空间位置信息,无法利用各子区域之间的关系。因此作者在深度网络的最后一层feature map后使用了Pyramid Pooling模块,希望通过不同大小感受野去提取更为丰富的全局信息以及各子区域的信息。网络模型如下:
如图(c)所示:对于backbone输出的最后一层feature map进行四个维度的Pyramid Pooling,包含全局池化(最上层红色)和其他三个scale的池化,池化后使用1*1的卷积核进行降维,然后通过双线性差值进行上采样,最后将之前你最后一层feature map和四级池化上采样的map进行cantact用于最终的卷积预测。
在具体实验中,作者还做了两种对比。一是Pyramid pooling的方式MAX or AVE,经过实验发现AVE效果比MAX好,也说明了AVE因为考虑了全局信息,而MAX因为求取最大值局部响应的结果。二是有无金字塔池化后的1*1降维卷积操作,实验证明加上这层卷积后效果更好。一方面1*1的卷积相当于各通道的信息整合,加上RELU有增强了网络的非线性能力;另外一方面,通过1*1实现了降维,使contact后的map通道不至于过大,减少了后面卷积层的参数,也降低了过拟合的可能性。