Faster R-CNN算法详解

论文地址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Github:https://github.com/rbgirshick/py-faster-rcnn

解决问题

主要解决Fast R-CNN中region proposal计算花费大量时间。Faster R-CNN提出RPN,它与检测网络共享整张图片的卷积特征,这种方法既检测提高效率又提高检测准确率。

算法概述

Faster R-CNN主要由两部分组成:1、一种全卷积网络,用于生成region proposal;2、Fast R-CNN目标检测网络。

该模型每张图测试时间为200ms左右,在数据集VOC12上mAP最高达到78.8%。

算法详解

RPN(Region Proposal Networks)

输入:图片

输出:一系列region proposals,每一个proposal对应一个目标得分。

工作原理:为了产生region proposal,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小网络,这个小网络输入为在feature map上的一n*n的空间窗,每个滑动窗(sliding window)映射到低维特征(ZF:256维;VGG:512维),这些特征送到两个并列的全连接层:回归与分类。本论文中n=3。

Anchor

滑动窗在每个位置产生k个可能的region proposals,因此回归层有4k个输出,分类层有2k个得分,表示目标与非目标的可能性。这k个proposal参数化为相关联的k个anchor,每个anchor以滑动窗为中心,论文默认适用3种尺寸(128^2,256^2,512^2)和3种纵横比(1:1,1:2,2:1),因此k=9。对于一个W*H的特征图,将共产生W*H*k个anchor。

这些anchor具有平移不变性:即当图片中目标发生平移时,proposal同时发生平移,同一个function在任何位置都能预测proposal。

训练过程中,对于一张1000\times 600的图片,可产生20000(\approx 60\times40\times9)个anchors,除去跨过边界的anchor,每张图片剩余6000个anchors用于训练,如果不去除,训练不能收敛。

测试过程中,对于跨界框,我们对其剪切到边界。

损失函数

为了训练RPN,对每一个Anchor我们进行正负样本标记:

正样本满足条件:(i)anchor与ground truth box具有最高的IoU(交并比)或者(ii)anchor与任一ground truth box的IoU大于0.7。

负样本满足条件:anchor与所以ground truth boxses的IoU小于0.3。

其余Anchors不用于训练。在训练RPN时,在每个mini-batch(论文中256)中,正负样本比例为1:1,如果正样本少于128,则用负样本填补。

i表示一个mini-batch中anchor的索引;p_i表示预测的anchor i成为目标的可能性;如果anchor为正样本,则ground-truth标签p_{i}^{*}为1,如果anchor为负样本,则ground-truth标签p_{i}^{*}为0;t_i表示一个矢量,包含预测框的4个参数化坐标;t_{i}^{*}表示与正样本anchor相关的ground-truth box的4个参数化坐标。

L_{cls}采用基于两个类别的log loss(有目标,没目标)。

L_{reg}=R(t_i-t_i^*),其中R表示smooth L1函数。

p_{i}^{*}L_{reg}意味着只对possitive anchor计算回归损失。

L_{cls}L_{reg}分别通过N_{cls}N_{reg}进行归一化,通过\lambda调整两部分权重。N_{cls}表示mini-barch大小,本论文为256;N_{reg}表示anchor位置的数量,本论文N_{reg}~2400(40*60);\lambda=10,这样两部分权重基本相等。

4个坐标信息如下:

x,y,w,h分别表示box的中心坐标以及宽度和高度;变量x,x_a,x^*分别对应预测框(即proposal),anchor box和ground-truth box

 

anchor与proposal

调整图片大小,最短边为600,anchor在不同尺寸及纵横比时所产生的proposal大小如下表所示:

NMS

RPN产生的一些proposal之间有重叠,对此我们采用NMS,固定IoU为0.7,这样每张图剩余2000个proposals,最后只取top-N个proposal,本论文取N=300.

NMS过程:假设生成A,B,C,D四个proposal。1、根据目标概率对proposal进行排序,假设顺序为:A,B,C,D。2、从最大概率A开始,判断B,C,D与A的IoU是否大于设定的阈值,若大于则舍弃;否则保留。3、若B,C,D与A的IoU都小于阈值,则保留A,开始判断C,D与B的IoU是否大于设定的阈值。依次进行下去。

 

网络训练过程

Faster R-CNN网络训练过程包括四步:

1、训练RPN,产生proposal,由ImageNet预训练模型初始化。

2、训练Fast R-CNN网络,RPN生成的propasal作为此网络的输入,同样由ImageNet预训练模型初始化。此时两个网络还未共享卷积层。

3、训练RPN网络,用训练的Fast R-CNN网络初始化RPN网络,固定共享卷积层,只微调RPN独有的层。

4、训练Fast R-CNN网络,只微调Fast R-CNN独有的层。

实验结果

1、针对是否共享卷积层,测试阶段proposal数量,产生proposal的方法,是否有cls或者reg,以及特称提取方法ZF与VGG进行对比。

2、针对产生proposal不同方法,卷积层是否共享以及数据集的不同进行测试

3、在数据集VOC07以及VOC12上mAP得分以及每一类的AP

4、网络各模块所消耗时间比较

系统采用VGG-16,产生proposal以及检测时间为198ms。 

5、针对anchor进行不同设置,比较mAP值

6、测试超参数\lambda对mAP影响。\lambda为Loss函数中为使reg loss与cls loss等权重所设置的超参数。

7、针对不同产生proposal的方法,测试阶段proposal个数N由2000到300,recall的变化如下图所示。

 8、COCO数据集上目标检测结果,为检测小目标,anchor增加一尺寸64^2,因此共有12种anchor。

9、COCO数据集用于训练,在VOC数据集上测试结果。

之所以mAP得到提升,是因为COCO集合种类多,VOC集合小于COCO集合。

 VOC07COCO(2014年)ImageNetISLVRC(ImageNet子集)
类别20802.2W1000
训练集250182783共1500W张图片1281167
验证集251040504 5w
测试集495240775 10w

结论

Faster R-CNN在时间以及准确率上都得到提升,每张图片检测时间为200ms左右,基于VGG网络fps为5,在VOC07数据集上mAP最高为78.8%。

主要原因为引入RPN网络,此网络与Fast R-CNN网络共享卷积层,生成proposal几乎不耗时间,基于VGG网络每张图片生成proposal时间为10ms左右,并且proposal质量提高,从而提高目标检测精度。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值