zoukankan      html  css  js  c++  java
  • 选择性搜索(SS)算法

    一、目标检测和目标识别

    目标识别(object recognition)是要指明一张图像中包含哪类目标。输入是图像,输出是图像中的目标属于的类别(class probability)。目标检测是识别出图像中的类别外,还要框出目标的具体位置(bounding boxes).

    在目标检测时,为定位到目标的具体位置,通常将图像分成许多子块(subregions/patchs),然后把子块作为输入,送入到目标识别模型中。分子块的最直接的方法是滑动窗口法(sliding window approach),滑动窗口的方法是按子块的大小在整幅图像上穷举所有的子图像块,算法数据量非常大。和滑动窗口相对的是另一类基于区域(region proposal)的方法。候选区域算法用分割不同区域的办法来识别潜在的物体。在分割的时候,我们要合并那些在某些方面(如颜色、纹理)类似的小区域。相比滑窗法在不同位置和大小的穷举,候选区域算法将像素分配到少数的分割区域中。所以最终候选区域算法产生的数量比滑窗法少的多,从而大大减少运行物体识别算法的次数。同时候选区域算法所选定的范围天然兼顾了不同的大小和长宽比。

    二、selective search算法

    1、区域合并算法流程

     总体思路:假设现在图像上有n个预分割的区域,表示为R={R1, R2, ..., Rn}, 计算每个region与它相邻region(注意是相邻的区域)的相似度,这样会得到一个n*n的相似度矩阵(同一个区域之间和一个区域与不相邻区域之间的相似度可设为NaN),从矩阵中找出最大相似度值对应的两个区域,将这两个区域合二为一,这时候图像上还剩下n-1个区域; 重复上面的过程(只需要计算新的区域与它相邻区域的新相似度,其他的不用重复计算),重复一次,区域的总数目就少1,知道最后所有的区域都合并称为了同一个区域(即此过程进行了n-1次,区域总数目最后变成了1).算法的流程图如下图所示:

     

     通过不断的迭代,区域合并效果如下图所示:

    2、相似度计算

    原文"3.2 Diversification Strategies"这一节提供了调参的一些思路,分析了不同颜色空间各通道的特点,这有利于我们在面对自己的实际任务时明白要尝试的方向.还有就是给出了SS算法里面相似度度量的几种方法,比如颜色相似度,纹理相似度,尺寸相似度,填充相似度,作者肯定没有对所有的相似度进行穷举,也没有说哪种相似度适合哪种任务,我觉得更重要的还是一种思路的借鉴,提供了一种思路和思考方向,我觉得这篇论文的价值就达到了.

    选择性搜索怎么计算两个区域之间的相似度呢,主要是通过区域之间在颜色/纹理/大小和形状交叠四个方面的加权和进行衡量的。
          

    2.1、颜色相似度(color similarity)
    将色彩空间转为HSV,每个通道下以bins=25计算直方图,这样每个区域的颜色直方图有25*3=75个区间。 对直方图除以区域尺寸做归一化后使用下式计算相似度:

    2.2、纹理相似度(texture similarity)

    论文采用方差为1的高斯分布在8个方向做梯度统计,然后将统计结果(尺寸与区域大小一致)以bins=10计算直方图。直方图区间数为8*3*10=240(使用RGB色彩空间)。

    其中,是直方图中第个bin的值。

    2.3、尺寸相似度(size similarity)

    保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域。

    例:设有区域a-b-c-d-e-f-g-h。较好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。 不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。

    2.4、交叠相似度(shape compatibility measure)


    2.5、最终的相似度



    三、SS的典型应用

     

     这就是典型的一个应用了,我们得到了区域的很多建议,提取区域的空间金字塔的多样特征,组合成一个特征向量,然后训练SVM就可以分类出哪个区域是真正我们想要的目标啦。当然也可以用以目标检测,我们接下来要说的RCNN就是这样干的。

  • 相关阅读:
    git常用命令
    Laravel框架数据库CURD操作、连贯操作总结
    Laravel 5 系列入门教程(四)【最适合中国人的 Laravel 教程】【完结】
    Laravel 5 系列入门教程(三)【最适合中国人的 Laravel 教程】
    Laravel 5 系列入门教程(二)【最适合中国人的 Laravel 教程】
    Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】
    linux环境下安装nginx步骤
    关于C++中的虚拟继承的一些总结
    C++中拷贝构造函数
    C++之类与对象(3)
  • 原文地址:https://www.cnblogs.com/abella/p/10430970.html
Copyright © 2011-2022 走看看