美文网首页深度学习
【转载】Faster RCNN详解

【转载】Faster RCNN详解

作者: dopami | 来源:发表于2018-10-10 11:51 被阅读3次

原文:https://blog.csdn.net/jufengwudi/article/details/78320705

转载于 http://blog.csdn.net/zy1034092330/article/details/62044941

目录(?)[-]

Conv layers

Region Proposal NetworksRPN

1 多通道图像卷积基础知识介绍

2 anchors

3 softmax判定foreground与background

4 bounding box regression原理

5 对proposals进行bounding box regression

6 Proposal Layer

RoI pooling

1 为何需要RoI Pooling

2 RoI Pooling原理

Classification

Faster RCNN训练

1 训练RPN网络

2 通过训练好的RPN网络收集proposals

3 训练Faster RCNN网络

Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn

Faster RCNN paper : https://arxiv.org/abs/1506.01497

Bound Box Regression详解 : http://download.csdn.net/download/zy1034092330/9940097(来源:王斌_ICT

缩进经过RCNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster RCN已经将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。

图1 Faster CNN基本结构(来自原论文)

缩进依作者看来,如图1,Faster RCNN其实可以分为4个主要内容:

Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。

Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。

Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。

Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

所以本文以上述4个内容作为切入点介绍Faster RCNN网络。

缩进图2展示了python版本中的VGG16模型中的faster_rcnn_test.pt的网络结构,可以清晰的看到该网络对于一副任意大小PxQ的图像,首先缩放至固定大小MxN,然后将MxN图像送入网络;而Conv layers中包含了13个conv层+13个relu层+4个pooling层;RPN网络首先经过3x3卷积,再分别生成foreground anchors与bounding box regression偏移量,然后计算出proposals;而Roi Pooling层则利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作classification(即分类proposal到底是什么object)。

path:${py-faster-rcnn-root}/models/pascal_voc/VGG16/faster_rcnn_alt_opt/faster_rcnn_test.pt

图2 faster_rcnn_test.pt网络结构

1 Conv layers

缩进Conv layers包含了conv,pooling,relu三种层。以python版本中的VGG16模型中的faster_rcnn_test.pt的网络结构为例,如图2,Conv layers部分共有13个conv层,13个relu层,4个pooling层。这里有一个非常容易被忽略但是又无比重要的信息,在Conv layers中:

所有的conv层都是:kernel_size=3,pad=1

所有的pooling层都是:kernel_size=2,stride=2

为何重要?在Faster RCNN Conv layers中对所有的卷积都做了扩边处理(pad=1,即填充一圈0),导致原图变为(M+2)x(N+2)大小,再做3x3卷积后输出MxN。正是这种设置,导致Conv layers中的conv层不改变输入和输出矩阵大小。如图3:

图3

类似的是,Conv layers中的pooling层kernel_size=2,stride=2。这样每个经过pooling层的MxN矩阵,都会变为(M/2)*(N/2)大小。综上所述,在整个Conv layers中,conv和relu层不改变输入输出大小,只有pooling层使输出长宽都变为输入的1/2。

缩进那么,一个MxN大小的矩阵经过Conv layers固定变为(M/16)x(N/16)!这样Conv layers生成的featuure map中都可以和原图对应起来。

2 Region Proposal Networks(RPN)

Faster RCNN的分析就结束了,之后会缓慢更新YOLO,YOLO V2,SSD,Mask RCNN等内容,敬请期待~

>>>>>>我的OpenCV Adaboost检测算法解释<<<<<<

>>>>>>我的YOLO详解点这里<<<<<<

>>>>>>我的SSD详解点这里<<<<<<

相关文章

网友评论

    本文标题:【转载】Faster RCNN详解

    本文链接:https://www.haomeiwen.com/subject/bxdpaftx.html