目录
论文解读(解读完毕,坚持才能胜利)
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):捕获不同类之间的关系,聚合异构上下文信息。但是缺乏明确的规则化,对注意机制的关系描述不够清晰,在没有先验知识的情况下,无法有效区分混乱的空间信息,导致预测的准确率较低。比如桌子和床颜色一致的时候。
(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。如下图
Figure 2. CPNet总览
Aggregation ModuleI、deal Affinity Map、Context Prior Map、Affinity Loss( 相似度损失)
1、Affinity Loss(相似度损失)
网络很难对孤立的像素点进行上下文信息建模。为了显式地规范化网络以建模类别之间的关系,我们引入了Affinity Loss(相似度损失)。对于图像中的每个像素,这种损失迫使网络考虑相同类别的像素(内上下文)和不同类别的像素(内上下文)。【注:这个loss需要其他map进行统一计算,在此先点明,相似度图描述时给出计算公式】
给定一个输入的ground truth,我们可以知道每个像素的“context prior”(即“上下文先验”)。哪些像素属于同一类别,哪些不属于同一类别)。因此,我们可以根据ground truth来引导网络学习上下文先验。为此,首先从ground truth作为监督构建一个Ideal Affifinity Map(理想的相似度图)。 |
2、Ideal Affifinity Map(理想的相似度图)
Figure 3 |
给定输入图像
和ground truth
,将输入图像
送入网络,获得大小为
的特征图
。如图3所示,首先down-sample(下采样)ground truth
使其和特征图
有相同的尺寸,从而生成较小的
。然后使用 one-of-
方案(one-hot编码)去编码
中的每一类整数标签,从而获得一个
的矩阵
,
是类别数。接下来,把经过编码了的ground truth 重塑成
的大小,其中
。最后,进行矩阵乘法:
,
就是编码哪些像素属于同一类别的相似度图,它的形状是
。我们使用Ideal Affifinity Map相似度图来监督Context Prior Map上下文先验映射的学习(生成)。对于prior map先验图中的每一个像素,都是一个二值分类问题。解决这类问题的传统方法一般是使用二元交叉熵损失。给出一个尺寸为
的预测先验图Prior Map:
,其中
和理想相似度图Ideal Affifinity Map:
,其中
,二进制交叉熵损失可以表示如下:
然而,这样上面的一元损失仅考虑了先验图中的孤立像素,而忽略了与其他像素的语义相关性。先验图
的每一行的像素对应于特征图
的像素。我们可以将它们分为类内像素和类间像素,它们之间的关系有助于推理语义相关性和场景结构。因此,可以将类内像素和类间像素视为两个整体来分别编码关系。为此,基于二元互熵损失设计了一个全局项:
其中, 分别代表类内预测值(精度),类内正确率(召回率), 的第 行的类间正确率 |
最后,在一元项和全局项这两者的基础上,完整的affifinity loss相似度损失
可以表示为:
其中, 、 、 分别表示 ,一元损失(二元交叉熵损失)和全局损失函数。 |
3、Context Prior Layer
上下文先验层考虑一个尺寸 为的特征图,如图2(copy在上),采用aggregation module将 ( )转 ( ),给定 ,经过 conv、bn和sigmoid去学习尺寸为 的先验图P,在affinity loss的监督下,context prior map可以编码类间和类内像素间的关系。类内(intra-class) ,列间(inter-class) ,1为同P尺寸的全1矩阵。最后, 。 |
4、Aggregation Module
上面提到的 Context Prior Layer 上下文先验层前面需要加入 aggregation module ,是为了通过该模块获取一些局部空间信息提供给Context Prior Layer用, aggregation module 该模块具有完全分离的卷积(在空间和深度维度上均独立),以聚合空间信息。 卷积可以聚合附近的空间信息。聚合更多空间信息的自然方法是使用较大的滤波器卷积。 但是,大滤波器带来很大的计算量。 因此,将标准卷积在空间上分解为两个不对称的卷积。对于
卷积,我们可以用
卷积,然后用
卷积作为替代,称为空间可分离卷积。计算量减少k/2倍。
标题
Network Architecture
上下文先验网络(CPNet)是由骨干网和上下文先验层组成的全卷积网络。骨干网络是现成卷积网络,例如加入了空洞卷积的ResNet。在上下文先验层中,聚合模块有效地聚合一些空间信息。
同时,在backbone网络的阶段4(stage 4)还使用了辅助损失(auxiliary loss),也是一个交叉熵损失。所以,最终的损失函数为:
其中, 分割损失、 ; 辅助损失auxiliary loss、 ; 相似度损失affifinity loss、 ; |
Experimental
网络结构
ResNet,使用空洞卷积的ResNet、8次up-sample结果计算分割损失
、采用骨干网络的阶段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=
、learning rate=the “poly” learning rate
,其中
,
。
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为评价指标