Faster Rcnn end2end训练流程(txt格式标签)

本人很水,以下流程也比较机械,有参考大佬的部分,奈何时间久远记不清了,侵删。求职季攒人品,把之前整理过的东西贴出来和大家分享,有不好的地方欢迎指出,共同进步。


1、 将数据集所有部分部署在data目录下,参照DOTA那块

2、 执行image_sets目录下的generate_set.py文件,得到随机分配的train和test的数据集。

3、 打开models目录,建立相应名称的子目录,用于存放不同模型,下面再存放alt-opt小目录和end2end小目录,下面再存放众prototxt文件。

4、 注意根据不同的网络(如resnet)更换prototxt文件(train和test)以及注意里面的参数。

5、 模仿lib/datasets/下的pascal_voc.py和DOTA/DOTA.py建立自己的类别模块,以及在factory.py中添加新数据集。

6、 models/DOTA/下存放相应的模型配置文件,打开相应的train.prototxt:

(1)、input-data层的num_classes: n (自己要训练的类别+1,1为背景类background)

(2)、roi-data层的num_classes:n

(3)、cls_score层的num_output:n

(4)、bbox_pred层的num_output : 4*n

:rpn_cls_score层的输出是2*anchor数,注意一下!

    rpn_bbox_pred层的输出是4*anchor数,注意一下!

7、 再打开同一目录下的test.prototxt文件:

(1)、cls_score层的num_output:n(自己要训练的类别+1,1为背景类background)

(2)、bbox_pred层的num_output : 4*n

8、 experiments/cfgs/faster_rcnn_end2end.yml文件:

可以根据自己的需要在这个文件中添加配置,例如在训练时进行模型快照的迭代次数,是否翻转等,相应的参数可以参考py-faster-rcnn/lib/fast_rcnn/config.py。不需要更改config.py,在faster_rcnn_end2end.yml中添加语句即可。

9、 训练前,将output文件夹、data/cache/中的文件、data/DOTA/annotations_cache中的文件删除。

10、        学习率等参数可在models/DOTA/ResNet101_BN_SCALE_Merged/faster_rcnn_end2end/solver.prototxt文件中进行修改。

11、        迭代次数可在tools/train_net.py中进行修改。

(注:如果修改了迭代次数,那么步长也要修改----将models/pascal_voc/ZF/faster_rcnn_end2end/solver.prototxt文件中的stepsize修改掉,数值要小于迭代次数。

12、        修改lib/datasets/下的factory.py,再里面加上新的datasets信息。

13、        Batchsize以及RPN时的BATCHSIZE等 好多你关心的信息,都在lib/fast_rcnn/config.py里。(个人觉得config里面应该是一堆默认值,如果experiments/cfgs/faster….yml文件另有指定,则遵循后者。反之,如果执行训练的时候不加—cfg参数,则采用config里面的默认选项)(注:yml文件里面有train和test过程分别是否使用RPN等选项)

14、        在lib/datasets/下创建相应数据集的目录,里面有DOTA.py(对ground truth的解析)和annotation_parser.py(生成合适的gt,看需要)。以及编写datasets目录下的voc_eval_copy.py文件,这个文件很重要很核心,PR曲线的部署也在它里面,还有很多东西。

15、        检查一下显卡情况:   执行nvidia-smi命令。

16、        开始训练:注意一下train_net.py里面的参数及其默认值,然后执行训练命令,例如:./tools/train_net.py --gpu 1 --solver ~/py-faster-rcnn/models/DOTA/ResNet101_BN_SCALE_Merged/faster_rcnn_end2end/solver.prototxt--weights/home/jiangshan/py-faster-rcnn/data/imagenet_models/ResNet101_BN_SCALE_Merged.caffemodel--imdb DOTA_train --cfg ~/py-faster-rcnn/experiments/cfgs/faster_rcnn_end2end.yml

(注:像weights后面的值,可以写~/py然后tab一下,就会变成这种标准形式)

 

 

附:卷积结果可视化

在py-faster-rcnn/lib/fast_rcnn/test.py中添加如下内容:

(1)LINE21    from vis import vis_square

(2)LINE157    for layer_name, blob innet.blobs.iteritems():

158                 printlayer_name + '\t' + str(blob.data.shape)

159             #for layer_name, param innet.params.iteritems():

160         #print layer_name + '\t' +str(param[0].data.shape), str(param[1].data.shap    e)

161             feat= net.blobs['conv1'].data[0, :36]

162             vis_square(feat)



你可能感兴趣的:(Faster Rcnn end2end训练流程(txt格式标签))