目录

论文解读(解读完毕,坚持才能胜利)

Abstract

Introduction

1、Affinity Loss(相似度损失)

2、Ideal Affifinity Map(理想的相似度图)

3、Context Prior Layer

4、Aggregation Module

Network Architecture

Experimental

网络结构

数据增强

优化器

推理阶段(预测阶段)

代码复现( tf 进行中)


论文解读

Abstract

识别上下文关系有助于场景理解,同一类别之间的相关性(类内上下文)和不同类别之间的差异性(类间上下文)使特征表示具有更强的鲁棒性,减少了可能类别的搜索空间。

在ADE20K上达到46.3%的mIoU,在PASCAL-Context上达到53.9%的mIoU,在Cityscapes城市景观的mIoU率为81.3%

Introduction

FCN提供的上下文信息不足,有很大的改进空间。现有的很多增强增强上下文信息的方法主要有两种:

  • 金字塔(Pyramid Method):捕获同类上下文关系,忽略不同类别的上下文相关性。在场景混淆时候就会出现捕捉信息不准确。
  • 注意力机制(Attention-based aggregation Method):捕获不同类之间的关系,聚合异构上下文信息。但是缺乏明确的规则化,对注意机制的关系描述不够清晰,在没有先验知识的情况下,无法有效区分混乱的空间信息,导致预测的准确率较低。比如桌子和床颜色一致的时候。

语义分割里的经典论文 语义分割论文2020_深度学习

(b) 金字塔机制:用于捕捉类内关系,类间混淆容易出问题

(e) 注意力机制:用于捕捉类间关系,类内混淆容易出问题


确定的上下文依赖关系有助于网络理解场景,有助于网络理解场景信息。构建上下文先验(Context Prior)这个东东~来为类内和类间依赖关系建模,将上下文先验(the context prior)构造成一个二分类器,用于区分当前像素属于同一类别的像素,而反向的先验(the reversed prior)可以聚焦于不同类别的像素。具体操作:首先使用一个全卷积网络来生成两个Map:(a、feature map和b、相应的prior map)。其中,对于a、feature map中的每个像素,先验映射(prior map)可以有选择地突出属于同类的其他像素,从而聚合类内上下文;同时,反向先验(reversed prior)可以聚合类间上下文。为了把该模块嵌入网络中,采用包含有Affinity Loss(相似度损失)的Context Prior Layer(上下文先验层)来监督先验的学习。同时,上下文先验(Context Prior)也许需要空间信息来解释推理这些关系。为此,文章设计Aggregation Module(聚合模块),该模块采用完全可分离卷积(空间和深度维度都分离)来有效聚合空间信息。

为了证明上下文先验有效性,设计如上描述功能的全卷积网络,称其为:CPNet。如下图


语义分割里的经典论文 语义分割论文2020_相似度_02

Figure 2. CPNet总览

Aggregation ModuleI、deal Affinity Map、Context Prior Map、Affinity Loss( 相似度损失)

1、Affinity Loss(相似度损失)

网络很难对孤立的像素点进行上下文信息建模。为了显式地规范化网络以建模类别之间的关系,我们引入了Affinity Loss(相似度损失)。对于图像中的每个像素,这种损失迫使网络考虑相同类别的像素(内上下文)和不同类别的像素(内上下文)。【注:这个loss需要其他map进行统一计算,在此先点明,相似度图描述时给出计算公式】

语义分割里的经典论文 语义分割论文2020_深度学习_03

语义分割里的经典论文 语义分割论文2020_卷积_04

给定一个输入的ground truth,我们可以知道每个像素的“context prior”(即“上下文先验”)。哪些像素属于同一类别,哪些不属于同一类别)。因此,我们可以根据ground truth来引导网络学习上下文先验。为此,首先从ground truth作为监督构建一个Ideal Affifinity Map(理想的相似度图)。

