faster rcnn文件夹说明

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012841667/article/details/69555074

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文章中的具体实现。可以在主函数中看到,其包括的步骤为:

  • 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进行初始化参数,

(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

  • 对于每一个object proposal 生成训练的目标和标签,分类标签从0-k,对于标签>0的box进行回归。(注意,同anchor_target_layer.py不同,两者一个是生成anchor,一个是生成proposal)
  • (5)generate.py
  • 使用一个rpn生成object proposals。

  • lib/nms文件夹
  • 做非极大抑制的部分,有gpu和cpu两种实现方式
  • (1)py_cpu_nms.py
核心函数

  • lib/datasets文件夹
  • 在这里修改读写数据的接口主要是datasets目录下
  • (1)factory.py
  • (2)imdb.py
  • (3)pascal_voc.py
  • (4)voc_eval.py

    • lib/fast_rcnn文件夹
    • 主要存放的是python的训练和测试脚本,以及训练的配置文件config.py
    • (1)config.py
    • (2)nms_wrapper.py
    • (3)test.py
    • (4)train.py

  • lib/roi_data_layer文件夹
  • 主要是一些ROI处理操作
  • (1)layer.py
  • (2)minibatch.py
  • (3)roidb.py

  • lib/utils文件夹
  • (1)blob.py
  • (2)timer.py
    • lib/transform文件夹

  • 6、models/pascal_voc/VGG16/faster_rcnn_alt_opt文件夹
  • 里面存放了三个模型文件,小型网络的ZF,大型网络VGG16,中型网络VGG_CNN_M_1024。推荐使用VGG16,如果使用端到端的approximate joint training方法,开启CuDNN,只需要3G的显存即可。
  • (1)fast_rcnn_test.pt
  • (2)rpn_test.pt
  • (3)stage1_rpn_train.pt
  • (4)stage1_fast_rcnn_train.pt
    • (5)stage2_rpn_train.pt
    • (6)stage2_fast_rcnn_train.pt
      • 7、output
这里存放的是训练完成后的输出目录,默认会在faster_rcnn_end2end文件夹下



展开阅读全文

没有更多推荐了,返回首页