目标检测之选择性搜索-Selective Search
目标检测之选择性搜索-Selective Search
selective search的策略是,既然是不知道尺度是怎样的,那我们就尽可能遍历所有的尺度好了,但是不同于暴力穷举,我们可以先利用基于图的图像分割的方法得到小尺度的区域,然后一次次合并得到大的尺寸就好了,这样也符合人类的视觉认知。既然特征很多,那就把我们知道的特征都用上,但是同时也要照顾下计算复杂度,不然和穷举法也没啥区别了。最后还要做的是能够对每个区域进行排序,这样你想要多少个候选我就产生多少个。
操作步骤:
从一张图片用图像分割算法生成2k至3k个候选区:
- 使用一种过分割手段,将图片分割成小区域。
- 查看现有小区域,合并可能性最高的两个区域,重复直到整张图片合并成一个区域位置。
- 输出所有存在过的区域,所谓候选区域。
合并规则
- 颜色(颜色直方图)相近的
- 纹理(纹理直方图)相近的
- 合并后总面积小的
- 合并后,总面积在其BBOX中所占比例大的
选择性搜索算法用于为物体检测算法提供候选区域,它速度快,召回率高。
选择性搜索算法需要先使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域,然后使用相似度计算方法合并一些小的区域。
下列两张图分别是原图和原始分割图:
我们不能使用原始分割图的区域作为候选区域,原因如下:
- 大部分物体在原始分割图里都被分为多个区域
- 原始分割图无法体现物体之间的遮挡和包含。
如果我们试图通过进一步合并相邻的区域来解决第一个问题,我们最终会得到一个包含两个对象的分段区域。
我们不要需要完美的的分割区域,我们只想要和实际物体高度重合的区域就行了。
选择性搜索算法使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域作为输入,通过下面的步骤进行合并:
- 首先将所有分割区域的外框加到候选区域列表中
- 基于相似度合并一些区域
- 将合并后的分割区域作为一个整体,跳到步骤1
通过不停的迭代,候选区域列表中的区域越来越大。可以说,我们通过自底向上的方法创建了越来越大的候选区域。表示效果如下:
相似度
选择性搜索算法如何计算两个区域的像素度的呢?
主要是通过以下四个方面:颜色、纹理、大小和形状交叠
最终的相似度是这四个值取不同的权重相加
效果
opencv实现了选择性搜索算法,可以给出上千个根据有物体的可能性降序排列的候选区域。
下图是画出了前面200(250个候选区域的效果。一般来说。1000)1200个候选区域基本能胜任物体检测的任务了。