2、Ideal Affifinity Map(理想的相似度图

语义分割里的经典论文 语义分割论文2020_相似度_05

Figure 3

语义分割里的经典论文 语义分割论文2020_卷积网络_06

给定输入图像

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_07

和ground truth

语义分割里的经典论文 语义分割论文2020_卷积网络_08

,将输入图像

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_07

送入网络,获得大小为 

语义分割里的经典论文 语义分割论文2020_相似度_10

 的特征图 

语义分割里的经典论文 语义分割论文2020_相似度_11

。如图3所示,首先down-sample(下采样)ground truth 

语义分割里的经典论文 语义分割论文2020_卷积网络_08

 使其和特征图 

语义分割里的经典论文 语义分割论文2020_相似度_11

 有相同的尺寸,从而生成较小的 

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_14

。然后使用 one-of-

语义分割里的经典论文 语义分割论文2020_卷积网络_15

 方案(one-hot编码)去编码 

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_14

 中的每一类整数标签,从而获得一个 

 的矩阵 

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_14

  ,

语义分割里的经典论文 语义分割论文2020_深度学习_18

 是类别数。接下来,把经过编码了的ground truth 重塑成 

语义分割里的经典论文 语义分割论文2020_相似度_19

的大小,其中

语义分割里的经典论文 语义分割论文2020_卷积网络_20

。最后,进行矩阵乘法:

语义分割里的经典论文 语义分割论文2020_卷积网络_21


语义分割里的经典论文 语义分割论文2020_相似度_22

 就是编码哪些像素属于同一类别的相似度图,它的形状是

语义分割里的经典论文 语义分割论文2020_卷积网络_23

。我们使用Ideal Affifinity Map相似度图来监督Context Prior Map上下文先验映射的学习(生成)。对于prior map先验图中的每一个像素,都是一个二值分类问题。解决这类问题的传统方法一般是使用二元交叉熵损失。给出一个尺寸为

语义分割里的经典论文 语义分割论文2020_卷积网络_23

的预测先验图Prior Map:

语义分割里的经典论文 语义分割论文2020_卷积_25

,其中

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_26

和理想相似度图Ideal Affifinity Map:

语义分割里的经典论文 语义分割论文2020_相似度_22

,其中

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_28

,二进制交叉熵损失可以表示如下:

语义分割里的经典论文 语义分割论文2020_深度学习_29

然而,这样上面的一元损失仅考虑了先验图中的孤立像素,而忽略了与其他像素的语义相关性。先验图

语义分割里的经典论文 语义分割论文2020_卷积_25

 的每一行的像素对应于特征图 

语义分割里的经典论文 语义分割论文2020_相似度_11

 的像素。我们可以将它们分为类内像素和类间像素,它们之间的关系有助于推理语义相关性和场景结构。因此,可以将类内像素和类间像素视为两个整体分别编码关系。为此,基于二元互熵损失设计了一个全局项:

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_32

其中,

语义分割里的经典论文 语义分割论文2020_深度学习_33

分别代表类内预测值(精度),类内正确率(召回率),

语义分割里的经典论文 语义分割论文2020_卷积_25

 的第

语义分割里的经典论文 语义分割论文2020_深度学习_35

行的类间正确率

最后,在一元项和全局项这两者的基础上,完整的affifinity loss相似度损失 

语义分割里的经典论文 语义分割论文2020_相似度_36

 可以表示为:

语义分割里的经典论文 语义分割论文2020_卷积网络_37

其中,

语义分割里的经典论文 语义分割论文2020_相似度_36


语义分割里的经典论文 语义分割论文2020_相似度_39


语义分割里的经典论文 语义分割论文2020_卷积_40

分别表示 ,一元损失(二元交叉熵损失)和全局损失函数。

语义分割里的经典论文 语义分割论文2020_卷积网络_41


3、Context Prior Layer

语义分割里的经典论文 语义分割论文2020_相似度_42

上下文先验层考虑一个尺寸

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_43

为的特征图,如图2(copy在上),采用aggregation module

语义分割里的经典论文 语义分割论文2020_深度学习_44


语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_43

)转

