0 - 背景
在目标检测任务中,我们希望输入一副图像,输出目标所在的位置以及目标的类别。最常用的算法是滑动窗口方法,但滑动窗口其实相当于穷举图像中的所有子图像,其效率低且精度也受限。该论文提出一种新的生成目标检测框的方法selective search。
1 - 算法流程
- step 0:生成区域集R
- step 1:计算区域集R中每个相邻区域的相似度S
- step 2:找出最相似的两个区域,将其合并成新区域添加到R中
- step 3:从S中移除所有与step 2中相关的区域
- step 4:计算新集与所有子集的相似度
- step 5:跳转到step 2,直到S集为空
1.1 - 相似度计算
1.1.1 - 颜色相似度(colour similarity)
将颜色空间转换成HSV,每个通道下以bins=25计算直方图,这样每个区域的颜色直方图有$25 \times 3=75$个区间。对直方图除以区域尺度做归一化后采用下式计算相似度:
$$s_{colour}(r_i,r_j)=\sum_{k=1}^{n}min(c_i^k,c_j^k)$$
(注:我的理解是,对于波峰波谷出现在相同区间,也即是直方图有相似趋势的两个区域相似度高,否则低)
1.1.2 - 纹理相似度(texture similarity)
采用方差为1的高斯分布在8个方向做梯度统计,然后将统计结果(尺寸与区域大小一致)以bins=10计算直方图,直方图区间数为$8 \times 3 \times 10=240$(使用RGB颜色区间):
$$s_{texture}(r_i,r_j)=\sum_{k=1}^{n}min(t_i^k,t_j^k)$$
1.1.3 - 尺度相似度(size similarity)
保证合并操作较为均匀,避免一个大区域连续吞并其他小区域。举个例子,假设有区域a/b/c/d/e/f/g/h,理想的合并方式为ab/cd/ef/gh→abcd/efgh→abcdefgh,而不希望出现的合并方式为ab/c/d/e/f/g/h→abcd/e/f/g/h→abcdef/gh→abcdefgh。尺度相似度计算公式如下:
$$s_{size}(r_i,r_j)=1-\frac{size(r_i)+size(r_j)}{size(im)}$$
1.1.4 - 交叠相似度(shape compatibility measure)
$$s_{fill}(r_i,r_j)=1-\frac{size(BB_{ij})-size(r_i)-size(r_j)}{size(im)}$$
1.1.5 - 最终相似度
$$s(r_i,r_j)=a_1s_{colour}(r_i,r_j)+a_2s_{texture}(r_i,r_j)+a_3s_{size}(r_i,r_j)+a_4s_{fill}(r_i,r_j)$$
2 - 实现
3 - 参考资料
https://blog.csdn.net/guoyunfei20/article/details/78723646
https://github.com/AlpacaDB/selectivesearch
https://github.com/CZiFan/SelectiveSearch
原文地址:https://www.cnblogs.com/CZiFan/p/9901729.html