Selective Search
在R-CNN学习的过程中,首先使用到的技巧就是Selective Search
选择性搜索。它的目标是减小滑动窗或者穷举法带来的冗余候选区域,从而减小计算量。
本文参考blog:https://www.cnblogs.com/zyly/p/9259392.html
选择性搜索主要集中解决了以下几个问题:
- 事先并不知道图片内物体的尺寸,如何确定不同大小比例的候选框;
- 对于图像中存在的特征,如何利用起来来尽可能多产生有用的候选框来减少冗余区域。
1.基于图的图像分割
Selective Search的采用基于图的图像分割的方法得到小尺度的区域,然后根据相似程度通过合并得到大的尺寸。这样由小到大的过程中,通过利用图片的特征来进行合并,从而产生一系列大小不一的框。
2.多样化图像特征
由于很难使用颜色、纹理等单一特征对图片进行识别,因此在由小到大进行区域合并的过程中,使用了多种图像特征。其包括:
- 多种颜色空间,考虑RGB、灰度、HSV及其变种等
- 多种相似度度量标准,既考虑颜色相似度,又考虑纹理、大小、重叠情况等。
- 通过改变阈值初始化原始区域,阈值越大,分割的区域越少。
根据这些特征,对于不同的区域进行相似度计算。相似度为四种相似度的和:
- 颜色相似度
- 纹理相似度
- 优先合并小的区域
- 区域的合适距离
3.区域的合并
合并时采用贪心策略,计算每两个相邻的区域的相似度,每次合并最相似的两块,知道最后剩下一块完整的图片。
输入: 一张图片
输出:候选的目标位置集合L
算法:
1: 利用切分方法得到候选的区域集合R = {r1,r2,…,rn}
2: 初始化相似集合S = ϕ
3: for each 遍历邻居区域对(ri,rj) do
4: 计算相似度s(ri,rj)
5: S = S ∪ s(ri,rj)
6: while S not=ϕ do
7: 从S中得到最大的相似度s(ri,rj)=max(S)
8: 合并对应的区域rt = ri ∪ rj
9: 移除ri对应的所有相似度:S = S\s(ri,r*)
10: 移除rj对应的所有相似度:S = S\s(r*,rj)
11: 计算rt对应的相似度集合St
12: S = S ∪ St
13: R = R ∪ rt
14: L = R中所有区域对应的边框
4.源码
直接从github上下载安装就可以,不再赘述。