原文地址
原文
论文阅读方法
三遍论文法
初识
对于语义分割这类密集预测任务,上下文特征是非常重要的信息。在早期的一些工作中,主要着重于捕获多尺度特征(空间维度),比如PSPNet 或者DeepLab系列中的ASPP 。但后来的工作利用attention机制考虑特征点之间的对应关系,比如OCNet 或者DANet 。
上下文特征(context ):某个位置周围像素点的特征。
回顾语义分割的本质,其实就是对每个像素点进行分类。而本文从一个简单的idea出发:每个像素点的标签实际上是属于这个像素点对应对象的标签。可能有点绕,大概意思就是每个像素其实并不能代表类别信息,如下图所示,之所以要将红色像素点打上car 的标签,是因为这个像素点本身就属于car 这个对象。
因此,本文提出了OCRNet(object-context representation ),目的就是有效地捕获到像素点对应对象的上下文特征,并用于特征强化。
从上图可以看出来,与ASPP这类方法相比,OCRNet针对特定对象,而不是只是纯粹地扩大空间感受野。与DANet这类方法相比,OCRNet构建的是像素点与对应对象区域内像素的联系,而不是周围/全局区域。
相知
介绍主要技术与部分实验
主要技术
OCRNet的目标是利用像素点对应对象的上下文特征用于特征强化,步骤也非常简单:① 首先把得到的特征图分成K个区域,每个区域对应某个特定类别的对象;② 对于每个对象区域的特征进行聚合,得到对象区域特征
f
k
f_k
fk?(也称为object-contextual representation ); ③ 利用特征
f
k
f_k
fk?用于强化每个像素的特征表示。
1. soft object regions
利用backbone的中间层输出进行粗略分割(coarse segmentation ),这样就可以将特征图分成k个区域(每个区域对应一个类别)。
HRNet直接使用最终的特征图用于粗略分割和表征,Dilated ResNet使用stage3的特征图用于分割,stage4用于表征
2. object region representations
得到k个区域后,分别对每个区域进行特征聚合:加权融合区域内每个像素点的特征。
其中,xi表示像素点i的特征,m表示像素点i属于这个对象的权重(softmax归一化)。
3. object contextual representations
计算每个像素点与每个区域的联系(softmax权重):
需要注意的是,在k(x,f) 中会利用不同的转换函数(1x1conv → BN → ReLU)对x和y进行特征映射。
得到像素i与每个区域的权重之后,采用下式进行特征强化:
其中
ρ
,
δ
\rho,\delta
ρ,δ同样为转换函数(1x1conv → BN → ReLU)
作者坦言这是受到transformer中self-attention操作的启发。
最后,再将原始特征xi与融合了对象上下文表征的特征yi进行拼接后,进行特征转换(1x1conv → BN → ReLU),得到最终的特征表征: 整体流程
最后,整体流程如下图所示:
其中粉色区域为划分对象区域(增加了额外的中继监督),紫色区域为局部特征生成,黄色区域为最后的特征加强与聚合。
部分实验
① 是否能有效划分好对象区域,对OCRNet影响较大;相对于只考虑像素间关系的方法(DAnet,ACFnet),OCRNet的性能更好。
② 探索了基于OCRNet的上限(即在对象区域划分和特征聚合时时,使用真实标签作为参考)。
回顾
OCRNet本身还是一种Attention 机制,不过不是单纯地考虑像素点之间的联系。而是先划分对象区域,聚合得到区域特征之后,再计算像素点与各对象区域特征间的联系。
这样的Attention 策略更符合语义分割这类密集预测任务的特性。因为像素点本身是不能代表某个类别的,其主要依附于对应对象的特征。实验也证明了其有效性,此外作者在文中还提到,在ECCV2020截稿之前,使用HRNet+OCR+SegFix 的组合在Cityscapes测试集上排到第一名。
SegFix是一种图像分割的后处理手段
|