工作流

Faster RCNN

工作流大部分与 Fast RCNN 一致。区别在于:

  • 将 Selective Search 算法替换为 Region Proposal Networks(RPN)。

具体工作流与 RCNN、Fast RCNN 对比如下:

# 步骤 RCNN Fast RCNN Faster RCNN
1 候选框提取 Selective Search Selective Search RPN
2 预处理
3 特征提取 每个区域单独提取 提取整张图片,再用 ROI Pooling 提取整张图片,再用 ROI Pooling
4 分类 SVM CNN CNN
5 非极大值抑制
6 边界框回归

RPN

RPN

为了替换掉的又慢又无法 end-to-end train 的 selective search 算法,我们需要一种能够与 Fast RCNN 一起训练的新组件,且该组件必须预测多个候选框的位置(selective search 为每张图片挑选约 2000 个候选框)。这里存在两个问题:

  1. 如何预测每个候选框的位置?
  2. 应该预测多少个候选框?

为了解决这个问题,Region Proposal Networks(RPN)创造性地引入了 anchor 的概念,anchor 的本质就是预定义好长、宽的候选框(如上图右侧所示)。每个模型可能有多个不同尺寸的 anchor(视图片内目标的长宽、大小而定),在提取候选框时,我们只需要为每个位置的每种 anchor 都预测 4 个转换参数(分别表示 $x$、$y$、$h$、$w$ 的偏移量),即可获得海量 anchor。

以上图为例($k$ 为 anchor 的数量),作者用一个大小为 $n \times n$ 的 sliding window(论文中 $n = 3$)依次滑过所有像素点,以每个像素点为中心的一个 patch 的特征会先经过一个 $n \times n$ 卷积操作来获得 $256$ 维向量(ZFNet 为 $256$、VGG 为 $512$),然后分别进入两个 $1 \times 1$ 卷积,预测以下两个内容:

  1. Object scores:其实就是二分类,如果用 logistic regression 的话就产生 $k$ 个 score;而如果使用 two-class softmax 则产生 $2k$ 个 score(foreground 概率、background 概率);
  2. Coordinate:$x$、$y$、$h$、$w$ 的偏移量,总的维度是 $4k$

Faster RCNN 一共使用了 9 种 anchor,包括 3 个尺度($128^2$、$256^2$、$512^2$)、3 种比例($1:1$、$1:2$、$2:1$);在训练时忽略所有超出边界的 anchor,在测试时截断所有超出边界的 anchor。

训练过程

TODO

优缺点

  • (+) RPN
    • no selective search
  • (-) still slow
    • unshared ROI classification

参考