语义分割里的经典论文 语义分割论文2020_卷积网络_46


语义分割里的经典论文 语义分割论文2020_深度学习_47

),给定

语义分割里的经典论文 语义分割论文2020_深度学习_44

,经过

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_49

conv、bn和sigmoid去学习尺寸为


语义分割里的经典论文 语义分割论文2020_相似度_50

的先验图P,在affinity loss的监督下,context prior map可以编码类间和类内像素间的关系。类内(intra-class)

语义分割里的经典论文 语义分割论文2020_深度学习_51

,列间(inter-class)

语义分割里的经典论文 语义分割论文2020_深度学习_52

,1为同P尺寸的全1矩阵。最后,

语义分割里的经典论文 语义分割论文2020_相似度_53


4、Aggregation Module

上面提到的 Context Prior Layer 上下文先验层前面需要加入 aggregation module ,是为了通过该模块获取一些局部空间信息提供给Context Prior Layer用, aggregation module 该模块具有完全分离的卷积(在空间和深度维度上均独立),以聚合空间信息。 卷积可以聚合附近的空间信息。聚合更多空间信息的自然方法是使用较大的滤波器卷积。 但是,大滤波器带来很大的计算量。 因此,将标准卷积在空间上分解为两个不对称的卷积。对于

语义分割里的经典论文 语义分割论文2020_卷积网络_54

卷积,我们可以用

语义分割里的经典论文 语义分割论文2020_卷积网络_55

卷积,然后用

语义分割里的经典论文 语义分割论文2020_相似度_56

卷积作为替代,称为空间可分离卷积。计算量减少k/2倍。

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_57

标题

Network Architecture

上下文先验网络(CPNet)是由骨干网和上下文先验层组成的全卷积网络。骨干网络是现成卷积网络,例如加入了空洞卷积的ResNet。在上下文先验层中,聚合模块有效地聚合一些空间信息。

同时,在backbone网络的阶段4(stage 4)还使用了辅助损失(auxiliary loss),也是一个交叉熵损失。所以,最终的损失函数为:

语义分割里的经典论文 语义分割论文2020_深度学习_58

其中,

语义分割里的经典论文 语义分割论文2020_卷积_59

分割损失、

语义分割里的经典论文 语义分割论文2020_深度学习_60


语义分割里的经典论文 语义分割论文2020_卷积网络_61

辅助损失auxiliary loss、

语义分割里的经典论文 语义分割论文2020_深度学习_62


语义分割里的经典论文 语义分割论文2020_相似度_36

相似度损失affifinity loss、

语义分割里的经典论文 语义分割论文2020_卷积_64


Experimental

网络结构

ResNet,使用空洞卷积的ResNet、8次up-sample结果计算分割损失

语义分割里的经典论文 语义分割论文2020_卷积_59

、采用骨干网络的阶段4进行辅助损失计算、Aggregation Modules里面的可分离卷积采用11。

数据增强

我们对输入图像采用均值减法、随机水平翻转和随机尺度(scale{0.5,0.75,1.0,1.5,1.75,2.0})来避免过拟合,最后,我们随机裁剪大的图像或填充小的图像到一个固定的大小进行训练。

优化器

stochastic gradient descent (SGD):momentum=0.9、weight decay=

语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_66

、learning rate=the “poly” learning rate

语义分割里的经典论文 语义分割论文2020_相似度_67

,其中

语义分割里的经典论文 语义分割论文2020_卷积_68


语义分割里的经典论文 语义分割论文2020_语义分割里的经典论文_69


batch_size=16

推理阶段(预测阶段)

ADE20K and PASCAL-Context datasets:scales{0.5,0.75,1.0,1.5,1.75}

the Cityscapes dataset:{0.5,0.75,1,1.5}、

mIOU为评价指标

代码复现