OCNet: Object Context Network for Scene Parsing (Microsoft Research)论文解析

不得不说,这篇论文和DANet撞车了,而且撞的死死的,用的同样的核心内容,为什么会撞车,那是因为,两个篇文章都套用了同一篇文章的方法,同时想到了一起,你说巧不巧

不同于之前图像级的context的方法,这篇论文提出逐像素的object context,object context由像素P所对应的类别的物体组成。由于测试时不知道标签信息,所以用Self Attention方法通过学习逐像素的相似度图估计objects。在此基础上有进一步提出了Pyramid Object Context和Atrous Spatial Pyramid Object Context来捕获多尺度的上下文。在object context module基础上提出了OCNet,OCNet在Cityscapes和ADE20K数据集上取得了state-of-the-art的结果。

OCNet


paper: https://arxiv.org/abs/1809.00916
code: https://github.com/PkuRainBow/OCNet

主要贡献:

  1. 提出了逐像素的object context,包含了与像素P相同类别的objects的信息。
  2. OCNet在Cityscapes和ADE20K数据集上取得了state-of-the-art的结果

OverView

OverView


OCNet以ResNet-101为backbone(后两个block为dilated convolution,dilation rate分别为2和4),其后是这篇文章提出的object context module去计算逐像素的object context,最后是1×1的卷积输出预测图。object context module是基于Self Attention Mechanism,作者一共提出了3种不同的object context module: base-OC, Pyramid-OC, ASP-OC。

Object Context


这里大致介绍了Object Context module中的变量和基本原理。
X为输入的特征图,P为位置特征图,W为由self-attention得到的逐像素的相似度图,第i行表示所有像素与第i个像素的相关性,C为Object Context module最后得到的逐像素的object context表达。用公式表示为:

                                                                             c_{i}=\sum_{j=1}^{N}{w_{i,j}\phi\left ( x_{j} \right )}

                                                                           


其中W可由以下公式得到:

                                                                            w_{i,j}=\Phi \left ( x_{i},x_{j},p_{i},p_{j} \right )
进一步又可以写成:

                                      \bar{x}{i} = x{i}+p_{i} \quad w_{i,j}=\Phi \left ( \bar{x}{i},\bar{x}{j} \right )=\frac{exp\left ( f_{query}\left ( \bar{x}{i} \right )^{T} f_{key}\left ( \bar{x}{j} \right )\right )}{\mathbb{C}\left ( \bar{x}{i} \right )}
其中:

                                                            \mathbb{C}\left ( \bar{x}{i} \right )=\sum_{j=1}^{N}exp\left ( f_{query}\left ( \bar{x}{i} \right )^{T} f_{key}\left ( \bar{x}_{j} \right )\right )
 

Object Context Module

Object Context Module


这里介绍了3种不同的object context module: base-OC, Pyramid-OC, ASP-OC。每个object context module都含有3个阶段:(1)计算X;(2)计算C;(3)融合。

 

Base-OC

(1)计算X: 3×3的卷积减少channel从2048到512
(2)计算C: 用self-attention模块计算逐像素的attention map和object context
(3)融合: concatenate C 和 X
进一步用1×1的卷积减少channel维度为512

 

Pyramid-OC(受PSPNet的启发)

(1)计算X: 3×3的卷积减少channel从2048到512
(2)计算C: 在四个分支中分别用self-attention模块计算逐像素的attention map和object context。第一个分支把全部特征图作为输入,第二个分支把特征图分为2×2的子区域,每个子区域应用共享的transform,第三个和第四个分支把输入分为3×3和6×6的子区域,每个子区域的transform不共享。最后concatenate每个分支的结果并用1×1的卷积增加X的维度与object context的维度相等再进行concatenate
(3)融合: 进一步用1×1的卷积减少channel维度为512

 

ASP-OC(受DeepLAbV3的ASPP启发)

(1)计算X: 共有5个分支。分别为1×1的卷积,3×3的卷积,dilation rate为12的3×3卷积,dilation rate为24的3×3卷积,dilation rate为36的3×3卷积
(2)计算C: 对每个分支的结果分别用self-attention模块计算逐像素的attention map和object context。实验发现再2,3,4,5分支中使用self-attention模块会有害performance
(3)融合: concatenate C 和 X,进一步用1×1的卷积减少channel维度为512

 

Experiments

Influence of the Positional Feature

Influence of the Key/Query transform

Influence of the Self-attention in ASP-OC

Influence of Auxiliary loss

Influence of the OHEM, Ms, Flip, Validation set

Comparison with Baseline

Comparison with State-of-the-art

Visualization of the object context

猜你喜欢

转载自blog.csdn.net/mieleizhi0522/article/details/84873101