论文阅读-《Semantic Segmentation with Reverse Attention》

BMVC 2017 oral
code: https://drive.google.com/drive/folders/0By2w_A-aM8Rzbllnc3JCQjhHYnM

1.Motivation

作者这篇文章的主要目的是为了提高semantic segmentation的网络对于confusion area的预测能力。所谓的confusion area,指的是最终预测的score map上熵值比较大的区域,在这些区域,网络对某些类别的预测概率都差不多大,比如对于图中猫和狗重合部分的区域就容易出现confusion

作者对FCN的预测过程进行了分析来验证自己的观点

下面这行表示FCN的,包括前面的提取特征的网络以及后面用来预测的网络。右下角表示最终预测的结果,圆形区域内部就是猫狗重合部分的区域,也就是confusion area。

一方面,从最终预测的score map上,我们可以看到狗和猫对应的score map在圆形区域的激活值都比较大,

另一方面,从前面的特征图上,我们可以统计Conv5的各个卷积核对猫和狗的归一化的激活值,可以看到,除了只对猫和只对狗激活值比较大的filter之外,还有一些对猫和狗的激活值都很大的filter,这些filter对之后的预测是没有帮助的。

作者的观点是,FCN只是被训练来预测某个pixel属于各个类别的概率,对于那些confusion area,如果我能够训练一个网络来预测得到这个区域不属于猫的概率比不属于狗的概率更大,那么结合一下就可以得到这个区域应该预测成狗。所以作者构建了一个reverse learning process,来预测pixel不属于各个类别的概率,也就是Reverse Attention Network(RAN)

2.Proposed RAN System


整体的框架如上图所示,主要分成三个branch
第一个branch,也就是original branch,学习的是pixel属于各个类别的概率分布;
第二个branch,也就是reverse branch,学习的是pixel不属于各个类别的概率分布;
第三个branch,也就是reverse attention branch,学习的是第一二个branch预测的map之间结合的权重。

最终用来预测的是经过attention branch输出的combined prediction,剩下的两个分支,也分别进行上采样进行预测,然后进行监督训练。

这里讲一下为什么需要第三个分支,也就是reverse attention branch:
一种naive的结合original prediction和reverse prediction的方法就是直接相减,但是这样有个问题就是reverse learning的效果可能没有original learning的好,我们期望的是在original learning结果的confusion area上引入reverse learning的预测结果,因此需要引入一个attention的机制,将reverse learning的结果引入confusion的区域。

attention branch的一种简单的写法如下所示:

这个branch模块的效果是,对于正的比较大的response,我不考虑它的rever prediction,对于response很小的unit,我才考虑它的reverse prediction

比如对于输入的feature map上的某个位置,如果激活值是(-1,-1,-1,+1,-1,-1)这种,那么+1.4对应的reverse prediction的权重就很小,最后的结果就取决于original prediction。
对于输入的feature map上的某个位置,如果激活值是(-1,-1,-1,+1,+1,-1)这种,那么两个+1,靠original prediction就没办法区分了,这个时候就靠reverse prediction了。

作者也试验了不同形式的attention branch,下面这种是normalized形式

3.Experiments



作者在好几个数据集上做了实验,这里只列举其中的一个。可以看到,reverse learning能够纠正一些confusion area的错误,让预测变得更加连续和uniform

你可能感兴趣的:(Computer,Vision,计算机视觉论文研读)