faster rcnn根目录下
1、caffe-fast-rcnn文件夹
这是caffe框架目录
2、data文件夹
用来存放pretrained模型,比如imagenet上的,以及读取文件的cache缓存
3、experiments文件夹
(1)logs
(2)scripts/faster_rcnn_alt_opt.sh
(3)cfgs/faster_rcnn_alt_opt.yml
存放配置文件以及运行的log文件,另外这个目录下有scripts可以用end2end或者alt_opt两种方式训练。
4、tools文件夹
里面存放的是训练和测试的Python文件。
(1)_init_paths.py
用来初始化路径的,也就是之后的路径会join(path,*)
(2)compress_net.py
用来压缩参数的,使用了SVD来进行压缩,这里可以发现,作者对于fc6层和fc7层进行了压缩,也就是两个全连接层。
(3)demo.py
通常,我们会直接调用这个函数,如果要测试自己的模型和数据,这里需要修改。这里调用了fast_rcnn中的test、config、nums_wrapper函数。vis_detections用来做检测,parse_args用来进行参数设置,以及damo和主函数。
(4)eval_recall.py
评估函数
(5)reval.py
re-evaluate,这里调用了fast_rcnn以及dataset中的函数。其中,from_mats函数和from_dets函数分别loadmat文件和pkl文件。
(6)rpn_genetate.py
这个函数调用了rpn中的genetate函数,之后我们会对rpn层做具体的介绍。这里,主要是一个封装调用的过程,我们在这里调用配置的参数、设置rpn的test参数,以及输入输出等操作。
(7)test_net.py
测试fast rcnn网络。主要就是一些参数配置。
(8)train_faster_rcnn_alt_opt.py
训练faster rcnn网络使用交替的训练,这里就是根据faster rcnn文章中的具体实现。可以在主函数中看到,其包括的步骤为:
(9)train_net.py
使用fast rcnn,训练自己数据集的网络模型。
(10)train_svms.py
使用最原始的RCNN网络训练post-hoc SVMs。
5、lib文件夹
用来存放一些python接口文件,如其下的datasets主要负责数据库读取,config负责cnn一些训练的配置选项。
lib/rpn
这就是RPN的核心代码部分,有生成proposals和anchor的方法
(1)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固定。
(2)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,非极大值抑制)
(3)anchor_target_layer.py
生成每个锚点的训练目标和标签,将其分类为1 (object), 0 (not object) , -1 (ignore).当label>0,也就是有object时,将会进行box的回归。其中,forward函数功能:在每一个cell中,生成9个锚点,提供这9个锚点的细节信息,过滤掉超过图像的锚点,测量同GT的overlap。
(4)proposal_target_layer.py