Processing math: 100%
0%

Selective Search(选择性搜索)算法

Selective Search(选择性搜索)算法

  • 在目标检测中,这个算法,可以启发式地搜索出可能包含物体的区域,而不用随机盲目地找很多个方框。

    • 最简单的目标检测
  • 我们的思路是先搞出一些小的方框(不一定是方块,但一定是连在一起的区域),然后不断的合并

一、图像分割

  • 为了方便合并,我们先处理出一些小的区域
  • 我们这里用felzenszwalb的图像分割算法
    • 简单的来说这个算法就是对图像做一个简单的聚类,什么样的聚类又快又简单呢?—-最小生成树!
    • skimage.segmentation.felzenszwalbpython对应的API

二、计算相似度

  • 计算相似度,把相似度高且邻近的块合并
  • 为了保证多样性,这个算法涉及多种相似度,然后把各个相似度直接加起来(当然是带加权的)
    • 多样性还考虑了多种样色空间,如RGB,HSV,灰度等

颜色相似度

  • 为了让各个大小的区域都能比较,我们求出每个区域每个颜色通道的25 bins直方图,这样每个区域就能得到一个75维的向量[c1i,,cni]

    • 直方图要归一化,就是和为1
  • 相似度公式为

    • Scolor(ri,rj)=nk=1min(cki,cji)

    • 这样两个区域在很相似的情况下得到的最大值也只有3

  • 两个区域合并时公式为

    • $$
      C_{new}=\frac{size(r_i)C_i+size(r_j)C_j}{size(r_i)+size(r_j)}
      $$

纹理相似度

  • 计算纹理梯度,然后做成直方图,相似度和合并公式和上面相同
  • 计算纹理梯度的方法:
    • SIFT特征
      • 论文中的方法
    • LBP
      • 较简单的方法
      • 对于每个像素,比较一周的像素(可设定半径值),若大则为1,小则为0,最后合在一起为一个为一个二进制数,再转成十进制数即可

优先合并小区域

  • 毕竟启发式合并

  • 相似度公式

    • Ssize(ri,rJ)=1size(ri)+size(rj)size(im)

    • size(im)是总图像大小

区域距离合适度

  • 假设有1,2,3区域依次相隔,但是1和3很相似而2不相似,这样就会形成断崖

  • 相似度公式

    • Sfill(ri,rj)=1size(BBij)size(ri)size(rj)size(im)

      • BB_{ij}是区域i和j合并之后的区域

总相似度

  • 最后几个相似度带权合并就行

三、合并

  • 统计每个区域的有交集区域,并统计相似度
  • 然后每次把相似度最高的两个区域合并,直到没有区域相交