Spectral Residual 小记

又到了一年一度带本科生做毕业设计的时候了。

显著性检测,对我来说是个非常陌生的领域。这篇日志记录一点关于 Xiaodi Hou and Liqing Zhang 在07 年的 CVPR 上发表的 Saliency Detection: A Spectral Residual Approach 的小笔记,以便能现学现卖,帮着本科生把毕业设计糊弄过去。

1. About The Author

真得很神奇,虽然是第一次读论文第一作者 Xiaodi Hou 的文章,但在此之前,其实早已受过其不小的影响:

  • Xiaodi Hou 在知乎上的 ID 是Filestorm ,是 神经学生物学 话题的优秀回答者,在看他的论文之前,你可能已经在知乎周刊上看过好几个他的回答了;
  • Xiaodi Hou 还是关于博士生的喜剧电影 The PhD Movie 的演员之一,出演了那个在舞厅邀请女主跳舞的本科生;
  • Xiaodi Hou 著名的 上海交大生存手册 的作者之一,我人生的一大遗憾就是,是在本科毕业而不是入学时才读到这本小册子;
  • 最让人叹服的是, Xiaodi Hou 04 年高中毕业才进入上海交大,考虑到 CVPR 一般都是在上一年 11 月份投稿,Hou Xiaodi 投稿这一篇目前引用 2000 多次的 CVPR 论文时,其实大三上学期开学没多久,包括我在内,多少人这辈子做梦都想发一次 CVPR,Hou 他竟然在大三就完成了。

2. Motivation

2.1 Perspective

从题目中就能看出来,论文的目的是做显著性检测的,但这篇论文之所以能被引用这么多次,在于它与传统显著性检测的思路并不一样。传统方法,如 Itti 模型,检测显著性目标的思路就是抽取目标的显著性特征,如颜色、亮度、纹理,通过综合并分析这些特征,找出图像的显著性区域。但这样做的通用性并不是很好,因为不同类型的目标会有不同的特征,并不能一概而论。Hou 在本文中另辟蹊径,并不预先假设目标会具有怎样的颜色、亮度、纹理特征,而是来探索背景具有何种特性(pose this problem in an alternative way: to explore the properties of the backgrounds.)将目标看作是引起背景变化的东西,通过估计背景,来做显著性检测。

2.2 Insight

人类视觉系统的一条基本法则就是会抑制重复性出现的特征,而更关注那些偏离寻常的东西。因此,只有那些意料之外的信号,才会引起我们的注意。恰巧的是,自然图像的平均傅里叶谱(averaged Fourier spectrum)遵守有名的 $1/f$ 法则,即频率 $f$ 对应的傅里叶谱的幅度与其频率成反比,数学公式表示为
$$
E{\mathcal{A}(f)} \propto 1/f
$$
其中符号 $E{\cdot}$ 表示期望运算。本文方法主要的出发点是,作者洞察到所有的图像傅里叶谱都遵守这个规则,并在论文中给出了 Figure 1,可以看出,单幅图像的 Log Spectrum 与 2277 张图像合成图像的 Log Spectrum 非常相似。

除了 Log Spectrum 的相似性外,作者另外一个非常重要的洞察是平均 Log Spectrum 的局部线性(local linearity)性质,具体如 Figure 3 所示。可以从图中看出,一幅图像的 Log Spectrum 整体的平滑性更差一些,而 100 条 Log Spectrum 平均的结果更平滑一些,具有作者所说的 局部线性(local linearity)。背后的设想是,如果图像中只有纯背景的话,Log Spectrum 应该平滑且具有局部线性才对(100 条 Log Spectrum 相加是为了近似纯背景的 Log Spectrum,而前面讲的 Log Spectrum 的相似性是为了这里对纯背景的近似提供合理性),恰恰是显著目标的出现破坏了 Log Spectrum 的局部线性。

2.3 Idea

相似性即意味着冗余性(Similarities imply redundancies),既然图像拥有相同的 Log Spectrum ,那这些相似冗余的东西并不会首先引起我们视觉系统的注意。只有那些频谱中的统计奇异点(Statistical singularities)才对应着异常区域,也就是目标可能存在的区域。

那该怎么找出这些统计奇异点(Statistical singularities)呢?理想的状态当然是含有目标时图像的 Log Spectrum 减去同场景但不包含目标时的 Log Spectrum,但实际中拿到同场景的背景图像几乎不可能,我们要做得,就是只从单幅图像(Log Spectrum)中找出显著区域(Log Spectrum 上的 Statistical singularities)。

那能不能从仅有的包含目标的图像的 Log Spectrum 中估计出背景图像的 Log Spectrum 呢?如果估计的好,那我们就可以用上面相减的套路了。显然,这值得一试。作者在文中是采用均值滤波来估计背景图像的 Log Spectrum。采用均值滤波,除了利用图像背景 Log Spectrum 的局部线性这一性质外,还隐含假设了显著目标的 Statistical singularities 对 Log Spectrum 的干扰是零均值。

