RCNN 算法可以看成是将 CNN 引入目标检测领域的开山之作,其过程还是比较,四个步骤

  1. 候选区域生成: 一张图像生成1K~2K个候选区域 (采用 Selective Search 方法)
  2. 特征提取: 对每个候选区域,使用深度卷积网络提取特征 (CNN)
  3. 类别判断: 特征送入每一类的 SVM 分类器,判别是否属于该类
  4. 位置精修: 使用回归器精细修正候选框位置

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的主要性能瓶颈在于需要对每个提议区域独立抽取特征。由于这些区域通常有大量重叠,独立的特征抽取会导致大量的重复计算。

References

  1. RCNN-将CNN引入目标检测的开山之作
  2. R-CNN论文详解