Faster R-CNN
[Paper - Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks]
[Code-Caffe]
摘要:
目标检测依赖于 region proposal 算法.
Faster R-CNN 提出 Region Proposal Network(RPN),与检测网络共享整张图片的卷积特征,region proposal 计算量几乎很少.
RPN 是全卷积网络,能够同时预测 object 边界和每个位置 object 的 score.
RPNs 是 end-to-end 训练的,以生成高质量的 region proposals.
Fast R-CNN 利用 region proposals 来进行目标检测.
基于 VGG-16,检测速率在 GPU 上是 5帧/秒.
Faster R-CNN 的基本结构
其大致可以包括四部分:
- Conv Layers - 输入是 image,输出是提取的图片的 feature maps,被用作 RPN 和全连接层的共享特征;
- RPN - 基于 feature maps 来生成 region proposals. 主要是对 anchors 采用 softmax 来确定其是 foreground 或 background,并对 anchors 进行 bounding box 回归,进而获得理想的 proposals;
- RoI Pooling - 输入是 feature map 和 proposals,输出是提取的 proposal feature maps,被用于全连接层对类别判定;
- Classifier - 基于 proposal feature maps 来对 proposal 的类别进行计算,并再次进行 bounding box 回归,以得到准确的 object 检测框位置.
1. Region Proposal Networks(RPN)
region-based 检测器(如 Fast R-CNN)用到的卷积特征图(feature maps),也可以用来生成 region proposals.
RPN 采用任意尺寸的图片作为输入,并输出 object proposals 的矩形框集合,每个矩形框都有一个 object score.
生成 region proposals 的过程:
- 针对最后一个共享卷积层输出的 conv feature map,采用一个小网络对其平滑. 该小网络全连接到输入 conv feature map 的一个 n×n 的空间窗口(spatial window). 这里 n=3. n×n 的卷积层后接 ReLUs 层.
- 每个滑窗被映射为一个低维向量(256-d/ZF,512-d/VGG).
- 低维向量被输入到两个并列 1×1 的卷积层——边界框回归层(reg) 和边界框分类层(cls).
在实际网络中的 RPN 结构(VGG16-test.prototxt):
1.3 优化
- RPN,全卷积网络,可以利用 SGD 和 BP 进行 end-to-end 的训练;
- image-centric 的采样策略;
- 每个 mini-batch 由包含许多 positive 和 negative anchors 的单张图片构成;
- 随机采样一张图片的 256 个 anchors 来计算 mini-batch 的 loss,采样的 positive anchors 和 negative anchors 的比例为 1:1;如果一张图片的 positive anchors 少于 128,则用 negative anchors 来补全 mini-batch.
- 采用均值为 0,方差为0.01 的 Gaussian 分布来初始化网络新加入的层;
- 采用 ImageNet 分类任务的预训练模型来初始化其它网络层;
- PASCAL 数据集上,前 60K 次 mini-batches,learning_rate=0.001,后 20K 次迭代,learning_rate=0.0001;
- momentum=0.9,weight_decay=0.0005.
1.4 Region Proposal 和目标检测共享卷积层特征
4-step 训练算法,以通过交替优化来学习共享特征:
- [1] - 训练 RPN;采用 ImageNet 训练模型进行网络初始化,并针对 region proposal 任务进行 end-to-end 的 fine-tuned.
- [2] - 基于 RPN 生成的 proposals,采用 Fast R-CNN 来训练一个单独的检测网络;检测网络也是采用 ImageNet 训练模型初始化;此时,两个网络是不共享卷积层的.
- [3] - 采用检测网络来初始化 RPN 的训练,但固定共享卷积层,只 fine-tune RPN 的网络层;现在,两个网络共享卷积层.
- [4] - 固定共享卷积层,fine-tune Fast R-CNN 的 FC 层.
至此,两个网络共享了相同的卷积层,形成了统一网络.
2. 训练网络
3. 测试网络
Reference
[1] - 机器学习随笔 - Faster R-CNN
[2] - 机器视觉目标检测补习贴之R-CNN系列 — R-CNN, Fast R-CNN, Faster R-CNN