Selective Search(选择性搜索)算法
- 在目标检测中,这个算法,可以启发式地搜索出可能包含物体的区域,而不用随机盲目地找很多个方框。
- 最简单的目标检测
- 我们的思路是先搞出一些小的方框(不一定是方块,但一定是连在一起的区域),然后不断的合并
一、图像分割
- 为了方便合并,我们先处理出一些小的区域
- 我们这里用
felzenszwalb
的图像分割算法
- 简单的来说这个算法就是对图像做一个简单的聚类,什么样的聚类又快又简单呢?----最小生成树!
-
skimage.segmentation.felzenszwalb
是python
对应的API
二、计算相似度
- 计算相似度,把相似度高且邻近的块合并
- 为了保证多样性,这个算法涉及多种相似度,然后把各个相似度直接加起来(当然是带加权的)
- 多样性还考虑了多种样色空间,如RGB,HSV,灰度等
颜色相似度
- 为了让各个大小的区域都能比较,我们求出每个区域每个颜色通道的25 bins直方图,这样每个区域就能得到一个75维的向量
- 向量要归一化,就是和为1
- 相似度公式为
- 这样两个区域在很相似的情况下得到的最大值也只有1
- 两个区域合并时公式为
纹理相似度
- 计算纹理梯度,然后做成直方图,相似度和合并公式和上面相同
- 计算纹理梯度的方法:
- SIFT特征
- 论文中的方法
- LBP
- 较简单的方法
- 对于每个像素,比较一周的像素(可设定半径值),若大则为1,小则为0,最后合在一起为一个为一个二进制数,再转成十进制数即可
优先合并小区域
- 毕竟启发式合并
- 相似度公式
-
size(im)
是总图像大小
区域距离合适度
- 假设有1,2,3区域依次相隔,但是1和3很相似而2不相似,这样就会形成断崖
- 相似度公式
-
BB_{ij}
是区域i和j合并之后的区域
总相似度
- 最后几个相似度带权合并就行
三、合并
- 统计每个区域的有交集区域,并统计相似度
- 然后每次把相似度最高的两个区域合并,直到没有区域相交