选择性搜索算法 (Selective Search)
发布网友
发布时间:2022-10-11 09:06
我来回答
共1个回答
热心网友
时间:2023-11-03 17:16
计算机视觉领域有几个基本的任务:
object detection 的基础是 object recognition,只不过要先将图片进行分割,对每个分割之后的子图区域 region (也称为 patch) 进行 object recognition.
由于事先并不知道物体在图片的哪个位置,为了避免漏检,我们应该对图片中尽量多的 region 进行搜索。理论上来说,可以有无穷多个 region。这里就需要一种 region proposal 的算法,以比较高效的方式提出图片划分 region 的方式,从而加速整个 object detection 的过程并且提高准确率。
本文将要介绍的 selective search 算法 ,是比较经典的,也是 R-CNN 中使用的 region proposal 算法。
参考文献:
为了避免蛮力搜索,selective search 算法首先需要一个基于像素的图像分割。这里用的是 Felzenszwalb and Huttenlocher 算法 (因为是当时速度最快的算法,而且是公开的),得到一个 oversegmented 的图像分割。例如:
这里之所以用 oversegmented 图像,是为了得到尽可能细分的区域,再以此为基础逐步合并,形成更大的区域。
image segmentation 可以用作 region proposal 的基础,每个分割的区域都可以看作一个潜在的 region,但是一个 object 往往包含了多个分割的区域,例如盛有咖啡的杯子,咖啡和杯子应该作为一个整体来看待。因此,还要根据某种相似性原则进行分割区域的合并,得到更大范围的 region。
Selective search 算法考虑了 4 种相似性度量,取值都在 [0,1] 之间,越大越相似。
最终的相似性度量是上述四个度量的组合:
其中 取 0 或 1.
总结起来,selective search 的算法步骤非常简单:
环境配置:
具体程序:
最后效果如下:
显示的 100 个 region 已经包含了我们感兴趣的待检测区域,说明了 selective search 算法的高效。