Faster R-CNN

转载自:

http://blog.csdn.net/cv_family_z/article/details/46864473

摘要:SPPNet和Fast R-CNN降低了网络学习特征的时间,SS由于需耗时1~2s,EdgeBoxes
耗时约0.2s,提取proposal的方法成为检测的瓶颈。本文提出了Region Proposal Networks(RPNs)实现实时提取proposals,它能与检测网络共享全图像卷积特征。RPNs是一个能够预测某位置上的目标bbox和objectness的全卷积网络。对于VGG-16网络,检测系统在GPU上的速度为5fps。VOC2007的mAP为73.2%,每幅图像大约300个proposals。

灵感:基于区域的检测使用的卷积特征图,如FRCN,同样可以用来生成proposals。在这些卷积层之后,作者通过增加两个卷积层构建了RPNs,一个将卷积图编码为低维(256d)向量,另外一个在每个卷积图的位置上生成一个objectness score和k个proposals的回归bbox,k=9。

RPNs网络
RPNs将图像作为输入,输出带有objectness score的bbox。使用一个小的网络在最后一个卷积层输出的卷积特征图上产生区域proposals,这个小网络与输入的特征图以n*n的窗口进行全连接,每个滑动窗之后映射到一个低维向量(ZF5-256d,VGG-512d),之后将向量送入两个全连接的子层:一个bbox回归层和一个bbox分类层。网络的结构如下图所示:
Faster R-CNN_第1张图片

平移不变的锚点
每一个滑动窗滑过的位置有k个proposals,cls子层输出每个proposal的object\non-object的2k个scores,reg子层输出对应坐标的4k个节点。k个proposals根据k个锚点进行参数化,每个锚点是对应尺度和长宽比的中心,文中使用3个尺度,3个长宽比,得到9个锚点。如果特征图大小为 W×H ,则共有WHk个锚点。

Proposals学习的损失函数
按照以下规则对锚点分配二值类别标记。正样本标记:(1)与groundtruth的IoU最高的锚点,(2)与任意groundtruth IoU>0.7的锚点,某个groundtruth有可能对应几个正锚点。负样本:与groundtruth的IoU<0.3的锚点。其余的锚点不在训练使用的范围内。使用FRCN的multi-task loss最小化目标函数,某个锚点box的损失函数为:
这里写图片描述
式中 pi 是锚点i为物体的预测概率, Lcls 是而分类object/non-object的softmax loss。

优化
RPN是一个全卷积网络,可使用bp及SGD训练,使用FRCN中的image-centric进行训练,为了避免样本偏斜,每幅图采样256个样本计算loss,正负样本为1:1。

Region proposal与目标检测共享卷积特征
使用交替优化学习共享特征的4步训练法:
1)训练RPN,使用ImageNet初训练的网络进行end-to-end的微调;
2)使用FRCN及RPN生成的proposal训练一个检测网络,该步未共享特征;
3)使用检测网络初始化RPNs训练,固定共享的卷积层只微调为RPN新增的层;
4)固定共享层,微调FRCN的全连接层

实现细节
使用单尺度图像训练RPNs和FRCN,缩放图像使得短边为600像素。对于每个锚点,三个尺度对应的box面积分别为 1282 2562 5122 ,3个长宽比分别为1:1,1:2,2:1,学习到的平均proposal大小如下表所示:
这里写图片描述
对于 1000×600 的输入图像,约有20k个锚点,如果忽略cross-boundary的锚点,约有6k个用来训练。检测时,基于cls score使用NMS将proposal压缩至2k个,之后用top-N个proposal来检测。

实验结果
使用SS,EB,RBN生成proposal的实验结果及ablation的实验结果如下表所示:

ablation实验结果表明共享卷积特征mAP能提升1.2%,主要是在共享的第三步使用了微调的检测特征来微调RPN。

每一步的运行时间如下表所示
Faster R-CNN_第2张图片


你可能感兴趣的:(Faster R-CNN)