selective_search_py, 基于 python的对象识别选择性搜索实现

分享于 

6分钟阅读

GitHub

  繁體 雙語
Python-based implementation of the Selective Search for Object Recognition.
  • 源代码名称:selective_search_py
  • 源代码网址:http://www.github.com/belltailjp/selective_search_py
  • selective_search_py源代码文档
  • selective_search_py源代码下载
  • Git URL:
    git://www.github.com/belltailjp/selective_search_py.git
    Git Clone代码到本地:
    git clone http://www.github.com/belltailjp/selective_search_py
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/belltailjp/selective_search_py
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    概述

    这是选择性搜索 [1][2]的一个 python 实现。

    选择性搜索作为目标检测/识别管道的预处理。
    无论从哪个尺度和位置,它发现可能包含任何对象的区域,这使得探测器只能集中于这些'前景'区域。
    因此,与传统的穷举搜索算法相比,可以配置更高效的检测器,或者采用更丰富的特征表示和分类方法。

    有关该方法的详细信息,请参考原始文件。

    这里实现基于原始纸张的journal版本,并给出类似的参数变化。

    segmentation exampleselective search example

    要求
    • CMake (> = 2.8 )
    • GCC (> = 4.8.2 )
    • python (> = 3.4.3 )
      • 有关所需软件包,请参见 requirements.txt
    • 使用 python 支持构建的Boost (> = 1.58.0 )
    • Boost.NumPy

    此外,这只在 x64 Linux环境中测试。

    准备

    这个实现包含一些 C++ 代码,这些代码封装了基于图像分割的高效图像分割 [4],用于生成初始值。 它是一个 python MODULE,所以先构建它。

    % git clone https://github.com/belltailjp/selective_search_py.git
    % cd selective_search_py
    % wget http://cs.brown.edu/~pff/segment/segment.zip; unzip segment.zip; rm segment.zip
    % cmake .% make

    然后你将在目录中看到一个共享对象 segment.so。 将它保留在主 python 脚本的同一目录中,或者 LD_LIBRARY_PATH 中描述的referrable位置。

    演示

    交互显示可能包含对象的区域

    showcandidate 演示允许你交互式地查看选择性搜索的结果。

    %./demo_showcandidates.py image.jpg

    showcandidate GUI example

    你可以选择屏幕左侧的任意参数组合。 然后单击"跑步"按钮并等待一段时间。 你将看到右侧生成的区域。

    通过改变底部的slider,你可以增加/减少候选区域的数量。 slider 向左移动时,显示的区域就越多:

    showcandidate GUI example more region

    显示图像分割层次

    showhierarchy 演示了迭代中每个步骤的可视彩色区域图像。

    %./demo_showhierarchy.py image.jpg --k 500 --feature color texture --color rgb

    image segmentation hierarchy visualization

    如果要查看与输入图像组合的标签,请指定特定的alpha值。

    %./demo_showhierarchy.py image.jpg --k 500 --feature color texture --color rgb --alpha 0.6

    image heerarchy with original image

    实现

    概述

    文中详细介绍了原论文学报版的算法。 对于多样化策略,这里实现支持将以下参数作为原始文件进行更改。

    • 颜色空间
      • RGB,实验室,rgI,HSV,标准化的RGB颜色,和色调。
      • C 颜色不变性 [5] 目前不支持。
    • 相似度量
      • 纹理,颜色,填充和大小
    • 初始分割参数
      • 作为初始的( 细粒度) 分割,这个实现使用了 [4]。 k 是该方法的参数之一。

    你可以为每个策略提供任何组合。

    如何集成到你的代码中

    如果只想将这里实现用作黑盒,则只需要 selective_search MODULE 就可以导入。

    from selective_search import*img = skimage.io.imread('image.png')
    regions = selective_search(img)for v, (i0, j0, i1, j1) in regions:
     ...

    然后你可以得到一个按升序排序的列表区域。 具有较大分数( 列表的后元素)的区域被视为'非预期'区域,因这里它们可以根据需要被筛选出来。

    要更改参数,只需列出每个变体策略的值列表。 请注意,它们必须作为列表给出。 selective_search 返回生成区域的单个列表,其中包含有选择搜索结果的每个组合。 这里结果也将排序。

    regions = selective_search(img, 
     color_spaces= ['rgb', 'hsv'], #color space. should be lower case.ks= [50, 150, 300], #k.feature_masks= [(0, 0, 1, 1)]) #indicates whether S/C/T/F similarity is used, respectively.

    测试

    这里实现包含使用PyTest的自动单元测试。

    要执行完整测试,请键入:

    % py.test
    许可证

    这个实现是在MIT许可下公开提供的。 有关详细信息,请参阅 LICENSE.txt。

    然而,对于选择性搜索方法本身,原始论文的作者至今还没有提到任何内容。 如果你有任何 concens,请询问原始作者。

    引用

    [1] J。 R。R。Uijlings等,选择性搜索对象识别,IJCV,2013
    [2],Segmentation,Segmentation,Segmentation,Segmentation,Segmentation,Segmentation,Segmentation,Segmentation,Segmentation,Segmentation。
    [3] R。 用于精确对象检测和语义分割的丰富特征层次的Girshick等,CVPR,2014
    [4] P。 基于Felzenszwalb等的高效图像分割,IJCV,2004.
    [5] J。M。Geusebroek等,颜色不变性,TPAMI,2001


    相关文章