Selective Search 简介

Selective Search 算法来时论文Selective Search for Object Recognition。Selective Search 通过颜色、纹理、大小等特征的相似度把图像分成许多个不同的区域。目标检测算法可以从这些区域中检测对象,加快检测速度。经典的R-CNN算法就使用了 Selective Search 算法来选取候选区域。

下图是 Selective Search 提取图像区域的例子:
Selective Search 笔记

可以看到, Selective Search 能够把图像中特征相似的区域提取出来,而这些区域通常就是对象的所在位置。

算法流程

Selective Search 算法伪代码如下:
Selective Search 笔记

Selective Search 算法输入彩色图片,输出的是对象可能的位置。

第一步,使用 Efficient graph-based image segmentation 算法生成初始区域集R,同时设置区域相似S为空集。
第二步,对于相邻的区域(ri,rj),计算它们的相似度s(ri,rj),并添加到相似集S中。
第三步,获取S中相似度最高的两个区域s(ri,rj)
第四步,合并区域rirjrt
第五步,删除与rirj有关的相似度,
第六步,计算新区域rt与相邻区域的相似度St,并把St添加到S中,rt添加到区域集R中。
第七步,如果S不为空,返回第三步。

总的来说,Selective Search 算法不断合并相似的区域。

计算区域相似度

作者从颜色、纹理、大小和空间重叠度四个方面计算区域的相似度。

颜色相似度

作者尝试许多颜色空间,比如RGB,HSV等。作者使用 L1 norm 的每个颜色通道使用25个bin的颜色直方图Ci={ci1,,cin}计算两个区域的颜色相似度scolour(ri,rj)。其中颜色通道3个,n=75

scolour(ri,rj)=k=1nmin(cik,cjk)

合并rirjrt的直方图是
Ct=size(ri)×Ci+size(rj)×Cjsize(ri)+size(rj)

就是CiCj的加权平均,这样可以避免重新计算rt的直方图,提升算法效率。

纹理相似度

作者使用SIFT-Like特征作为纹理。在每个颜色通道的8个方向计算方差σ=1的高斯导数,每个颜色通道取10个bins的直方图,进行L1 norm,这样得到n=8×3×10的向量Ti={ti1,,tin}。纹理相似度stexture(ri,rj)为:

stexture(ri,rj)=k=1nmin(tik,tjk)

新区域的纹理特征向量tt同样使用titj加权平均。

大小相似度

大小相似度ssize(ri,rj)为:

ssize(ri,rj)=1size(ri)+size(rj)size(im)

其中size(im)表示图片的大小。这个公式可以确保小的区域先合并。

空间重叠度

空间重叠度指区域rirj之间的交叠程度,重叠部分越多,这两个区域就越应该合并。空间重叠度s(fill)(ri,rj)

s(fill)(ri,rj)=1size(BBij)size(ri)size(rj)size(im)

其中BBijrirj合并后的 bounding box。

区域相似度

最后结合上述4中相似度,得到区域相似度公式:

s(ri,rj)=a1scolour(ri,rj)+a2stexture(ri,rj)+a3ssize(ri,rj)+a4s(fill)(ri,rj)

其中,ai{0,1},决定是否使用对应的相似度。

相关文章: