【论文】Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.(pdf)
RCNN 进行物体检测可以大致为三个步骤,
- 获取输入图像,提取 2000 个类别独立的候选区域
- 对每个区域利用 CNN 抽取一个固定长度的特征向量
- 再对每个区域利用 SVM 进行目标分类
候选区域
Region Proposal 是一种传统的区域提取方法,基于启发式的区域提取方法,采用的是 Selective Search 算法
Selective Search 算法的大致流程如下:
- 将图像分割为小区域
- 查看现在小区域,合并可能性最高的两个区域,重复知道整张图片合成一个区域位置。我们通常优先合并以下区域:① 颜色直方图相近的;② 梯度直方图相近的;③ 合并后总面积小的;④ 合并后总面积在其 bbox 中所占比例大的。在合并时需要保证合并操作的尺度较为均匀,避免一个大区域陆续吃掉其他小区域,保证合并后形状规则
- 输出所有曾经存在过的区域,即所谓候选区域
然后我们将裁剪出来的小图片调整为 227×227227\times227227×227 的大小,方便输入 CNN 中。这里论文中考虑了两种处理方法:
- 各向异性缩放,也就是不管是否发生就去,直接将截取出来的小图片缩放到 227×227227\times227227×227,如下图 (D)
- 各向同性缩放,有两种方法
①先扩充后裁剪:直接在原始图片中,把 bounding box 的边界扩展为正方形,然后进行裁剪,如下图 (B)
②先裁剪后扩充:先把 bouding box 图片裁剪出来,然后用固定的背景颜色填充成正方形图片,如下图 ?
另外,作者在上面的缩放中还添加了 padding 处理,上图每个示例的第一行是 padding = 0 的结果,第二行是 padding = 16 的结果。最终,作者发现采样各向异性缩放、padding = 16 的精度最高
CNN 提取特征
作者选用了 AlexNet,直接套用其训练好的参数作为初始化参数,然后再经过 fine-tuning 训练,最后得到一个 4096 维的特征向量。这里还需要做一点改变,我们将预训练 CNN 模型的最优一层替换掉,假如要检测的物体有 NNN 类,我们就让最后一层替换为 N+1N+1N+1 个神经元,这一层直接采用随机初始化参数的方式
fine-tuning 训练很简单,就是把前面 Selective Search 搜索出来的候选框当做输入送入 CNN 中。但是,这里有一个正负样本的区分:我们计算 Selective Search 候选框与人工标注矩形框的 IoU,如果 IoU > 0.5,我们把这个候选框标注成物体类别(正样本),否则我们就把它当做背景类别(负样本)
分类与边界回归
这一步要做两件事情,
- 对前一步的输出向量进行分类
- 通过边界回归框回归获得精确的区域信息
分类
对于分类,我们使用 NNN 个 SVM,每一个 SVM 做一个二分类。于是,我们就很容易判断一个方框内是否包含某一物体了。但是,这里有个问题,要是这个方框只包含了这个物体的一部分呢?
RCNN 还是采用了 IoU 作为阈值,如果一个候选框和人工标注矩形框的 IoU < 0.3,那么就将其视为负样本
为什么这里的 IoU 阈值和上面 fine-tunning 的 IoU 阈值不同?
主要考虑 fine-tuning 过拟合的问题,比较大的阈值能够扩大正样本的数量;而 SVM 用于最终分类,越难分的数据越有利于 SVM 的训练,所有对样本的定义会更家严格
那么,这里为什么使用 SVM 而不是原来 AlexNet 中的 softmax 进行分类呢?
SVM 和 CNN 训练过程对政府样本的定义方式不同,导致 softmax 输出的精度会比 SVM 低一些。例如,上面我们将 IoU > 0.5 的样本都标记为了 CNN fine-tuning 时的正样本,这对 bounding box 的位置限制过于宽松。而 SVM 适用于少样本训练,只有当 bounding box 将整个物体包含进去了,我们才会输出正样本的结果
位置精修
目标检测问题的衡量标准是重叠面积,许多看似准确的检测结果,往往因为候选框不够准确,重叠面积很小。故需要一个位置精修步骤:对每一类目标,使用一个线性回归器进行精修,输入为 CNN 最后一层的特征,输出为 x,yx,yx,y 方向上的缩放和平移。这里判定候选框和人工标注矩形框的 IoU > 0.6 才算做正样本
在测试阶段,我们还会涉及一个非极大值抑制(NMS)抑制那些冗余的候选框
NMS 流程如下:
① 将所有框的得分排序,选中最高分及其对应的框
② 遍历其余的框,如果和当前最高分框的重叠面积(IoU)大于一定阈值,我们就将框删除
③ 从未处理的框中继续选一个得分最高的,重复上述过程