阅读图像显著性检测论文七:Graph-Based Visual Saliency

        在前文中提到过说有一篇基于图模型来做显著性检测的经典论文以后找机会介绍的,前段时间忙于考试,现在有终于空了些时间可以介绍这篇论文了。这篇文章在谷歌上的引用次数已经达到2000+了,其经典性毋庸置疑。在正式介绍这篇论文之前,发现了一个小小的彩蛋。如果你阅读过本系列博客介绍的论文一、即将介绍的这篇论文以及侯晓迪2012年在加州理工发表在PAMI上的一篇显著性检测的文章“Image Signature: Highlighting Sparse Salient Regions”的话(后面会写一篇这篇文章的阅读笔记),你会发现三者这么经典的论文中都出现了同一个人的名字,那就是Christof Koch,是不是感觉此人是个bug。。另外,在阅读这篇论文之前,读者需要对Markov Chain(马尔可夫链)有一些基本的了解,链接如下,需要(https://zh.wikipedia.org/wiki/马尔可夫链),不然看这篇文章可能会有点比较吃力。

       这篇文章将显著性检测的算法流程分为了3步,如下:

       1. extraction:特征提取,这里生成的就是feature map(原文用了feature vector)了。(和itti几乎一样)

       2. activation: form activation maps using the feature vectors。
       3. normalization/combination:用多个activation maps生成一个single map,就是saliency map。
       而文章本身对于step1没有太多提及,因为其和本博客系列第一篇文章讲的显著性检测的开山之作itti模型提到的提取feature maps几乎一样,对itti模型不太清楚的读者可以参考 这篇博客。文章重点在讲如何用图模型以及马尔可夫链做step2和step3。因此我们先从step2讲起,即用第一步得到的feature map或者feature vector形成activation map。

       假设经过第一步,我们从一张原图I得到了许多feature maps,对于每一个feature map,M,我们希望能够得到一个相应的activation map,这个activation map需要达到我们对它这样的一个期望,那就是对于M中或者原图I中和其邻域不同的像素(i,j)处,(i,j)对应于activation map中的位置处要有较高的值。那么如何来定义一个像素(i,j)和其邻域的不同呢?本文用到了一个马尔可夫的方法。feature map——M中(i,j)和(p,q)的不同的具体衡量公式如下:

       

       对于这个公式如果你觉得看起来没有那么直观的话,你可以利用对数的运算性质把上式写成|log(M(i,j)) - log(M(p,q))|,这样应该就比较清楚了吧,它本质上和|M(i,j) - M(p,q)|是等价的,因为log是一个单调增函数。事实上,论文中也提到说可以直接用|M(i,j) - M(p,q)|来衡量其不同,这两者效果都很好。前面说了我们要用图论和马尔可夫方法来定义不同,那么现在我们就可以开始构造一个图了。构造图首先需要节点,这里的节点就是M中的一个像素座作为图中的一个节点,以此对应。这样一来,对于尺度为n*n的feature map——M,我们就有了n^2个节点。现在有了节点,还差什么就可以构成图了呢?没错就是边权重了,我们这里的图是一个有向全连接的图。对于图中(i,j)节点到(p,q)节点的连接权重我们用以下公式进行定义:

       

         这个公式也比较好理解,无非就是用两个节点像素值上的不同再乘以两个节点距离上的不同,以保证与节点(i,j)近的节点对其不同的贡献更大,远的贡献变小,这是符合人们对显著性的认知规律的,即就算两个像素一个黑一个白,但如果两者隔得远的话,黑的无法突出白像素的显著,白的也无法突出黑像素的的显著。但如果两个像素隔得近的话就很容易突出了。另外,这个公式定义的是(i,j)节点到(p,q)节点的连接权重,那(p,q)节点到(i,j)节点的连接权重是多少呢?不难发现这二者权重是相同的,也就是说这个有向图中同一条边上的两个指向方向相反的权重的值是一样的。

        ps.此处笔者有一个疑问,即对于一个feature map中,有n^2个节点,那么对于一个节点应该是和其他n^2-1个节点有n^2-1个边,但为什么论文中却说是有n-1个节点?目前暂时将这个疑问放下继续阅读这篇论文和写博客。

       基于以上,给定一个feature map,我们完全能够将其转化为一个有向全连接的图,其连接权重也可以得到清晰的定义。现在就要对这个图采用马尔可夫方法了。具体做法如下:

       首先,对于每一个节点,都会有n^2-1条边从这个节点指向其他节点,因此会有n^2-1个边权重,这n^2-1个边权重会得到一个总和,现在对每一个边权重乘以一个系数,使得这个总和为1,这个步骤称为归一化。这样做的原因是因为在马尔可夫链中转移概率矩阵具有的一个性质就是从一个节点到其他所有节点的转移概率之和必须为1。这里是为了让其满足这个性质,然后才能将其视为一个概率转移矩阵。

     然后,将这里的节点和马尔可夫链中的状态做一个等价,边权重和转移概率做一个等价。即是说用这里的图中的节点作为马尔可夫链的状态,用边权重作为马尔可夫链中状态的转移概率。(至于马尔可夫是什么、状态是什么以及转移概率是什么,笔者建议通过这个维基百科上了解了解,需要。。)

      最后用到了马尔可夫链的平衡分布,这里笔者尚未完全明白,待理解清楚之后再来更新这一部分。至此,step2就结束了,现在开始介绍step3。

       对于step3,它的主要目的是对一个activation map进行归一化,然后对多个activation maps进行融合。

       

        

你可能感兴趣的:(图像显著性检测)