0%

Notes on RCNN

CNN 用于目标检测。

  • 使用 region proposal 方法获取一系列 candidate bounding box
  • 对每一个 candidate bounding box 使用 CNN 提取特征
  • 对 candidate bounding boxes 进行 regression 获得最后的 bounding boxes
  • 根据一些阈值条件对获得的 bounding boxes 进行合并

过程详解

如上图所示,首先,通过某种 region proposal 方法 (原论文中使用的是 selective search) 来获取 candidate bounding boxes. 接着把这些 bounding boxes wrap 到 CNN 网络输入要求的大小。然后把所有的 bounding boxes 进行 forward. 输出成有两个,一个是 classifier, 一个 是 bounding box regressor. 对每一个 bounding box 都可以获得一个类别概率和一组 bounding box 值,然后根据类别概率决定是不是留下这个 bounding box. 之后再把留下的 bounding box 进行 merge.

具体操作

  1. 自己训练或者现在一个图像识别的模型,例如 vgg16 等
  2. 如果是下载的模型,要对模型进行 finetune, 例如,vgg16 的模型是 1000 类,论文中使用的是 VOC 数据集,该数据集中共有 20 类,那么,finetune 之后的类别应该是 21 类 (其中 1 类是 background)
  3. 特征提取。首先通过 region proposal 方法获取 candidate, 然后,把每一个 candidate wrap 到 CNN 的输入大小,之后 forward through the CNN, 取得最后一个 pooling 层的输出作为 feature 并存储
  4. 对于每一类,训练一个分类器用来对 region features 识别 (论文中训练的是 SVM)
  5. Bounding box regression. 对于每一类,训练一个回归模型,用来 map cached features to offset to ground truth boxes.
    当进行预测的时候,设置一个 classify 的 threshold, 只有当 class score 大约这个 threshold 的时候才保留结果

缺点

  1. 在 test/predict 的时候需要对所有的 region proposal 进行 forward, 因此,速度比较慢
  2. 特征提取与 SVM 和 bounding box regressor 的训练是完全隔离的两个阶段,因此,CNN 提取的特征不一定对 SVM 和 regressor 的训练非常合适
  3. 训练过程比较复杂

Reference

Rich feature hierarchies for accurate object detection and semantic segmentation
cs231n