[Note] Saliency Detection: A Boolean Map Approach

Saliency应该是翻译为显著性。个人理解显著性检测是得到一张图片上每一个像素点的显著程度的过程。对于这个显著程度,直观的理解就是它在这张图上的重要程度。比如,这些照片里

Bird Diversity 2013

组成鸟的像素应该是比背景的像素更加重要,也就是应该有更高的显著性值。知道了各个像素点的显著性之后,可以用来帮助一系列的更加具体的任务,比如这篇文章里的Eye Fixation的预测,也就是预测在这张图片上人会看哪里。还有显著物体的检测,可以更进一步的做物体检测和识别。

直接描述这篇文章的方法吧。输入是一张图片,输出是一张Saliency Map,表示每一个像素点上的显著性。根据Saliency Map可以进一步的做更佳具体的任务。得到Saliency Map的过程是先得到一组Boolean Maps,然后每一张Boolean Map得到一张Attention Map,对所有的Attention Maps求均值之后做Dilation就得到了Saliency Map。过程很简洁。

假设输入图片有三个颜色通道,随机的选一个颜色取一个阈值。然后据此把图片转成一张0/1的图片,颜色值大于阈值的为1,否则为0。这张0/1的图就是一张Boolean Map。重复这个过程就得到了一组Boolean Maps。Boolean Map如果一块区域和很好的封闭的边缘,那么就有可能是一个显著的物体。所以连着图片边框的区域显著性就会比较低。基于这个假设,把连着图片边框的区域都去掉,然后对全图做归一化,就得到了Attention Map。

没有做过Saliency Detection,欢迎指出各种错误。看到一篇文章引用了这个叫BMS的方法就找来看看。然后就发现作者是一起实习的小伙伴。。

[Note] Discovering Hidden Factors of Variation in Deep Networks

一篇很有意思的文章。在一个半监督学习的框架下把需要预测的部分和其他隐含的变化因素(Hidden variations)分开。

比如我们现在的问题是表情分类,给定七种不同的表情,喜怒忧思悲恐惊(老中医..),我们可以训练出一个来判断任一输入图片中人的表情,记为\(y\)。
于此同时,我们还从输入图片中得到了代表其他和任务无关部分的信息,记为\(z\)。具体来说,两个不同的人的照片可以是同样的表情。但是除了表情相同之外,两张照片因为来自不同的人当然有很多其它的不同。除了表情之外其它的隐含信息就是\(z\)。

具体的实现上是基于auto encoder的,在encoding的时候设置两部分输出\(y\)和\(z\)。其中\(y\)的部分就同有监督学习一样。
Screen Shot 2015-05-12 at 10.36.18 AM

目标函数:

\[ \hat{\theta}, \hat{\phi} = \arg \underset{\theta,\phi} \min \sum_{\{x,y\}\in \cal{D}} \alpha U(x,\hat{x}) + \beta S(y,\hat{y}) + \gamma C(\hat{y},z) \]

其中\(\hat{\theta}, \hat{\phi}\)是encoder和decoder的参数,\(\alpha,\beta,\gamma\)是个部分的权值。第一部分就是auto encoder的无监督学习,第二部分是针对需要预测的量的有监督学习,第三部分是作者提出的 cross-covariance penalty (XCov)。目标函数的第三部分XCov意在最小化\(y\)和\(z\)的相关程度,让两者分开。

实验部分也很有意思,给定一个输入图片得到\(y\)和\(z\)之后。可以固定\(z\)然后改变\(y\),从而使得decoder部分可以重建出同样一个人的不同表情。

Screen Shot 2015-05-12 at 10.36.34 AM

Reference:
Brian Cheung and Jesse A. Livezey and Arjun K. Bansal and Bruno A. Olshausen, Discovering Hidden Factors of Variation in Deep Networks, CoRR 2014