本文为课程报告整理。引用其他博客内容已在文末标注,如有不全之处,敬请谅解!
原文github
https://github.com/ycszen/ContextPrior
Background & Overview
为了产生明确的区分上下文关系来用于场景理解(scene understanding),作者提出了上下文先验(Context Prior)去对相同类(intra-context)的像素与不同类(inter-context)的像素之间的关系进行建模。
具体来说,即先构造一个上下文先验层(Context Prior Layer),包含一个由亲和损失(Affinity Loss)监督生成的Context Prior Map和一个采用完全可分离的卷积的Aggregation Module,用来获取空间信息以推理关系。
Context Prior Layer示意:
模型方法1:Ideal Affinity Map&One-hot Encoding
本文最重要的部分即对上线文先验图(Context Prior Map)的生成,首先我们把目光聚焦在监督该图生成的理想亲和图(Ideal Affinity Map)上,理想亲和图生成过程如下图所示,通过输入一个标注过的图,最终输出我们想要的理想亲和图。
我们对上图的运算过程进行详细计算展现,具体实现过程如下图所示,最终矩阵相乘结果即为需我们需要求得的理想亲和图:。
独热编码(One-hot Encoding):在一些情况下将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。在本文中,应用独热编码主要目的一方面是通过独热编码后进行运算能够识别出同类信息,另一方面,使用矩阵的形式便于在图中标注出分类信息,从而进行下一步的聚合。
模型方法2:context prior map
上图为生成上下文先验图的简要具体过程,对简要过程的把握有助于我们对整体框架的理解,实际过程实现更加复杂,具体见代码解读部分。
1.为了保证Context Prior Map的准确,引入Affinity Loss监督学习。
2.这里算的Affinity Loss是Context Prior Map与经过GT生成的Ideal Affinity Map之间的损失。(与用于普通的softmax损失计算相区别)
3.Context Prior Map中H * W为输入特征的像素点个数,(H * W) × (H * W)的意思是输入特征图中每个像素点与其他像素点是否为同类别的概率。
模型方法3:Affinity Loss
For each pixel in the prior map, it is a binary classification problem. A conventional method for addressing this problem is to use the binary cross entropy loss。