Saliency Detection: A Spectral Residual Approach

Saliency Detection: A Spectral Residual Approach

Saliency Detection: A Spectral Residual Approach

  1. 题目:Saliency Detection: A Spectral Residual Approach
  2. 作者:Xiaodi Hou, Liqing Zhang
  3. 领域:显著性目标检测
  4. 类型:新视角, 新方法


概述


The ability of human visual system to detect visual saliency is extraordinarily fast and reliable. However, computational modeling of this basic intelligent behavior still remains a challenge. This paper presents a simple method for the visual saliency detection.


  • Our model is independent of features, categories, or other forms of prior knowledge of the objects.
  • By analyzing the log-spectrum of an input image, we
  • extract the spectral residual of an image in spectral domain,
  • and propose a fast method to construct the corresponding saliency map in spatial domain.


核心贡献


首先讨论人类的视觉系统是如何实现显著性检测的?现在一般认为视觉系统的处理过程分为两步:

  1. 第一步是并行的、简单的预注意处理
  2. 第二步 是串行的、缓慢而又复杂的注意处理过程

在第一步的过程中,人们对眼前所出现的事物,总会有一些底层特征是突然冒出来的,比如方向、纹理、边缘、亮度等,论文中用“pop up”一词来表示这种行为,以目标检测的角度来看,在第一步过程中突然冒出来的东西被看做是目标的候选物体,即这些东西可能就是我们想检测的目标。相关文献给这种候选物体起了一个专业的名字,叫proto object


为了找到这些proto objects,人们提出了许多模型,比较有名的有Itti的基于生物视觉的模型等,但是这些模型作为一个预注意处理系统,花费的计算量偏大了。现在大多数模型都是在找目标物体的特征和性质,而没有一个与物体类别无关的用来做显著性检测的模型。




这篇文章提出了一个图像视觉显著性的简单计算模型,这个模型和Itti提出的模型是两个截然不同的模型. Itti模型对于图像视觉显著性主要关注整幅图片突出的部分,通过各种特征的融合提取显著性图,而这个模型一上来关注的点就不在一张图片里突出的地方,而是背景,观察是否大部分图片的背景在某个空间上都满足什么变化,最后剔除背景,自然就只剩下图片突出的部分了,这篇文章之所以简单,是因为它只需要5个公式就可以得到想要的结果,也没有很复杂的公式变换,都是图像处理基本的变换公式。


传统的模型通过将特定的特征(例如一些颜色特征、亮度特征、纹理特征等等)与目标联系起来,实际上将这个问题转化为检测特定类别的对象。由于这些模型是基于训练的,扩展性成为了通用任务的瓶颈。面对不可预测、种类繁多的视觉模式,需要一个通用的显著性检测系统。换句话说,在实现显著性设计时,应尽可能少地参考对象的统计知识


如果要提出一个通用的显著性检测系统,那么根据以往的模型,就必须找到目标通用的特征,但是这基本上是不可能的事,每个目标都有自己与众不同的特性。既然这样,那么这里就把问题转化一下,目标通用特性提取不到,那就找一找背景的通用特性

Most of the detection models focus on summarizing the properties of target objects. However, general properties shared by various categories of objects are not likely to exist. In this paper, we pose this problem in an alternative way: to explore the properties of the backgrounds.


这就是文章创新的地方,敢于跳出已有理论的框架,从另外一个角度考虑问题,往往会有预料之外的收获。




高效编码是一种通用的框架,在此框架下,我们的视觉处理的许多机制可以相互关联。Barlow提出的有效编码假说要移除感知系统的冗余, 视觉系统的基本原理是抑制对频繁出现的特征的反应,同时对偏离常规的特征保持敏感。因此,只能将未预料到的信号发送到后期处理。

感知系统的信息处理过程与外界信号的统计特性密切相关。初级感知系统的作用就是去除输入信号的统计冗余

也就是说,大脑之所以能够对外界环境自适应,是因为复杂的外界刺激存在冗余,而大脑的神经元能够有效地去除这些冗余,从而可以利用较少的资源尽可能有效地表达更多的信息。


从信息论的角度来看,有效编码假说将图像信息H(Image)分解为两部分:


