图像语义分割(7)-PSPNet:金字塔型场景解析网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/84780520

论文地址 :Pyramid Scene Parsing Network
论文代码:caffe Keras tf

1. 问题提出

  当前多数模型都是基于FCN的,存在许多共性的问题:

  • Mismatched Relationship:缺乏对上下文关系的捕获,而这对于复杂场景的理解很有必要。比如把船错分为汽车,就忽视了背景水的影响;
  • Confusion Categories:很多类别标签存在联系,而以有的FCN-based模型没有充分利用这种关系。比如把skycraper的一部分错分为building;
  • Inconspicuous Classes:缺乏对不明显的物体的捕获能力,比如小的或者融合在其他物体的不起眼的物体。
      这些问题都是由于模型没有充分利用全局信息,但是也有几种常用的方法来避免:
  • 全局平均池化:丢失空间关系并导致模糊,不能覆盖所有必要的信息
  • 金子塔池化:产生不同层次的特征,文中也是借鉴了这种方法

2. 解决方案

  根据上面提到的问题,提出了具有全局优先级并且包含不同子区域的不同尺度信息的pyramid pooling module,论文的另一个贡献是提出了基于深度监督损失的有效的ResNet的训练方法。

3. 模型架构

在这里插入图片描述

3.1 pyramid pooling module

  如上图©,该模块融合了四种不同金字塔尺度的特征,第一行红色的是最粗糙的特征,即全局赤化生成的单个bin输出,后面的三行是不同尺度的池化特征。为了保证全局特征的权重秒如果金字塔一共有N个级别,则每个级别后使用 1 × 1 1 \times 1 的卷积层来将对应的语义特征的通道数降为原始1/N,再通过上采样(双线性插值)来将特征图恢复至未池化前的尺寸,并concat到一起。
  而且,金字塔层次的数目和尺寸都是可以更改的,论文中使用了四个等级,核大小分别为 1 × 1 , 2 × 2 , 3 × 3 6 × 6 1\times1,2\times2,3\times 3和6\times6

3.2 PSPNet

  在3.1模块的基础上,整个PSPNet的架构如上图所示,给定一个图像输入:

  • 通过基础层(带有空洞卷积的与预训练ResNet)提取特征图,大小是输入图像的1/8
  • 经过金字塔池化模块来获取语义信息,使用四种不同的层级的金字塔分别获取whole,half of和小的部分得到global prior并上采样将其融合为原始特征图大小
  • 经过一个卷积层得到预测的输出
3.3 针对基于ResNet的FCN的深度监督

  在ResNet101的基础上做了改进,除了使用后面的softmax分类做loss,额外的在第四阶段添加了一个辅助的loss,文章称为auxiliary loss(预测时就不加这个了),如下图,两个loss一起传播,使用不同的权重,共同优化参数。后续的实验证明这样做有利于快速收敛。
在这里插入图片描述

4. 实验结果

4.1 训练细节

在这里插入图片描述

4.2 实验项目
  • 不同配置下的ResNet的性能
  • 不同auxiliart loss权重的性能
  • 不同深度、不同规模的ResNet与训练网络的性能
  • 不同模型和Ours的性能
4.3 关键实验结果
  • PASCAL VOC 2012[+表示有预训练]
    在这里插入图片描述
  • Cityscapes[‡表示同时使用了精细和粗糙的数据]
    在这里插入图片描述

5. 结论

  论文在结构上提供了一个pyramid pooling module,在不同层次上融合feature,实现语义和细节的融合。 模型的性能表现很良好,但主要归功于一个良好的特征提取层。

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/84780520
今日推荐