Selective Search

SelectiveSearch是一种广泛应用于目标检测的区域提议算法。它通过层级分组算法和多样化策略来生成高质量的候选区域,具备快速计算、高召回率的特点。该文详细介绍了SelectiveSearch的工作原理及其在不同颜色空间下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

在目标检测学习系列的文章中,很多检测算法都会涉及到Selective Search的使用,比如R-CNN。这篇文章主要学习一下Selective Search的核心内容和简单使用。论文参考《Selective Search for Object Recognition

二、背景介绍

目标检测比图像分类复杂的很重要的一个因素是:一张图像中可能存在多个物体需要分别定位和分类。显然,在训练分类器之前,需要使用一些方法将图像划分需要小的区域,划分方法统称为Region Proposal Algorithms。一张图像中包含的信息非常丰富,图像中的物体有不同的形状、尺寸、颜色、纹理,而且物体间还有层次(hierarchical)关系。下图给出了四个例子,来说明目标检测的难度。

(a)中的场景表明图像中不同物体之间是有一定的层次关系。(b)中给出了两只猫,通过纹理来可以找出这两只猫,但是需要通过颜色来区分它们。(c)中变色龙和周边颜色接近,通过纹理来区分。(d)中的车辆很容易把车身和车轮看做一个整体,但它们两者之间在纹理和颜色方面差别都非常地大。

上图说明了在做Region Proposal时,不能通过单一的策略来区分不同的物体,需要充分考虑图像物体的多样性(diversity),除此之外,在图像中物体间的布局还有一定的层次关系。这个时候,论文的作者就中肯的评价了几种区域提议方法。

  • Exhaustive Search

刚开始人们做目标检测是,想到的是穷举法,遍历图像的每一个像素,导致搜索的范围很大,需要的计算量也很大,最后产生的提议区域也很多,后面作者提到了,即是改进的穷举法任然产生100000多个提议区域,这对后面的区域特征提取和分类器训练带来不小的压力,所以不合适使用复杂的特征提取算法和分类器,一般使用HOG+SVM。

  • Segmentation

作者通过引用文献阐述了一些使用分割算法做Region Proposal的内容。比如:通过生成多个前景/背景,通过一定标准预测前景分割区域是一个完整对象区域的可能性大小(预测一个可能性大小),根据这个可能性大小对分割进行排序,可以精确地描绘出图像中的物体。然后作者又说了使用分割方法太单一,没有多样性。

  • Other Sampling Strategies

作者又给出了一些其他的区域提议方法,这里不一一说了。

三、Selective Search

在总结一些区域提议方法的基础上,作者给出了自己的方法——Selective Search,这个方法主要有三个优势: 捕捉不同尺度(Capture All Scales)、多样化(Diversification)、快速计算(Fast to Compute)总结为:选择性搜索是用于目标检测的区域提议算法,它计算速度快,具有很高的召回率,基于颜色,纹理,大小和形状兼容计算相似区域的分层分组。Selective Search算法主要包含两个内容:Hierarchical Grouping Algorithm、Diversification Strategies。

  1. Hierarchical Grouping Algorithm

图像中区域特征比像素更具代表性,作者使用Felzenszwalb and Huttenlocher[1]的方法产生图像初始区域,使用贪心算法对区域进行迭代分组:

  1. 计算所有邻近区域之间的相似性;
  2. 两个最相似的区域被组合在一起;
  3. 计算合并区域和相邻区域的相似度;
  4. 重复2、3过程,直到整个图像变为一个地区。

在每次迭代中,形成更大的区域并将其添加到区域提议列表中。以自下而上的方式创建从较小的细分segments到较大细分segments的区域提案,如下图。

Hierarchical Grouping Algorithm的具体操作如下图:

简单的对算法的过程叙述一下:

输入:彩色图片(三通道)

输出:物体位置的可能结果L

  1. 使用 Felzenszwalb and Huttenlocher提出的方法得到初始分割区域R={r1,r2,…,rn};
  2. 初始化相似度集合S=∅;
  3. 计算两两相邻区域之间的相似度,将其添加到相似度集合S中;
  4. 从集合S中找出,相似度最大的两个区域 ri 和rj,将其合并成为一个区域 rt,从集合中删去原先与ri和rj相邻区域之间计算的相似度,计算rt与其相邻区域(与ri或rj相邻的区域)的相似度,将其结果加入到相似度集合S中。同时将新区域 rt 添加到区域集合R中;
  5. 获取每个区域的Bounding Boxes L,输出物体位置的可能结果L。

   2.Diversification Strategies

这个部分讲述作者提到的多样性的一些策略,使得抽样多样化,主要有下面三个不同方面:

(1)利用各种不同不变性的色彩空间;

(2)采用不同的相似性度量;

(3)通过改变起始区域。此部分比较简单,不详细介绍,作者对比了一些初始化区域的方法,发现方法[1]效果最好。

  •  Colour Spaces.

考虑到场景、光照条件的不同,作者提出使用八种不变性属性的各种颜色空间应用在Hierarchical Grouping Algorithm。如下表:

                                                           +/-表示部分不变性;1/3表示三个颜色通道中有一个是不变性。

  • Similarity Measures
  • 颜色相似度衡量

表示每一个区域用三通道的颜色直方图表示,每个颜色通道的25 bins的直方图,这样每个区域都可以得到一个75维的向量。使用L1-norm标准化后,用下式计算区域间的相似度。

合并区域的颜色直方图计算如下:

  •  纹理相似度衡量

论文采用SIFT-Like特征,具体操作:采用方差为1的高斯分布对每个颜色通道的8个不同方向做梯度统计,然后将统计结果(尺寸与区域大小一致)以bins=10计算直方图。直方图区间数为8*3*10=240。

 表示每一个区域的纹理直方图,有240维。

  • 尺度相似度衡量

为了保证区域合并操作的尺度较为均匀,使用如下公式。

size(im)是指区域中的尺寸(以像素为单位),使用尺寸相似度,主要是尽量让小的区域先合并。

  • 形状重合度衡量

为了衡量两个区域是否更加重合,合并后区域的Bounding Box越小,其重合度越高,公式如下。

  • 最终的相似度衡量:

 

 

最后,作者给出了自己的目标检测算法pipeline和在一些数据集上的结果对比。

其他资源

一些使用Selective Search做目标检测的demo

 Selective Search在opencv中的使用参考:https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/

参考资料

[1] Felzenszwalb P F, Huttenlocher D P. Efficient Graph-Based Image Segmentation[J]. International Journal of Computer Vision, 2004, 59(2):167-181.

[2] Uijlings, J. R R, Sande V D, et al. Selective Search for Object Recognition[J]. International Journal of Computer Vision, 2013, 104(2):154-171.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值