Pyramid Scene Parsing Network Hengshuang - 多感受野的金字塔结构PSPNet

导读

在分割问题中,上下文信息与多尺度融合对于提高分割精度是十分有效的。
PSPNet正是基于这种思想,设计了一种多感受野的金字塔结构。

文章的主要内容思想

一些发现

  • 上下文信息是很重要的:比如车不可能在河上漂浮。只可能是船。利用好这种上下文信息可以减少误分类。
  • 目标框内不应该像素穿插分类(基于目标框全局信息):如下图第二行中间FCN框
  • 太大或太小的对象都不易处理:限于感受野的大小。如床上的枕头

Pyramid Scene Parsing Network Hengshuang - 多感受野的金字塔结构PSPNet_第1张图片
总结这些发现,许多错误部分或完全与上下文关系和针对不同感受野的全局信息有关。 因此,具有合适全局场景级先验的深层网络可以大大提高场景解析的性能。

具体网络设计

在一个深层的神经网络中,感受野的大小可以粗略地表明我们使用上下文信息的程度
为了解决实际感受野比理论感受野往往更小,不能够充分利用全局先验信息的问题,这使得许多网络无法充分融合先前的全局信息。 论文通过提出有效的全局先验表示方式来解决这个问题。

Pyramid Scene Parsing Network Hengshuang - 多感受野的金字塔结构PSPNet_第2张图片
全局平均池化是获取全局上下文先验信息的良好方式,但这种策略不足以覆盖必所有必要的信息。 这些场景图像中的像素会标注许多东西和物体。 直接利用它们融合以形成单个矢量可能会失去空间关系并引起歧义。 在这方面,全局场景信息以及次(局部)区域场景信息的融合有助于区分不同类别。 可以将来自不同子区域的信息与这些接受域融合在一起,来实现更强大的表示。
为了进一步减少不同子区域之间的上下文信息丢失,提出了一个分层的全局先验信息生成架构,其中包含具有不同尺度且在不同子区域之间的信息。 如上图的虚线框内的PPM块所示。
金字塔池化模块PPM融合了四个不同金字塔比例下的要素。 用红色突出显示的最粗糙的级别是全局池,以生成单个bin输出。 接下来的金字塔等级将特征图分为不同的子区域,并形成了不同位置的集合表示。 为了保持全局特征的权重,如果金字塔的级别大小为N,则在每个金字塔级别之后使用1×1卷积层将上下文表示的维数减小为原始视图的1 / N。然后,直接对低维特征图进行上采样,以通过双线性插值获得与原始特征图相同的尺寸特征。 最后,将不同级别的要素合并为最终的金字塔池全局特征输出。上述的四个池化kernel size分别为1×1,2×2,4×4,6×6。

网络的整体结构

给定输入,使用带有空洞卷积预训练ResNet 模型来提取特征图。 最终的特征图大小为输入图像的1/8,如上图(b)所示。 然后经过上面提到的金字塔池化块,获取不同尺度的特征信息,如上图(c)。最后上采样到(b)特征图大小相同,做concat。经过最后的卷积、分类得到最终的分割结果。

额外的损失函数

此外,文中还应用了两个损失函数,分别用于约束主干分割网络和校正网络。以ResNet101为例,损失所处位置如下图所示。
Pyramid Scene Parsing Network Hengshuang - 多感受野的金字塔结构PSPNet_第3张图片
引入的辅助损失有助于优化学习过程,同时不影响主分支中的学习。
该辅助网络的任务是预测与最终网络将预测的标签相同,但使用模块的输出。将此辅助损失添加到整个网络的最终损失中,该损失的加权值小于1。
但总的来说,这种辅助损耗可用于多层网络中。
这样的辅助损耗有助于减少较早层的消失梯度问题,稳定训练并用作正则化。它仅用于训练,不用于推理。
辅助损耗将在反向传播期间增加额外的梯度流,从而有助于减少梯度消失的问题,可以训练稳定性

总结

这篇论文的金字塔设计很经典。仔细看会发现,后面的Deeplabv3几乎是和这个结构一样设计的。另外,

  • 多损失函数的设计值得借鉴。
  • 尝试不同backbone。
  • 尝试不同深度的backbone。

你可能感兴趣的:(图像分割系列,深度学习,python,计算机视觉,人工智能,机器学习)