Saliency Detection: A Spectral Residual Approach


H(Innovation) 表示突出的部分,H(Prior Knowledge) 则表示应该被编码系统抑制的冗余的信息, 在图像统计领域,这种冗余对应于环境的统计不变性。通过去除图像冗余信息,就可以获得图像与众不同的部分,即显著目标。


现在人们普遍认为自然图像不是随机的,它们服从高度可预测的分布。

自然图像的统计特性具有变换不变性:即将图像从原来的空间坐标变换到频率坐标系中,图像在空间中具有的统计特性在频域中仍然保留,这种不变性恰好保证了采用能量谱来刻画自然图像空间相关性的可靠性。

在自然图像统计的不变因子中,尺度不变性是最著名也是研究最广泛的性质。这个性质也被称为Saliency Detection: A Spectral Residual Approach定律。 即大量自然图像在某个频率的幅度的平均值和该频率成反比


Saliency Detection: A Spectral Residual Approach


进一步还有以下规律:当频率和平均幅频响应都在log-log坐标下时是近似线性的,同时当只有幅频响应取log坐标时,所有的图像的幅频响应曲线是类似的,下图反映了自然图像的log-log谱和log谱的区别。


Saliency Detection: A Spectral Residual Approach


可见,log-log曲线近似为一条直线,而log曲线基本符合Saliency Detection: A Spectral Residual Approach法则。


尽管log-log谱在理论上已经成熟并得到了广泛的应用,但它在单个图像的分析中并不受欢迎,因为:

  1. 在单个图像中不太可能发现尺度不变性
  2. 采样点比例不均匀,低频部分在log-log上分布稀疏,高频部分集中,存在噪声的影响(低频部分数据跨度大,高频部分数据汇集)

所以本文采用log谱Saliency Detection: A Spectral Residual Approach表示图像.




Saliency Detection: A Spectral Residual Approach


我们发现不同图像的对数谱具有相似的趋势,尽管每个图像都包含统计奇点。


Saliency Detection: A Spectral Residual Approach


如图, 分别超过1、10和100幅图像上平均的平均谱曲线。这一结果表明平均log谱具有局部线性。因此,采用局部平均滤波器Saliency Detection: A Spectral Residual Approach近似Saliency Detection: A Spectral Residual Approach)的形状是合理的。在我们的实验中,平均滤波器的核n大小等于3。改变n的大小只会稍微改变结果(见图5)。


Saliency Detection: A Spectral Residual Approach


平均频谱Saliency Detection: A Spectral Residual Approach近似为对输入图像进行卷积:


Saliency Detection: A Spectral Residual Approach


当100张图片取平均时,发现那些尖峰的东西没有了,曲线变得平滑了起来。于是作者认为这个平滑的曲线和之前充满尖峰的曲线之间的关系可能和图像中不显著的和显著的东西的关系存在某种联系


那么会不会是说平滑的曲线就是背景所贡献的,而那些小尖峰就是显著性的物体所贡献的?我认为可以这样认为——显著性的物体破坏了背景的平滑性,导致原本平滑的曲线上多了一些尖峰变得不再平滑。于是作者便着手去实验这种想法,大致的思路是用一个图片的幅频响应曲线减去平均的曲线,得到的差称为谱残差,再将谱残差通过傅里叶反变换变换回去,看看都对应原图中的哪些区域,这些区域是不是显著性的区域, 这样就可以验证这个想法对不对了。经过实验后发现还真是这么回事儿。




相似性意味着冗余。对于一个旨在减少视觉冗余信息的系统,它必须知道输入刺激的统计相似性。因此,在不同的log谱中,可以观察到相当多的形状相似性,值得我们注意的是平滑曲线中跳出来的信息(曲线满足局部线性条件)。我们认为谱中的统计奇异点可能是图像中异常区域出现proto-objects的原因。因此,在不同的log谱中我们只需要关注其差异部分忽略相似部分。


核心公式


