Notes on Faster RCNN

Faster RCNN 速度更快, 而且, 它把 end-to-end 这件事做的更彻底. RCNN 和 Fast RCNN 都需要一个region proposal 方法来提出 bounding box candidate, 而 Faster RCNN 把 region proposal 这件事也让网络本身来完成, 而不需要借助第三方算法. 实现这一方法的关键点是 Region Proposal Net

基本过程

  1. 在最后一个卷积层后面增加一个 Region Proposal Net(RPN), 这个层被训练用来做 region proposal.
  2. 在 RPN 后面连接 RoI Pooling 层, 类似于 Fast RCNN 去训练分类器和bounding boxes 的regression

Region Proposal Net

RPN 的输入是任意尺寸的图片, 输出是一个 region proposal 和objectness score. 具体做法如下:

  1. 在最后的一个conv layer 上面 slide 一个小的窗口, 这个窗口 full connect 到 \(n \times n\) 的 input conv feature map.
  2. 每一个这样的滑窗 map 到一个low-dimensional 的 vector 中(论文中作者使用的是 \(256\) 和\(512\))
  3. 把 #2 中的vector 分别输入到两个 full connect layer 中, 一个用于 classify, 一个用于 regression

Translation-Invariant Anchors

我认为这里之所以是 Invariant 的主要是因为作者采用了不同 scale 和不同宽高比的采样.

A Loss Function for Learning Region Proposal

训练 RPN 是一个二分类问题(是 object / 不是 object), 把 positive label 分为两类:

  1. 与ground truth有最高IoU 的anchor
  2. 与任意 ground truth 的 IoU 大于 \(0.7\)
    与ground truth 的IoU 小于 0.3 的标记为 negative.
    其它的清醒全部抛弃.
    Faster RCNN 的Loss Function 与Fast RCNN 中的相同, 也是 multi-task loss: $$ L\left(\left\{p_i\right\},\left\{t_i\right\}\right)=\frac{1}{N_{cls}}\sum{L_{cls}\left(p_i, p_i^{*}\right)+\lambda\frac{1}{N_{reg}}\sum_i{p_i^{*}L_{reg}\left(t_i, t_i^{*}\right)}} $$

其中, \(i\) 表示第 \(i\) 个 anchor, \(p_i \) 表示该 anchor 是 object 的概率. \(p_i^{*}\) 是标签. \(t_i\) 是 predicted bounding box, \( t_i^{*} \) 是相应的标签. \(L_{reg}(t_i, t_i^{*})\) 与 fast RCNN 中的定义相同. \(N_{cls}\) 和 \(N_{reg}\) 是两个normalization 参数, \(\lambda\) 是平衡因子, 作者在论文中设置为 \(10\) 说明倾向与 bounding box.

Optimization

网络的训练就是采用的常规的 SGD, 知识, 在获取 minibatch 的时候有些tricks. 每张图片随机采样 256 个anchors, 为了使结果不会 bias, 正负样例比为1:1 (而不是采用所有的样例, 因为在所有的样例中 negative 的sample 更多).

Share Convolutional Features for Region Proposal and Object Detection

  1. 使用上述方法训练 RPN, 用 ImageNet 的模型进行初始化, 针对 region proposal 问题进行 finetune
  2. 利用 #1 的RPN 给出 bounding box, 训练 Fast RCNN, 得到 detect network.
  3. 使用 #2 的detect network 初始化 RPN, 固定 convolution layers, finetune RPN
  4. 在 #3 的基础上固定 conv layers, finetune Fast RCNN.

Reference

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks