Learning pixel-level semantic affinity with image-level supervision for weakly supervised semantic
文章目录
- Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakly Supervised Semantic Segmentation
- 1. Motivation
- 2. Contribution
- 3. 网络结构
- 4. CAMs部分
- 5. AffinityNet 部分
- 6.使用AffinityNet修改CAMs
Learning Pixel-level Semantic Affinity with Image-level Supervision for Weakly Supervised Semantic Segmentation
1. Motivation
在这种弱监督的情况下,已知训练过的模型可以分割局部discriminative部分,整个目标区域分割效果不好,作者的解决方案是将这样的local responses 传播到相同instance的邻近区域。为此作者提出了AffinityNet , 预测一对相邻图像坐标之间的semantic affinity。semantic propagation 的实现是利用了AffinityNet预测的affinities的随机游走(random walk)。
2. Contribution
- 作者提出了一种新的DNN,命名为AffinityNet,它能预测相邻像素的semantic affinity,但只使用图像级的类标签进行训练。
- 与以前的大多数弱监督方法不同,作者的方法不依赖于现成的技术,而是通过AffinityNet的端到端训练来利用表示学习。
- 效果超过全监督的FCN。
3. 网络结构

整体的网络分为三个部分
计算 CAMs的网络
2.AffinityNet
3.一个分割模型
前两种网络是为了生成训练的segmentation label(pseudo-label ):有affinitynet生成的semantic affinity,就可以利用随机游走(random walk)进行语义传递(semantic propagation),生成伪标签。那么就有人问了,affinitynet如何监督?作者是利用小区域进行训练的,尽管CAM分割结果很差,但是小区域还是可以的。 那么其实最重点的就是这个Affinity Matrix到底是什么东东。 从related work中看到,Affinity Matrix+random work不是他第一个提出的。作者强调自己的随机游走可以跳跃到一定半径内的任何其他位置。
4. CAMs部分


利用先验的分类网络,ground truth 类别c的CAM定义为M_c(x, y)。

作者同样将背景的activation map 做了估计。\alpha>=1 是一个超参,用来调background confidence scores。
5. AffinityNet 部分
AffinityNet的目的是预测一个训练集上一对相邻坐标之间的class-agnostic语义相似度 ,将预测的相似度作为转移概率应用于随机游走中,使得随机游走将CAMs的activation scores传播到具有相同语义实体的邻近区域,显著提高了CAMs的质量。
为了提高计算效率,AffinityNet被设计用来预测卷积特征映射f^{aff},其中一对特征向量之间的semantic affinity是根据它们的L1距离来定义的。这就是AffinityNet的训练loss。

features map i 和 j 的semantic affinity 被定义为W_{ij}。W_{ij}是个feature上的loss,用于度量feature map中两个点相似度

为了利用图像级标签训练AffinityNet,作者利用训练图像的CAMs作为不完全监督。如图2所示,CAMs经常是不准确的(边界不准确),但作者发现,通过仔细操作CAMs,可以获得对语义亲和力的可靠监督 。
文章的基本思想是从CAMs中识别目标和背景的可信区域,并仅从这些区域 中抽取训练示例。通过这样做,一对采样坐标之间的semantic equivalence可以是可信的。利用了dCRF和调整\alpha,就可以对于每一个类别c得到一个binary affinity label。现在,可以根据confident areas确定的类标签为每一对坐标分配一个二进制亲缘标签。
具体说如果pairs是同一个类别c,得分就是1,不是同一个类别就是0,当包含中立的区域时候训练的时候不考虑。

AffinityNet是通过将binary affinity标签Wij与预测的semantic affinity Wij 近似来训练的。特别的,训练时只考虑足够相邻坐标的相似性。 因为太远的不可信。
因此,训练中使用的coordinate pairs集合P表示为

d(·, ·) is the Euclidean distance and γ is a search radius(搜索半径) that limits the distance between a selected pair。
最后,定义P,P+就是具有semantic affinity的,P-是没有的。

6.使用AffinityNet修改CAMs
经过训练的AffinityNet用于修改训练图像的CAM。 AffinityNet预测的局部语义相似度被转换为转移概率矩阵,这使得随机游走能够识别图像中的语义边界,并鼓励它在这些边界内扩散激活分数。 作者凭经验发现,使用语义转换矩阵的随机游走可以显着提高CAM的质量,从而使生成准确的分割标签。
对于输入图像,AffinityNet生成卷积特征图,计算映射中的特征之间的语义相似度。 作者可以计算以γ为半径的圆形中所有两点的affinity,那么这些点的affinity可以用一个对角矩阵W表示,我们可以推理出W的对角线元素都为1. 那么矩阵T的计算方法如下:

\beta是超参,值大于1. T是 transition probability matrix。然后这边就看不懂了,这篇论文不知道为啥看着很吃力。幸好作者公布了代码。。
