您的位置:首页 > 其它

阅读图像显著性检测论文一:A Model of Saliency-Based Visual Attention for Rapid Scene Analysis

2016-12-02 11:38 549 查看
        本博客为博主原创,转载请注明地址:http://blog.csdn.net/xbcReal/article/details/53433035

        最近在看显著性检测的论文,写这个博客记录自己的一些理解。至于为什么把这篇文章放在第一位呢?原因很简单,因为这篇文章就是显著性检测的开山之作,1998年被Itti等人发表出来,现在引用次数7000+,其重要性不言而喻。下面进入正题,主要介绍论文的核心部分,即这个模型是怎么样的,以及具体的细节,比如feature map和saliency map是如何产生的。同时,为了让全文行文流畅,不至于因为仅有一个模型的介绍而显得过于晦涩,所以还会摘取论文中一些能够便于让读者快速了解整个显著性检测领域的基本知识,比如bottom-up(BU)模型,以及top-down(TD)模型,使大家读完这篇文章除了对这篇文章提出的模型有一个了解以外还能对整篇文章有一个大致的了解,笔者会尽量写自己的理解而不是单纯的翻译该文章。另外由于笔者也是刚刚接触这个领域,所以文中难免出现一些理解不到位的地方,还请大家多多指出,互相交流。

        本文所提出的模型是在受到早期灵长类动物的行为和神经元结构的启发后提出来的,该模型主要分为两个部分:一个部分是通过获得图像在多个尺度下的特征,然后将其进行有效的组合形成显著性图,另一部分是通过模拟一个动态神经元,根据显著性图上的显著性进行降序排序,然后选取我们人们最先应该注意的区域,以及随后会注意的区域。从第二个部分应该可以看出,该模型确实是受到灵长类的神经元结构的启发后提出来的,后面还有一些能够体现该模型是仿生的处理方式,即尽量与人的视觉注意机制保持一致。在正式介绍模型之前,我们先来了解下显著性这个东西到底是什么以及为什么要用计算机来获取图像的显著性。

        显著性是什么以及为什么要用计算机来获取图像的显著性?

        这个答案非常简单,因为人类看东西也是存在显著性的,我们一直都希望的事情就是计算机能够像人类一样工作。人在用眼睛看到一个场景的时候,会首先注意到场景中非常特别、吸引人的部分。举个例子,有十个陌生人朝你走过来,从左到右第八个人穿的黑色衣服,其他九个人穿的白色衣服,除了衣服颜色不一样,其他一模一样。不带任何主观目的地看,你会首先注意到谁?一般来说我们会注意到穿黑色衣服的那个人,为什么呢?因为他和其他九个人衣服颜色不一样,即他在这十个人里面是显著的,人类会首先注意到显著的东西。那我们说人首先会注意到显著的东西这句话有没有科学依据呢?论文中提到说经过前人的一些研究发现,中级和高级的视觉处理过程会首先选取当前场景的一个子集,然后再进一步进行处理,比如进行分类识别等,这样做的目的是减少场景分析的复杂度。那么这个子集会包括什么内容呢?主要包括的就是“focus
