今天认真把Selective Search for Object Recognition这篇文章阅读完,想来写写自己的见解与想法。如果有错,希望得到大牛们的指点,谢谢!
文章一开始就提出问题: 如何判别哪些Region属于同一个物体?
对于图a,说明了物体之间可能具有的层级关系,比如碗里有个勺子; 对于图b,我们可以根据颜色来分开两只猫,但是不能根据纹理来分开; 对于图c,我们可以根据纹理来找到变色龙,但是不能根据颜色来找到; 对于图d,我们将车轮归类成车的一部分,既不是因为颜色相近,也不是因为纹理相近,因为车轮是车的一部分,且其实封闭的。
所以需要用多种策略结合,才有可能找到图片中的所有物体。
所以本文就开始提出使用Selective Search进行物体检测。并且物体之间存在层级关系,所以Selective Search用到了Multiscale的思想。
从上图中就能看出,Select Search在不同尺度下能够找到不同的物体。 读者注意了哦,这里说的多尺度是通过分割的方法将原始图片分成多个Region,然后用Grouping方法合并成一个大的Region,而不是我们平时说提到的缩放,窗口大小变化。在合并过程,一直重复提到的过程,直到最后成为一个最大的Region,这过程也体现了物体之间有层级关系。
文章的相关工作 Exhaustive Search,这种方法基本采用变化的窗口遍历地进行大规模的搜索,太耗时和计算损耗; Segmentation,仅仅是简单的分类策略只能分割部分或者目标被遗漏,而且只是单一的策略,在分割过程会失去很多信息; Other Sampling Strategies,对search的物体进行取样而不依赖它的类别。
现在我大概的介绍下Selective Search方法
其是使用Efficient GraphBased Image Segmentation中的方法来得到Region,得到所有Region之间两两的相似度,然后合并最相似的两个Region,再重新计算新合并的Region与其他Region的相似度,重复上述过程直到整张图片都聚合成一个大的Region,使用一种随机的计分方式给每个Region打分,按照分数进行排序,取出前K的子集,就Selective Search的结果
Hierarchical Grouping层次分组 区域包含的信息比像素多,所以文章的特征是基于区域的。为了得到一些小的初始化的区域,用的是Efficient GraphBased Image Segmentation中区域划分的方法。 具体算法如下:
首先用Efficient GraphBased Image Segmentation得到一些初始化的区域R={r1,….rn};计算出每个相邻区域的相似性s(ri,rj);
大致就是这个过程。
策略多样化(Diversification Strategies) 文章使用多种策略对图像处理,为了在各方面得到图像的详细信息,来提高精确度。最后,文章用了3种策略方法:Complementary Colour Spaces、Complementary Similarity Measures和Complementary Starting Regions。
Complementary Colour Spaces 文章给了8种颜色空间: (1) RGB,(2) the intensity (grey-scale image) I, (3) Lab, (4) the rg channels of normalized RGB plus intensity denoted as rgI, (5) HSV, (6)normalized RGB denoted as rgb, (7) C [14] which is an opponent colour space where intensity is divided out, and finally (8) the Hue channel H from HSV.
Complementary Similarity Measures 文章给了四个相似测量:
Scolor(ri,rj)用于计算ri,rj的相似性。对每个区域,我们都可以得到一个一维的颜色分布直方图。直方图一共有25个区间,区域i的颜色分布直方图为:
如果有3个颜色通道,则n=75,还要用L1 norm来进行归一化:
颜色直方图可以有效地传播通过层次结构:
最后区域大小为: size(rt) = size(ri)+size(r j).
Stexture(ri,r j)可以用到SIFT(局部特征描述子)。取8个方向,方差为1的高斯滤波器,10个空间的直方图来描述。直方图为:
然后用L1 norm来进行归一化:
其有效传播与颜色空间相似一样。
Ssize(ri,rj)希望较小的区域尽早合并。其公式如下:
size(im) denotes the size of the image in pixels.
fill(ri,rj) 希望有相交或者有包含关系的区域先合并。
size(im)和Ssize(ri,rj)定义一样。
初始化Region
评估(Evalutation)
文章进行了四项评估,有兴趣的读者可以自己去读读文章,在这里就不详细描述了。
文章定义了两个判断标准:
最后给出文章的一点对比算法,在大多数物体上的检测有了明显的提升。
代码地址:
http://koen.me/research/selectivesearch/
谢谢您的阅读,期待我下次的文章解析。谢谢!