Faster RCNN总结

来源:互联网 发布:leslie矩阵模型 编辑:程序博客网 时间:2024/06/08 15:49

faster RCNN选自2015年 NIPS, Faster R-CNN: Towards Real-Time Object Detection withRegion Proposal Networks



正如上图所示,检测不同尺度(scale),不同长宽比(aspect ratios)的目标物通常的3种做法。

(a)Pyramids of images,缩放图像来达到不同的scale,传统机器学习常用的方法

(b)Pyramids of filters,也就是sliding window的思想,也是传统机器学习常用的方法

(c)Pyramids of anchors,fast rcnn提出,Faster rcnn正式命名为RPN(region proposal network),并且从fast rcnn的cpu移植到了fasterrcnn的gpu上。可以实现不同不同scale和不同aspect ratios的检测,使得检测效果更佳准确完美啊。


整个网络结构如上图的左图所示,分为2个网络结构,一个RPN网络和一个FastRCNN网络,两个网络共享了特征图这一层。由于是2个网络结构,训练过程也有点不一样,作者论文中给出了3个训练的方法,

(1)Alternating training,先从pretrained VGG16中导入初始参数,然后有了参数后,先训练RPN,然后RPN将结果送给Fast RCNN,在训练一把Fast RCNN训练完毕后更新卷积层,然后,RPN在从卷基层提取数据,如此不断循环往复。开源的matlab版本就是这种训练方法。

(2)Approximate joint training,就是2个网络一起训练,但是该方法忽略了wrt导数,开源的python版本就是这么训练的,可以减少25-50%的训练时间。

(3)Non-approximate joint training,作者没有实现。

 

上图中的右图详细说明了RPN的实现细节。

首先,作者提出了Anchor这个概念,其实就是feature map上的一个像素,以该Anchor为中心,可以生成k种 anchor boxes,简单理解就是不同大小和尺度的滑动框,例如本文中的k为9,则生成3个scales和1:1,1:2,2:1,3种aspect ratios。然后使用不同的anchor boxes进行滑动,整个feature map中IOU最高的和每个anchor中,IOU>0.7的将被激活,置为1,IOU<0.3的将被置为0,从而实现了hard negative mining,滑动完毕后将生成256维的向量,然后分别经过2个1*1的卷基层(classification layer,regression layer),分别生成2k scores(是物体,不是物体)和4k coordinates(x,y,w,h)。从而实现了物体的检测,最后经过softmax,实现物体的分类。


安装步骤:

git clone  --recursive https://github.com/ShaoqingRen/faster_rcnn.gitcd ./faster-rcnn/external/caffemake -j8&&make matcaffefaster_rcnn_build.mstartup.mfetch_data/fetch_faster_rcnn_final_model.m(这一步我下载失败,可以去作者github做下面的百度网盘下载,下载Final RPN+FastRCNN models就可以了)experiments/script_faster_rcnn_demo.m

测试:

下面测试显卡为TitanX

使用VGG16的测试,


使用ZFnet的测试,


The End!
1 0