实际上,更实用的方法是候选区域(Region Proposals )方法来获取感兴趣的区域(ROI)。选择性搜索(Selective Search )就是一种典型的候选区域方法
物体检测之选择性搜索(Selective Search)
选择性搜索算法用于为物体检测算法提供候选区域,它速度快,召回率高。
选择性搜索算法需要先使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域,然后使用相似度计算方法合并一些小的区域。
下列两张图分别是原图和原始分割图:
我们不能使用原始分割图的区域作为候选区域,原因如下:
1.大部分物体在原始分割图里都被分成多个区域.
2.原始分割图无法体现物体之间的遮挡和包含。
如果我们试图通过进一步合并相邻的区域来解决第一个问题,我们最终会得到一个包含两个对象的分段区域。
我们不要需要完美的的分割区域,我们只想要和实际物体高度重合的区域就行了。
选择性搜索算法使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域作为输入,通过下面的步骤进行合并:
1.首先将所有分隔区域的外框加到候选区域列表中。
2.基于相似度合并一些区域。
3.将合并的分隔区域作为一个整体,跳到步骤1。
通过不停的迭代,候选区域列表中的区域越来越大。可以说,我们通过自底向下的方法创建了越来越大的候选区域。表示效果如下:
相似度
选择性搜索算法如何计算两个区域的像素度的呢?
主要是通过以下四个方面:颜色、纹理、大小和形状交叠
最终的相似度是这四个值取不同的权重相加。
利用候选区域与CNN结合做目标定位
借鉴了滑动窗口思想,R-CNN采用对区域识别的文案
具体是:
1.给定一张输入图片,从图片中提取2000个类别独立的候选区域。
2.对于每个区域利用CNN抽取一个固定长度的特征向量。
3.在对每一个区域利用SVM镜像目标分类。
特征抽取
R-CNN抽取了一个4096维的特征向量,采用的是Alexnet。
需要注意的是Alextnet的输入图像大小是227*227
而通过Selective Search 产生的候选区域大小不一,为了与Alexnet兼容,R-CNN采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换成227*227的尺寸。
有一个细节,在对区域进行变换的时候,首先对这些区域进行膨胀处理,再其box周围附加了p个像素,也就是人为添加了边框,p=16。
测试阶段的目标检测
在测试阶段,R-CNN 在每张图片上抽取近 2000 个候选区域。
然后将每个候选区域进行尺寸的修整变换,送进神经网络以读取特征,然后用 SVM 进行类别的识别,并产生分数。
候选区域有 2000 个,所以很多会进行重叠。
针对每个类,通过计算 IoU 指标,采取非极大性抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。
训练
R-CNN采取迁移学习
提取在 ILSVRC 2012 的模型和权重,然后在 VOC 上进行 fine-tune。
需要注意的是,这里ImageNet上训练的是模型识别物体类型的能力,而不是预测bbox位置的能力。
ImageNet 的训练当中需要预测 1000 个类别,而 R-CNN 在 VOC 上进行迁移学习时,神经网络只需要识别 21 个类别。这是 VOC 规定的 20 个类别加上背景这个类别。
R-CNN将候选区域与GroundTrue中的box标签相比较,如果IOU >0.5,说明两个对象重叠的位置比较多,于是就可以认为这个候选区域是positive,否则就是Negetive。
训练策略是:采用 SGD 训练,初始学习率为 0.001,mini-batch 大小为 128。
对象识别相关
通常对待一个二值化的分类器,它的结果只要 2 中,Positive 和 Negetive。
比如,有一个汽车分类器,它可以轻松地确认,一个方框里面包含了一辆汽车,那么它肯定就是 Positive。
也可以很清楚地确认,如果一个背景方框中没有包含汽车,那么它就是 Negetive。
但是,比较难确认的是,如果一个方框,只有一部分与汽车重叠,那么如何标注这个方框呢?
R-CNN 采用的是 IoU 的阈值,这个 threshold 取 0.3,如果一个区域与 Ground tureth 的 IoU 值低于设定的阈值,那么可以讲它看成是 Negetive.
IoU 的 threshold 它不是作者胡乱取值的,而是来自 {0,0.1,0.2,0.3,0.4,0.5} 的数值组合的。
而且,这个数值至关重要,如果 threshold 取值为 0.5,mAP 指标直接下降 5 个点,如果取值为 0,mAP 下降 4 个点。
一旦特征抽取成功,R-CNN 会用 SVM 去识别每个区域的类别,但这需要优化。
因为训练的数据太大,不可能一下子填充到电脑内存当中,R-CNN 作者采取了一种叫做 Hard negetive mining 的手段。
bbox回归
bbox 的值其实就是物体方框的位置,预测它就是回归为题,而不是分类问题。
受DPM的启发,作者训练了一个线性的回归模型,这个模型能够针对候选区域的pool5 数据预测一个新的box 位置。
回顾
1.R-CNN采用AlexNet
2.R-CNN采用Selective Search 技术生成Region Proposal
3.R-CNN 在 ImageNet 上先进行预训练,然后利用成熟的权重参数在 PASCAL VOC 数据集上进行 fine-tune
4.R-CNN 用 CNN 抽取特征,然后用一系列的的 SVM 做类别预测。
5.R-CNN 的 bbox 位置回归基于 DPM 的灵感,自己训练了一个线性回归模型。