of attention”,后文称为FOA,即注意的焦点。选取这些焦点是通过两种方式的结合,一种是自下而上(bottom-up)的、基于显著性驱动的与任务无关的方式,这种方式是快速的,另一种是自上而下(top-down)的,受到我们意志力控制的、与任务相关的方式,这种方式是相对较慢的。在本文的“十个人”的例子,如果你不带任何目的的看这十个人,那你首先注意到的一般会是黑色衣服的那个人,这就是bottom-up的方式,我对这里bottom-up的理解是bottom指的是场景,up指的是大脑,即场景中什么东西最特别,那我的大脑就先注意到什么东西。bottom-up的前提是你不带任何目的的看,那假如说现在我接到了一个任务,告诉我说事实上这十个人里面,最左边的那个是一位特工,其他9个人都是他的替身,用来掩人耳目的而已,而我要做的事情是和真正的特工接头,比如说走到那个特工面前然后对念两句唐诗就完成了接头。那么当这十个人朝你走过来的时候,你会首先注意到哪个人?你可能会说我又没有和特工碰过头我怎么知道(说得跟我和特工碰过头似的。。)可以类比你去机场或者车站接朋友的时候,在人群中我们一定会先注意到朋友在哪儿,而不会是其他人在哪儿。这就是top-down的方式,即我们大脑中已经有了一个目的或者说任务要找谁,然后当场景出现的时候自然就会基于这个任务去选择首先注意到谁。

        模型介绍

        模型的整体结构图见下图,暂时不用关注图中每一层是什么意思,后面会陆续介绍到。

        


        (一) 获取高斯金字塔图像        

        一般而言,该模型的图片输入是640 * 480像素的,首先进行高斯金字塔的操作,简单地理解就是对图像进行高斯模糊然后降采样,形成包括原图尺度在内的总共9个尺度的图像,尺度0下图像的面积和原图像面积比例为1:1,,从尺度0到尺度8,降采样后的图像和原图面积比例依次为[1:1;1:2;1:4;1:8;1:16;1:32;1:64;1:128;1:256],这个结果是我根据论文的内容推测的,具体是否是这9个尺度还待进一步验证。上图中第二层有一个linear
filtering,指的就是高斯模糊,因为高斯核是唯一的线性核,也就是说使用高斯核对图像模糊不会引入其他噪声,而论文中提到了一个名词叫做octave,中文是八度的意思,这个名词在高斯金字塔中有着很重要的含义,具体关于高斯金字塔的细节问题参考博文http://blog.csdn.net/honpey/article/details/8639617。总而言之,我们现在获得了一副图像在9个尺度下的图像,也就是有9幅图像了。

         现在我们对于1副图像可以获得相应不同尺度下的9幅图像了,那么这些图像有什么作用呢?接下来介绍"center-surround"的一个人类视觉机制,这个机制的意思是说典型的视觉神经元对视觉空间的一个小的区域最为敏感,这个小的区域叫做中心,然而在一个更大且更弱的和中心同心的敌对区域会抑制神经元的响应,这个区域叫周围的区域。这样的结构对局部空间的不连续性非常敏感,这句话可以理解为我们对场景中边缘的部分比较敏感,因为边缘处就是图像不连续的地方。这种机制非常适合用于检测和周围区域不同得中心区域。而用计算机模拟这种机制的方法就是对图像做好的尺度图像(和原图尺度相近的尺度)与坏的尺度图像(和原图差距较大的尺度)的差分。因此,之前得到的9幅图像就有了他的用武之地了。中心指的是在尺度c,cϵ{2,3,4}下的像素,而周围指的是在尺度s=c+δ下的像素,其中δϵ{3,4},因此我们可以得到6中(c,s)的组合,即{(2,5),(2,6),(3,6),(3,7),(4,7),(4,8)}。那么对于不同尺度的图像怎么做插值呢?论文中的原文是说“this
is obtained by interpolation to the finer scale and point-by-point subtraction”,这里有一个小的容易引起误会的地方,即fine scale应该是尺度较大的图像,而coarse scale是尺度较小的图像,那做差的话应该是将大的变小或者小的变大才对,而论文中说的是对finer scale做插值。误区就在于这个单词interpolation(插值),之前以为插值就是想图像中增加像素,后来看到这里感觉不对,去查了下发现interpolation(插值)的定义是:是一种图像处理方法,它可以为数码图像增加或减少象素的数目。所以说这里的意思就是对尺度大的也就是finer
scale进行减少像素操作使得做差的两个图像尺度统一,然后再相减,相减用Θ符号表示。

        (二)前期特征提取(feature map的生成)

        在上文中我们知道了一个图像可以通过高斯金字塔得到9个图像,通过不同的(c,s)组合可以获得6个组合,对于每一个组合,我们可以提取不同的特征。现在讲前期的特征提取。包括灰度特征、彩色通道的特征以及方向特征。

        (1)灰度特征

        灰度的计算公式I = (r + g + b)/3,所以对于每一种组合(c,s),提取相应的灰度特征I(c,s) = |I(c)Θ