Saliency Detection: A Spectral Residual Approach


  • 公式5表示傅里叶变换的实部, 也就是幅度谱
  • 公式6表示虚部, 也就是相位谱
  • 公式7表示幅度谱的对数变换
  • 给定输入图像,从高度(或宽度)等于64px的下采样图像中提取对数谱Saliency Detection: A Spectral Residual Approach。输入尺寸的选择与visual scale有关
  • 当图像较小(粗糙), 细节特征被忽略, 视觉搜索在一个大的尺度上执行的
  • 在精细的尺度上(大图像),大的特征与图像中微小但突然的变化相比变得不那么具有竞争力
  • 如果没有一个缓慢的观察过程,人是不可能感知图像的细节(对应于傅里叶谱中的高频部分)。通过仿真实验,发现64像素的输入图像的宽度(或高度)是一个很好的估计正常视觉条件的尺度
  • 公式8表示频域残差, 也就是幅度谱对数与幅度谱经过均值滤波器平滑后的差值
  • 这里的幅度谱经过均值滤波器平滑, 实际上是用来近似大量数据平均后的幅度谱
  • 平均log谱具有局部线性。因此,采用局部平均滤波器Saliency Detection: A Spectral Residual Approach近似Saliency Detection: A Spectral Residual Approach)的形状是合理的
  • Saliency Detection: A Spectral Residual Approach
  • 公式9表示最终的得到的空域显著性图
  • Saliency Detection: A Spectral Residual Approach进行傅里叶逆变换,得到空间域的显著性图
  • 为了得到更好的视觉效果,对显著性图做一次标准差为8的高斯模糊
  • 利用傅里叶反变换,我们可以在空域构造输出图像,称为显著性图。显著性映射主要包含场景中重要的部分。残差谱的内容也可以解释为图像的非预期部分。因此,显著性映射中每个点的值都要平方,以表示估计误差
  • 这里得到的显著性图是概率图


显著性图是proto-objects的显式表示,使用简单的阈值分段来检测显著性图中的proto-objects。给定图像的Saliency Detection: A Spectral Residual Approach,得到目标映射Saliency Detection: A Spectral Residual Approach:

Saliency Detection: A Spectral Residual Approach

阈值的选择是 a trade-off problem between false alarm and neglect of objects


评测标准


Saliency Detection: A Spectral Residual Approach


定义了击中率和误警率.

  • HR(击中率)计算为所有手工标注者标注的结果与生成的显著性图像素乘积的均值. 这实际上是在计算真值的前景与预测结果前景的交集.
  • FAR(误警率)计算真值的背景与预测结果前景的交集.


该判据指出,最优显著性检测系统应在没有手标签者提示proto-objects的区域响应较低,而在大多数标签者对proto-objects达成一致的区域响应较高。


和Itti的方法做了下比较:


Saliency Detection: A Spectral Residual Approach


由图可以看出本文方法在计算时间上比Itti方法更快,而且准确度也得到提升。


参考代码


clear; clc;

%% Read image from file
inImg = im2double(rgb2gray(imread('Spectral_Residual.png')));
%%inImg = imresize(inImg, 64/size(inImg, 2));

%% Spectral Residual
myFFT = fft2(inImg); % A(f),一个图像的振幅,主要保存图像低频部分的信息
myPhase = angle(myFFT);  % 图像对应的相位图,主要保存图像高频部分的信息

% 对低频部分处理,即处理背景部分,使背景部分的振幅接近0,去掉背景,剩下的就是前景目标
myLogAmplitude = log(abs(myFFT)); % L(f) = log(A(f)),图像振幅的log谱,log可以使振幅值区间变小
averageAmplitude = imfilter(myLogAmplitude, fspecial('average', 3), 'replicate');
mySpectralResidual = myLogAmplitude - averageAmplitude;

%% to spatial domain
% 用残差振幅(保存的低频信号,且值接近0),替代图像的原振幅(保存的低频信号,且值较大),再结合相位图,反傅里叶变换到空域中。
saliencyMap = abs(ifft2(exp(mySpectralResidual + 1i*myPhase))).^2;

%% After Effect
saliencyMap = mat2gray(imfilter(saliencyMap, fspecial('gaussian', [10, 10], 2.5)));
imshow(saliencyMap);


参考链接


  • 笔记:
上一篇:【论文学习】A Fuzzy-Rule-Based Approach for Single Frame Super Resolution


下一篇:快速幂求逆元