Selective Search 简介
Selective Search 算法来时论文Selective Search for Object Recognition。Selective Search 通过颜色、纹理、大小等特征的相似度把图像分成许多个不同的区域。目标检测算法可以从这些区域中检测对象,加快检测速度。经典的R-CNN算法就使用了 Selective Search 算法来选取候选区域。
下图是 Selective Search 提取图像区域的例子:
可以看到, Selective Search 能够把图像中特征相似的区域提取出来,而这些区域通常就是对象的所在位置。
算法流程
Selective Search 算法伪代码如下:
Selective Search 算法输入彩色图片,输出的是对象可能的位置。
第一步,使用 Efficient graph-based image segmentation 算法生成初始区域集R,同时设置区域相似S为空集。
第二步,对于相邻的区域
(ri,rj)
(
r
i
,
r
j
)
,计算它们的相似度
s(ri,rj)
s
(
r
i
,
r
j
)
,并添加到相似集S中。
第三步,获取S中相似度最高的两个区域
s(ri,rj)
s
(
r
i
,
r
j
)
,
第四步,合并区域
ri
r
i
和
rj
r
j
成
rt
r
t
,
第五步,删除与
ri
r
i
和
rj
r
j
有关的相似度,
第六步,计算新区域
rt
r
t
与相邻区域的相似度
St
S
t
,并把
St
S
t
添加到S中,
rt
r
t
添加到区域集R中。
第七步,如果S不为空,返回第三步。
总的来说,Selective Search 算法不断合并相似的区域。
计算区域相似度
作者从颜色、纹理、大小和空间重叠度四个方面计算区域的相似度。
颜色相似度
作者尝试许多颜色空间,比如RGB,HSV等。作者使用
L1
L
1
norm 的每个颜色通道使用25个bin的颜色直方图
Ci={c1i,⋯,cni}
C
i
=
{
c
i
1
,
⋯
,
c
i
n
}
计算两个区域的颜色相似度
scolour(ri,rj)
s
colour
(
r
i
,
r
j
)
。其中颜色通道3个,
n=75
n
=
75
。
合并 ri r i 和 rj r j 后 rt r t 的直方图是
就是 Ci C i 和 Cj C j 的加权平均,这样可以避免重新计算 rt r t 的直方图,提升算法效率。
纹理相似度
作者使用SIFT-Like特征作为纹理。在每个颜色通道的8个方向计算方差
σ=1
σ
=
1
的高斯导数,每个颜色通道取10个bins的直方图,进行
L1
L
1
norm,这样得到
n=8×3×10
n
=
8
×
3
×
10
的向量
Ti={t1i,⋯,tni}
T
i
=
{
t
i
1
,
⋯
,
t
i
n
}
。纹理相似度
stexture(ri,rj)
s
texture
(
r
i
,
r
j
)
为:
新区域的纹理特征向量 tt t t 同样使用 ti t i 和 tj t j 加权平均。
大小相似度
大小相似度
ssize(ri,rj)
s
size
(
r
i
,
r
j
)
为:
其中 size(im) size ( i m ) 表示图片的大小。这个公式可以确保小的区域先合并。
空间重叠度
空间重叠度指区域
ri
r
i
和
rj
r
j
之间的交叠程度,重叠部分越多,这两个区域就越应该合并。空间重叠度
s(fill)(ri,rj)
s
(
f
i
l
l
)
(
r
i
,
r
j
)
为
其中 BBij B B i j 是 ri r i 和 rj r j 合并后的 bounding box。
区域相似度
最后结合上述4中相似度,得到区域相似度公式:
其中, ai∈{0,1} a i ∈ { 0 , 1 } ,决定是否使用对应的相似度。