I(s)|,这里对于一种(c,s)组合会产生一个特征图(feature map)。

        (2)彩色通道特征

        产生四种宽调谐的颜色通道:

        R = r - (g + b)/2 for red

        G = g - (r + b)/2 for green

        B = b - (r + g)/2 for blue

        Y = (r + g)/2 - |r - g|/2 - b for yellow 

        negative values are set to zero

        计算彩色通道特征的启发来自于人类视觉中的”double-opponent system",这个的意思是在研究中发现神经元在center处会被一种颜色比如红色激活而被另一种颜色比如绿色所抑制,而在surround处这两种颜色是相反的。研究发现(R,G),(G,R),(B,Y),(Y,B)这四个颜色对是存在这种现象的。

       因此对于每一种(c,s)组合会产生以下两个feature map:

       RG(c, s) = |(R(c) - G(c))Θ (G(s) -
R(s))|

       BY(c, s) = |(B(c) - Y(c))Θ (Y(s) -
B(s))|

       (3)方向特征

       局部方向信息是通过对于灰度图I使用Gabor 金字塔来获得的,用O(σ, θ)表示。其中σ∈{0,1,2,3,4,5,6,7,8}表示尺度为σ的图像,θ∈{0,45,90,135}单位是度。因此对于每一种(c,s)组合会产生以下四个feature
map:

 
     O(c, s,θ) = |O(c,θ)Θ
O(s,θ)|,因为θ的取值有四个,所以对于每一种(c,s)组合会产生4个feature map

 
     综上,对于每一种(c,s)组合会产生(1+2+4)总共7个feature map,而总共会有6种组合,所以对于一副图像总共会产生6*7=42个feature map。

 
     (三)显著性图(Saliency Map)的生成

 
     计算显著性图的目的是为了用一个标量来表征图像中一个像素的显著性,对所有的像素都有这样的标量的话就形成了一个显著性图,然后可以用这个显著性图来指导注意区域的选择。通过一个动态神经网络的模型,特征图的组合可以向显著性图提供bottom-up的输入。组合不同的特征图的难点之一在于不同的特征图表示了不可比较的模态的先验信息,有不同的动态范围和提取机制。42个特征图结合时,在一些特征图中表现非常强的显著目标可能被其它更多的特征图的噪声或不显著的目标所掩盖。在缺少top-down监督的情况下,作者提出了一个归一化操作算子N(.),整体提升那些有部分强刺激峰值(醒目位置)的特征图,而整体抑制那些包含大量可比峰值响应。图解见下图,由下图可见,对于灰度特征图,普遍的值都较高,因此进行整体抑制,而对于方向特征图,只在某一小部分区域有着较大的值,因此进行整体提升。

 
     


 
     N(.)具体包括以下步骤:

       ①、将所有图的取值固定为[0,M],消除依赖于模态的幅值差异;
       ②、计算图中最大值M和其他所有局部极大值的平均值m;
       ③、整幅图像乘以(M-m)* (M-m)。
       通过②③步骤可以看出,正如之前所说,整体提升那些有部分强刺激峰值的特征图,而整体抑制那些包含大量可比峰值响应。因为如果一个特征图只有部分值非常突出的话,那么(M-m)就会很大,特征图整体乘以(M-m)(M-m)就会增强整个特征图,如果普遍值都较高的话(M-m)就会很小,因此乘以他的平方后会抑制整个特征图。

 
     特征图被组合成三个conspicuity map,ī表示灰度的conspicuity map,ū表示彩色通道的conspicuity map(本来应该是c头上加一横线,但是无法打出这个符号因此用ū代替),ō表示方向的conspicuity
