图像分割 | Context Prior CPNet | CVPR2020

论文名称:“Context Prior for Scene Segmentation”

0 综述

先上效果图,CPNet似乎对一些难样本有着更好的效果:

图像分割 | Context Prior CPNet | CVPR2020

文中提到了下面关键字:
构建了corresponding prior map(CPmap),然后通过Context Prior Layer(CPLayer)来把这个CPmap融合到网络中,与此同时,使用Affinity Loss来对应这个CPLayer。

关于上面这句话如何解读,我先留着疑问。

1 Context Prior

作者提出两个概念:

intra-context:同一类别的像素之间的关系;

inter-context:不同类别的像素之间的关系。

作者说,在图像分割任务中,每一个图片都有对应的ground truth,但是ground truth中是每一个像素所属于的类别,说模型很难从独立的像素中学习到contextual(上下文)信息,因此需要explicitly regularize network(显式的规范网络)

在论文中,作者使用Affinity Loss来显式的规范网络.

For each pixel in the image, this loss forces the network to consider the pixels of the same category (intra-context) and the pixels among the different categories (inter-context).

这个损失可以让模型考虑同一类别的其他像素和不同类别的其他像素。

2 构建Ideal Affinity Map

在使用Affinity Loss之前,需要先构建Ideal Affinity Map。

现在我们有一个图片,Image,这个图片的ground truth GT.

Image经过全卷积网络,得到尺寸HxW的特征图;

GT下采样到HxW大小,写作\(\widetilde{GT}\),然后对\(\widetilde{GT}\)做one hot encoding,这样得到一个HxWxC的张量,其中C为分割的类别数量,对这个张量记做\(\widehat{GT}\)

通过reshape的方法,把\(\widehat{GT}\)的shape变成NxC,其中N=HxW,然后通过计算\(\widehat{GT}\widehat{GT}^{\mathrm{T}}\)得到一个NxN的矩阵,这个记做A;

A就是我们所要的Ideal Affinity Map。

A is our desired Ideal Affinity Map with size N × N , which encodes which pixels belong to the same category. We employ the Ideal Affinity Map to supervise the learning of Context Prior Map.

这个A中每一个1表示这一个像素和其他同一类别的像素,通过这个Ideal Affinity Map来训练CPMap

3 Affinity Loss

我们用全卷积网络对Image进行特征提取,得到一个HxW的尺寸的特征图,这里我们在上文已经说到了,但是没有说这个特征图的通道数是多少,看下图:

图像分割 | Context Prior CPNet | CVPR2020

通道数是HxW,也就是上面提到的N,这样对于每一个像素来说,他的特征正好是1xN,这样和我们得到的Ideal Affinity Map是不是刚好对应上了?

所以这里我们就可以用简单的二值交叉熵来计算Predicted Prior Map和Ideal Affinity Map的损失:

图像分割 | Context Prior CPNet | CVPR2020

这就完事了吗?并不是:

However, such a unary loss only considers the isolated pixel in the prior map ignoring the semantic correlation with other pixels.

直观上感觉,上面的其实只考虑了两个像素之间的关系,其实忽视了更多的语义关系。所以还需要另外一部分损失。

图像分割 | Context Prior CPNet | CVPR2020

a表示Idea Affinity Map中的元素,P表示从X得到的NxN的矩阵。
公式(2)表示,这里有点目标检测的味道了。

举个例子,假设总共有5个像素把:

a = [0,0,1,0,1],表示与同类的像素有第三个和第五个两个像素;

p = [0.1,0.2,0.8,0.2,0.9],表示预测出来的像素中,第一个像素有0.1的概率是同类的,第三个像素有0.8的概率是同类的;

\(\frac{ap}{a}\),刚好就是 真阳/样本为真的个数,为召回率

\(\frac{ap}{p}\),刚好就是 真阳/预测为真的个数,为精准率
这一块讲解的比较粗糙,因为混淆矩阵,PR曲线,召回率精准率应该是大家了解的内容啦,如果不了解可的话可以阅读我之前写过的笔记。(已经记录了107篇笔记了。。我也懒得找文章链接了,抱歉哈哈)

作者原文:

图像分割 | Context Prior CPNet | CVPR2020

对于公式(4),1-a刚好就是把0和1反过来了,这样1-a中的1表示的是不同的两个像素,因此体现的是inter-class 不同类的联系。

最后的最后,Affinity Loss为:

图像分割 | Context Prior CPNet | CVPR2020

4 Context Prior Layer

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdpjz.html