由此,通过均值滤波,能够获得对背景图像 Log Spectrum 的估计,而原图像的 Log Spectrum 减去估计的背景图像 Log Spectrum 就得到了显著目标对应的 Log Spectrum,也就是本文题目中所说的 Spectral Residual,对这个 Spectral Residual 做傅里叶反变换即可得到显著区域。

3. Method

在理清了文章的 idea 后,具体方法的内容也就顺理成章了。本文之所以被引用如此之多,我想除了另辟蹊径从背景估计来做显著性检测之外,还有其算法步骤非常简单的缘故。文章所有步骤只有如下 5 步,分别是计算 频谱幅值、相位、Log Spectrum,Spectrum Residual 和显著性图。

MATLAB 代码也非常简单

1
2
3
4
5
6
myFFT = fft2(inImg);
myLogAmplitude = log(abs(myFFT));
myPhase = angle(myFFT);
mySmooth = imfilter(myLogAmplitude, fspecial('average', 3), 'replicate');
mySpectralResidual = myLogAmplitude - mySmooth;
saliencyMap = abs(ifft2(exp(mySpectralResidual + 1i*myPhase))).^2;

4. Rethinking

通读论文,让我最困惑的其实是怎么理解 Statistical singularity,因为不像小波变换,傅里叶变换是全局变换,目标对应的频谱是弥漫在整个谱上的,对我来说非常难理解频域上的 Statistical singularity。实验可以更加具象化我的困惑,下图我给出了论文中一幅图像的 Log Amplitude,均值滤波后的 Log Amplitude 和 两者相减的 Spectral Residual,可以看出,Spectral Residual 弥漫在整个频域,看不出显式的 Statistical singularity。

Input Log Amplitude Smooth Spectral Residual

后来我在进一步搜索 Spectral Residual 能够 Work 的合理解释的时候,看到了下面这篇论文。

Guo, Chenlei, Qi Ma, and Liming Zhang. “Spatio-temporal saliency detection using phase spectrum of quaternion fourier transform.” Computer vision and pattern recognition, 2008. cvpr 2008. ieee conference on. IEEE, 2008.

这篇论文认为,Saliency Detection: A Spectral Residual Approach 虽然效果非常好,但其原理解释是有问题的(The results are good, but the reason is questionable)。频谱幅度的残差在显著性检测中起得作用非常小,真正对显著性检测起作用的相位信息。可以把 Spectral Residual 舍弃掉,仅用相位信息重构,便能获得跟 Spectral Residual 方法一样的效果,作者把他们的方法称为 Phase spectrum of Fourier Transform (PFT)。 PFT 的步骤就更简单了,只有 3 个公式:

MATLAB 代码也更简单了,仅有 3 行

1
2
3
myFFT = fft2(inImg);
myPhase = angle(myFFT);
saliencyMap = abs(ifft2(exp(1i*myPhase))).^2;

从下图中可以看出,PFT 和 SR 的结果是几乎一样的,这表明相位才是本质原因。

对于为什么是相位?作者给出的解释大致是,相位能够指示突变信号的位置,并用下图以一维情况做了注解。

The same rule can be applied to two-dimension signals like images as well. [12] pointed out that the amplitude spectrum specifies how much of each sinusoidal component is present and the phase information specifies where each of the sinusoidal components resides within the image. The location with less periodicity or less homogeneity in vertical or horizonal orientation creates the ”pop out” proto objects in the reconstruction of the image, which indicates where the object candidates are located.

5. Remaining Questions

记录两个还没搞明白的问题,留待日后填坑。

5.1 Why Phase?

虽然 Spatio-temporal saliency detection using phase spectrum of quaternion fourier transform 一文指出了相位才是 Spectral Residual 方法中能够检测显著性的关键,但文中给出的相位能够指示突变信号位置的解释很难让我信服,因为背景中也会有强边缘这样的突变信号,为何就没有反应在显著性图里呢?个人觉得真正要解释其本质原因,还是需要跟人眼视觉系统背后的生物机制联系起来。

5.2 How to plot 1D Log Spectrum of an image?

还有一个让我困惑的问题是,Saliency Detection: A Spectral Residual Approach 一文中的 Figure 1、Figure 3 这样明明是图像的 Spectrum,照理应该是二维的,但其展示的一维的 Spectrum 究竟是怎么画出来的。唯一可以知道的线索是,该图是 $256 \times 256$ 大小的,而 Figure 1 中频率的上限就是 128,也就是说,信号的采样频率刚好是图像的尺寸,从而信号频谱的上限正好是采样率的一半。如果正在读此文的您知道如何画出 1D 的 Spectrum,请务必在评论中留言告诉我,谢谢~

感谢您一直阅读到这里,如果我的文章有错误或不足之处,请务必在评论中留言指出,千万不用客气,万分感谢~

坚持原创技术分享,您的支持将鼓励我继续创作!