map,并且都是在尺度为4的图像上做的。他们是通过跨尺度的相加得到的,用符号⊕表示。具体计算公式如下:

 
     


 
       从上式我们可以看出一个很重要的思想:作者假设了相似的特征之间对于显著性竞争很强,而不相似的特征对于显著性图的贡献没有竞争,是互相独立无关的。S成为了归一化三种特征的conspicuity map,并最后输入到saliency map中去。值得注意的一点是,这里的S不是saliency map,而是最终输入到saliency
map中去的一个图,它现在还只是一个conspicuity map。那么现在的问题是如何通过S计算得到saliency map呢?(后面简称SM)。

        这里引入了一个神经科学的名词——leaky integrate-and-fire neuron,它是一种神经元的模型,关于这种神经元模型的细节可以参考http://icwww.epfl.ch/~gerstner/SPNM/node26.html,里面有详细的介绍和数学推导。本文是将最后的SM建模成为一个在尺度为4的情况下的二维leaky
integrate-and-fire neuron的模型。SM中的神经元都是相互独立的,并且接受来自S的输入刺激。SM中的神经元的电位(这里所说的电位以及fire等词汇都是来自leaky integrate-and-fire neuron模型中的,想了解的可以去参考网址看看,这里不做进一步的解释了。)在更为显著的区域会增长得更快,这些神经元不会fire(fire的意思是当神经元的电位超过一个阈值的时候,电位就会立刻降到一个固定的较低的值去,然后重新开始增长电位),不会fire也就是说这里的神经元仅仅充当一个积分电路的角色,用来累积电位,但电位永远不会超过设定的阈值。SM会和一个2维的winner
take all(WTA)神经网络相连,中文可以翻译为胜者为王的神经网络。SM中的每一个神经元都会刺激与它相连的WTA神经元,所有的WTA神经元都各自发展,互相独立,直到有一个WTA神经元率先达到了电位阈值,然后fire了。这将引发以下三件事情:

        1、关注的中心(FOA)转移到了率先达到电位阈值的WTA神经元所在的位置。

        2、WTA神经网络中所有的神经元的电位都被重置为初始值了(一个较低的电位值,也可以理解为电位变为了0)。

        3、在SM中FOA的区域处随后发生了局部抑制,这样做的好处是在下一次的电位累积中,显著性稍微比最强的差一点的区域可以成为新的winner,从而可以使得FOA(focus
of attention)动态变化,因为我们关注的东西可能不只一处,同时还防止下一次的FOA又是上一次检测到的显著性区域。这种机制被称为“inhibition of return”,它已经在一些研究中被证明是确实存在的,说得通俗一点,就是本次称为FOA的区域在下一次直接在相应的SM图中的值变为0,让其他区域有机会称为新的FOA。

        最后值得说明的一点是,在每一次胜者为王的竞争中,最后胜出的是一个像素,那么如何根据这个像素来定义FOA区域呢?本文采用的方法是以这个像素为中心,半径是SM图长宽中较小的那个的1/6,形成一个圆形区域作为FOA区域。而关于leaky
integrate-and-fire neuron模型中阈值的选择在本文引用的论文中有介绍,这里就不做具体介绍了。

 
      对于这篇论文提出的模型介绍就到此为止了,原文在介绍了这个模型之后做了一些对比性试验并且得出了一些结论,大家可以看看文章里面怎么写的,这里出于时间考虑我就不再赘述了。花了两天时间,第一天读了论文,第二天写了这篇博客,写的过程中第一天没有理会的意思慢慢有所领悟,感觉把读的文章用自己的文字写下来是一种很好的选择,可以帮助我们更深地理解文章内容。接下来抓紧看下一篇经典的论文,理解之后再来更新博客。

       
最后由于笔者也是刚刚接触这个领域,所以文中难免出现一些理解不到位的地方,还请大家多多指出,互相交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