1. 介绍
如果想在一张图像上找到我们想要的目标(比如猫), 处理的流程一般分成两步: 第一步: 先找出可能的候选regions(有很多方法); 第二步: 从这些regions里面找出来一个region, 这个region把目标包含在内(提取特征, 然后分类). 本文所提出的selective search(下面简称SS)方法就是在第一步上(找到最可能的候选regions)上下功夫。常用的Region Propose有Selective Search和Edge Boxes。
由于在图像中目标的位置和尺度的变化性, 一般的做法就是使用穷举搜索(Exhaustive Search), 选择一个κ×ε大小的矩阵框在整张图像上进行扫描(保证不会遗漏当前尺度下的目标); 然后改变矩形框的大小(保证不同尺度的目标都可以检测到), 继续在整张图像上进行扫描. 这种方法最大的缺点就是太耗时, 于是现在研究者提出了很多其他的方法, 本文的SS就是这其中的一种。
论文作者用上图说明了目标识别的复杂性和难度:如果要在(a)中识别出桌子,桌子上面同时放了很多的餐具,不通的物品之间具有一定的层次关系。我们可以利用纹理信息来识别出图(b)中的两个猫, 可以通过两只猫的颜色的不同将它们区分开来. (c)中变色龙的颜色和周围环境的颜色很相近, 通过颜色找到它并不容易, 我们需要借助纹理信息. 图(d)中的车轮和车身组成了一个不可分割的整体, 但是两者的纹理和颜色差距比较大. 因此, 如果想找到目标, 我们需要考虑图像中目标的多样性, 我们需要利用很多各式各样的策略(It's necessary to find a varity of diverse strategies.)(光靠纹理和颜色也是不行的)来解决这个问题.
2. Selective Search
2.1 Selective Search by Hierarchical Grouping
![](http://pic.w2bc.com/upload/201610/09/201610091818102983.png)
3.2 Diversification Strategies, DS(多样化策略)
为什么要有DS? 前面我们已经讲过, 图像千差万别, 目标形态各异, 要综合很多种不同的特征, 不同的信息才能够取得相对好的效果. 现在想想本文的SS模型有哪些地方是可以多样化的? 这里主要列举了3个方面(从头到尾):
可以使用不同的区域初始化方法(因为SS算法要对初始区域进行层次合并, 因此初始区域的好坏显得比较重要);
- 对输入图像可以采用它不同的颜色空间,提取不同的不变属性(RGB表达的图像未必是最好的,还可以利用它其他色彩空间信息(不同的颜色空间对外界的敏感度不同)).
- 衡量两个区域之间相似度的方法(很难说哪种相似度衡量方法是最好的).论文作者定义了4中互补的可以快速计算的相似度测量方法,量度范围都在[0,1]
1. 颜色相似度(color similarity): scolor(ri,rj)
方法: 对于每个区域, 对其每个通道(共3通道)分别计算25bins的直方图(被归一化了), 这样, 每个区域就有25x3=75维的向量Ci={ci1,...,cin}; 两个区域ri换rj之间的颜色相似度可以通过下面的公式计算(找到75维向量对应元素的最小值,然后加这些最小值加在一起)。
区域合并的时候, 比如ri和rj合并称为了rt, 新区域rt的颜色直方图可以用下式很方便地计算
2. 纹理相似度(texture similarity): stexture(ri,rj)
方法: 使用σ=1的高斯函数计算每个通道(共3通道)每个方向(共8个方向)上的高斯微分, 这样共可以得到24个微分图, 每个图上计算10bins的直方图(也归一化了), 这样每个区域可以得到一个维度为240的纹理直方图特征向量Ti={ti1,...,tin}. 两个区域ri换rj之间的纹理相似度的计算和颜色相似度相同:
3. 尺寸相似度(size similarity): ssize(ri,rj)
方法: 这个相似度的出发点是想让小的区域尽早地进行合并,这样可以使得没有合并的区域具有相似的大小. 两个区域ri换rj之间的尺寸相似度的计算如下所示:
这里, size(ri)的表示区域ri内像素的总数目, size(im)表示整个图像的像素总数目, 下同.
4. 填充相似度(fill similarity): fill(ri,rj)
方法: 这个主要是为了衡量两个区域的吻合程度, 两个区域合并后的外包Bounding Box越小, 就说明他们的吻合度越高. 如果ri包含在了rj里面, 逻辑上应该先将它们进行合并(为了避免漏洞), 另一方面, 如果ri和rj很难接触到, 如果将两者合并, 形成的区域可能会很奇怪. 为了计算的快速性, 这里仅用到了区域尺寸(包含像素数目)和包含这个区域的bounding box来计算. 将BBij定义为区域ri和rj合并后的Bounding Box. 公式如下:
本文最后的相似度定义为以上4种相似度的加权和:
加权值a的范围在[0-1]之间.
构造训练集:
初始的正样本是标记好的目标区域(图中绿色高亮覆盖区域), 我们使用Selective Search生成很多的目标locations, 然后从中选取与与真实标记样本重合20-50%的区域作为负样本. 为了避免近似重复的负样本, 如果两个负样本之间的重合度大于70%, 则只取其中一个. 为了保证每一类的初始负样本数目小于20000, 我们对每一类(如car, cat, dog,person)去除掉一般的样本.
测试过程:
测试的时候,由selective search产生的所有locations都要送到模型里面去预测, 分类器对每个window给出一个分数, 如果一个window和一个比它分数高的window有大于30%的重合, 那么把这个window去除.