faster rcnn 源码解读
来源:互联网 发布:淘宝公示30天是啥用途 编辑:程序博客网 时间:2024/06/05 05:28
faster rcnn
源码解读
faster rcnn同fast rcnn相比,就是将ss(候选框提取)的算法融合到了网络总,这样可以在网络中共享卷积层,计算效率更高。具体的论文笔记,请参见我的另一篇博客http://blog.csdn.net/bailufeiyan/article/details/50575150,关于cnn、fast rcnn以及faster rcnn的梳理请参加博客http://blog.csdn.net/xyy19920105/article/details/50402627,这里就不再详细的介绍了。
源码解析
faster rcnn是在fast rcnn的基础上,包装了rpn的提取以及网络共享,所以,这里,我们着重看一下这一部分的代码,fast rcnn的源码解析,之后会在另外的博客中介绍。
tools
在tools文件夹中,是我们直接调用的最外层的封装文件。其中主要包含的文件为:
_init_paths.py
:用来初始化路径的,也就是之后的路径会join(path,*)compress_net.py
:用来压缩参数的,使用了SVD来进行压缩,这里可以发现,作者对于fc6层和fc7层进行了压缩,也就是两个全连接层。demo.py
:通常,我们会直接调用这个函数,如果要测试自己的模型和数据,这里需要修改。这里调用了fast_rcnn中的test、config、nums_wrapper函数。vis_detections用来做检测,parse_args用来进行参数设置,以及damo和主函数。eval_recall.py
:评估函数reval.py
:re-evaluate,这里调用了fast_rcnn以及dataset中的函数。其中,from_mats函数和from_dets函数分别loadmat文件和pkl文件。rpn_genetate.py
:这个函数调用了rpn中的genetate函数,之后我们会对rpn层做具体的介绍。这里,主要是一个封装调用的过程,我们在这里调用配置的参数、设置rpn的test参数,以及输入输出等操作。test_net.py
:测试fast rcnn网络。主要就是一些参数配置。train_faster_rcnn_alt_opt.py
:训练faster rcnn网络使用交替的训练,这里就是根据faster rcnn文章中的具体实现。可以在主函数中看到,其包括的步骤为:- RPN 1,使用imagenet model进行初始化参数,生成proposal,这里存储在mp_kwargs
- fast rcnn 1,使用 imagenet model 进行初始化参数,使用刚刚生成的proposal进行fast rcnn的训练
- RPN 2使用 fast rcnn 中的参数进行初始化(这里要注意哦),并生成proposal
- fast rcnn 2,使用RPN 2 中的 model进行初始化参数,
- 值得注意的是:在我们训练时,我们可以在get_solvers中的max_iters中设置迭代次数,在不确定网络是否可以调通时,减少迭代次数可以减少测试时间。
- 我们在训练faster rcnn网络时,就是调用这个文件训练的。
train_net.py
:使用fast rcnn,训练自己数据集的网络模型。train_svms.py
:使用最原始的RCNN网络训练post-hoc SVMs。
RPN
这里我们主要看lib/rpn文件夹下的代码。这里主要介绍了rpn的模型,其中,包含的主要文件如下:
generate_anchors.py
: 生成多尺度和多比例的锚点。这里由generate_anthors函数主要完成,可以看到,使用了 3 个尺度( 128, 256, and 512)以及 3 个比例(1:1,1:2,2:1)。一个锚点由w, h, x_ctr, y_ctr固定,也就是宽、高、x center和y center固定。proposal_layer.py
:这个函数是用来将RPN的输出转变为object proposals的。作者新增了ProposalLayer类,这个类中,重新了set_up和forward函数,其中forward实现了:生成锚点box、对于每个锚点提供box的参数细节、将预测框切成图像、删除宽、高小于阈值的框、将所有的(proposal, score) 对排序、获取 pre_nms_topN proposals、获取NMS 、获取 after_nms_topN proposals。(注:NMS,nonmaximum suppression,非极大值抑制)anchor_target_layer.py
:生成每个锚点的训练目标和标签,将其分类为1 (object), 0 (not object) , -1 (ignore).当label>0,也就是有object时,将会进行box的回归。其中,forward函数功能:在每一个cell中,生成9个锚点,提供这9个锚点的细节信息,过滤掉超过图像的锚点,测量同GT的overlap。proposal_target_layer.py
:对于每一个object proposal 生成训练的目标和标签,分类标签从0-k,对于标签>0的box进行回归。(注意,同anchor_target_layer.py不同,两者一个是生成anchor,一个是生成proposal)generate.py
:使用一个rpn生成object proposals。
作者就是通过以上这些文件生成rpn的。
nms
lib/nms文件夹下是非极大值抑制,这部分大家应该已经非常熟悉了,其Python版本的核心函数为py_cpu_nms.py,具体实现以及注释如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
其他文件下的代码,如datasets、fast_rcnn、roi_data_layer、utils代码同fastrcnn大致相同,会在fast rcnn源码中介绍。
- faster rcnn 源码解读
- faster rcnn 源码解读
- faster rcnn源码解读总结
- faster rcnn源码解读总结
- faster rcnn 源码解读1
- faster rcnn源码解读2
- py-faster-rcnn源码解读系列
- py-faster-rcnn源码解读系列
- faster rcnn代码解读
- Faster RCNN 源码解读(3.1) -- RPN源码结构介绍
- faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py
- faster rcnn源码解读(六)之minibatch
- faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py
- faster rcnn源码解读(六)之minibatch
- Faster RCNN 源码解读(1) -- 文件结构分析
- Faster RCNN 源码解读(2) -- NMS(非极大抑制)
- Faster Rcnn 源码记录
- faster rcnn源码理解
- 源码推荐:17款抽奖源码下载,非常实用
- SOA (面向服务的体系结构)
- ACT写作常用句型小结
- 获取raw文件路径
- 那些让我哭让我笑的编程错误!持续更新,错了就写上来!
- faster rcnn 源码解读
- Python实现KNN
- Android 动画原理简析
- 小C语言--词法分析程序
- Java学习笔记(二十四):微信获取临时素材,然后存到oss
- ios developer tiny share-20160921
- appcan-学习随记(界面通信,传值)
- centos 6.5 安装 Erlang
- C#中的Abstract