Context Prior for Scene Segmentation(CVPR 2020)论文阅读笔记

结束了所有课程,继续更新博客,争取做到自我监督,更新论文笔记。

问题描述

  在语义分割任务中, 识别上下文关系将有助于场景理解,同一类别之间的相关性(类内上下文)和不同类别之间的差异性(类间上下文)使特征表示具有更强的鲁棒性,减少了可能类别的搜索空间。当前方法如金字塔(如图b)、注意力机制(如图e)等忽略了类间上下文的关系。因此,作者提出上下文优先层可以选择性地捕获类内和类间的上下文依赖关系,从而实现健壮的特征表示。

 

图1 场景分割中的难分割图(Hard examples)

论文的主要贡献在于:

1)构造了一个上下文先验层,并使用关联丢失对嵌入在上下文先验层中的Context Prior进行监督,以显式捕获类内和类间的上下文依赖关系。

2)设计了一个有效的上下文先验网络(CPNet)用于场景分割,其中包含一个骨干网络和一个上下文先验层。

3)模型在ADE20K验证集上达到46.3%,在PASCAL Context验证集上达到53.9%,在Cityscapes上达到81.3%,优于最先进的方法。

2内容介绍

  先构造一个Context Prior Layer,包含一个由Affinity Loss监督生成的Context Prior Map和一个采用完全可分离的卷积的Aggregation Module,用来获取空间信息以推理关系。

图2 Context Prior Layer

  Context Prior Layer包含一个聚合模块和一个上下文由亲和损失监督的先验映射。将主干网络提取的输入特征通过聚合模块聚合空间信息。然后在亲和丢失的监督下生成一个点方向的上下文先验映射。亲和损失使用真值图构造了一个理想的亲和图Ideal Affinity Map,该亲和图表示同一类别的像素,以监督上下文先验图的学习。根据上下文先验图,我们可以得到intra类内-先验(P)和inter类间-先验(1−P)。

  将原始特征图聚合为N×C1大小,其中N = H×w。我们对聚合后的带有P和(1−P)的特征图进行矩阵乘法,获取类内和类间上下文。将类间、类内、原图进行concat后上采样得到预测图。最后将上下文先验层的表示输入到最后的卷积层,以生成一个超像素预测。

2.1 Affinity Loss

  引入亲和损失。对于图像中的每个像素,这种损失迫使网络考虑相同类别的像素(类内上下文)和不同类别的像素(类间上下文)。

groudtruth中包含先验信息,作者考虑使用groudtruth来学习上下文先验。首先构建了一个理想亲和映射用于监督:

 

图3 理想亲和映射的构建

  具体做法:输入图片I的特征图为X,首先将ground truth L向下采样到与X相同大小,得到一个较小的ground truth ; 然后使用one-hot编码得到一个矩阵 (H×W×C)大小,其中C为类数。接下来,将经过编码的ground truth重塑为N×C大小,其中N = H×W。最后进行矩阵乘法得到A,A是我们所期望的理想亲和映射N×N,对属于同一类别的像素进行编码。用来监督上下文先验映射的学习。

  亲和损失定义为:

   

  其中, 采用交叉熵损失,但它只考虑了先验映射中孤立的像素,忽略了与其他像素的语义相关性。

   

  然后作者考虑将类内像素和类间像素看作两个整体分别编码,设计了基于二元交叉熵损失的全局损失:

   

  其中(2) (3)(4)分别表示p中第j行的类内预测值、召回率和灵敏度。

2.2 上下文先验层

       为了将先验嵌入到网络中,作者设计了包含亲和力损失Affinity Loss的Context Prior Layer,直接监督前层的学习。可以理解为它将上下文先验构造成一个二分类器,用于区分当前属于同一类别的像素,而反向的先验可以聚焦于不同类别的像素。它首先使用一个全卷积网络来生成feature map和相应的prior map。对于feature map中的每个像素,prior map可以有选择地突出属于同一类别的其他像素来聚合类内上下文,而reverse prior用来聚合类间上下文。

  具体做法:上下文先验层输入特征X(H×W×C0),采用聚合模块使X变为 (H×W×C1),利用一个1×1卷积层,再加上一个BN层和一个Sigmoid函数来学习先验映射P(H×W×H×W)。在亲和损失的监督下,上下文先验映射P可以编码类内像素和类间像素之间的关系。类内由 给出,其中 被reshape为N×C1大小。最后将原始特征和两种上下文连接起来,输出最终的预测。通过这两种上下文推断出每个像素的语义相关性和场景结构。

2.3 Aggregation Module

  Context Prior也需要空间信息来推理关系,设计了一个聚合模块Aggregation Module,该模块采用完全可分离的卷积(在空间维度和深度维度上都分离)有效聚合空间信息。为减少计算量,将K*K分为K*1后面接1*K卷积。

 图4 聚合模块及其感受野

2.4 CPNet

  为证明上下文先验的有效性,作者设计了一个简单的全卷积网络,称为Context Prior Network(CPNet)上下文先验网络。根据主干网络的输出特征, Context Prior Layer使用聚合模块聚合空间信息以生成Context Prior Map。在Affinity Loss的监督下,Context Prior Map上下文先验映射可以捕获类内上下文和类间上下文,从而优化预测。

3. 实验结果

3.1  在聚合模块采用不同大小的卷积核

  为了说明了上下文需要适当的局部空间信息来推理关系,而不是仅仅依赖较大的卷积核就可以获取全局信息,作者设计了该实验。

 

表1 不同卷积核下的实验结果(mIoU)

1.3.2 可视化先验图

 图5 可视先验图

  图5中 (a) 只使用Aggregation模块生成注意图;(b) 在亲和损失的监督下,上下文先验层可以捕获类内上下文和类间上下文;(c) 从ground truth构建理想的Affinity Map。

注:颜色越深,响应越高。

1.3.3 对比实验  

                                                                 

表2 模型在ADE20K(上)、 PASCAL-Context (下)验证集进行定量评估

posted @ 2020-07-17 18:32  如鹿~  阅读(901)  评论(0编辑  收藏  举报