RCNN 算法可以看成是将 CNN 引入目标检测领域的开山之作,其过程还是比较,四个步骤
- 候选区域生成: 一张图像生成1K~2K个候选区域 (采用 Selective Search 方法)
- 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
- 类别判断: 特征送入每一类的 SVM 分类器,判别是否属于该类
- 位置精修: 使用回归器精细修正候选框位置
1. 区域候选框(Region Proposal)提取
RCNN 采用选择性搜索(Selective Search)方法生成打开 2K 个区域候选框,大概操作流程如下:
-
输入一张图片作为输入
-
生成最初的小分割图,将图片分成多个区域
-
基于颜色、结构、尺寸、形状,将相似的区域合并成更大的区域
最后,生成最终的目标物体位置(Region of Interest),大概 2K 个候选区域。然后对这些区域进行 Warp 裁剪,使之编程适合 CNN 处理的大小,即 $227\times 227$。
2. 特征提取
使用已经训练好的 CNN 模型,如 AlexNet 或者 VGG 网络。对于数据,可以利用真实的标注框坐标作为基准,给上一步得到的 2K 个区域候选框打上对应的标签,然后利用 CNN 网络提取特征。
3. 分类判断
每个提议区域的特征连同其标注的类别作为一个样本,训练多个支持向量机对目标分类。其中每个支持向量机用来判断样本是否属于某一个类别。
4. 位置精修
分别用 20 个回归器对上述 20 个类别中剩余的区域候选框进行回归操作,最终得到使得每个类别的修正后的得分最高的 bounding box。
5. 总结
优点:
缺点:
- R-CNN的主要性能瓶颈在于需要对每个提议区域独立抽取特征。由于这些区域通常有大量重叠,独立的特征抽取会导致大量的重复计算。