Rate this post
在计算机视觉中,对于图像中复杂场景的分析有几个常见问题。一是语境关系不匹配,例如容易将图片中的船预测为“汽车”,但必然不符合汽车不能过河的常识。二是相近的类别容易混淆,例如墙与房子。三是一些不明显的类别,比如对特别大或特别小的物体的识别中,大的物体可能会超过神经网络感受野,而小的物体难以找到。所以,许多错误都与语境关系和不同接受域的整体信息有关。缺乏收集上下文信息的能力会增加错误分类的机会,一个具有合适的全局场景级信息的深度网络可以大大提高场景分析的性能。
全局平均池化(global average pooling)对于全局上下文信息是一个很好的基线模型。但是这种方式对于复杂的图像,比如图像中有许多种类的对象,无法覆盖全部的必要的信息。而如果直接将它们融合成一个单一的向量,则可能会失去空间关系,造成歧义。
金字塔池化(pyramid pooling)是为了消除CNN对图像分类的固定大小约束而设计的。由此提出的金字塔池化模块,容易理解到这个模块的结构是一种层次化的、类似金字塔的结构,可以包含不同规模尺度、不同区域之间变化的上下文信息。
金字塔池化过程分为4步:首先将特征图分为多个子区域,对每个区域进行平均池化;第二,对得到的每个特征图进行1×1卷积,若金字塔的有N个不同大小的层次,上下文特征表示就会减少至之前的1/N;第三,利用双线性插值进行上采样,此时每个低维特征图被处理后的尺寸与输入特征图的尺寸相同;最后,再与输入特征图做合并,即concat操作。另外,我们可以根据具体情况更改金字塔的层数和大小。
对于损失计算,金字塔场景解析网络(Pyramid Scene Parsing Network,PSPNet)在输入至金字塔池化模块前,不仅有主要的分支损失,还增加了一个辅助损失。这也成为了PSPNet的特点之一。
PSPNet为像素级图像解析提供了有效的全局上下文信息,目前已被广泛应用于场景解析、语义分割等技术中。