Faster Rcnn end2end训练流程(Pascal格式数据集)

前言赘述几句:本文有参考过其他大佬写的文档,但时间久远记不清了。侵删。求职季攒人品,把自己整理过的东西发出来分享一下,本人很水,以下流程也比较机械,有不合适的地方欢迎指出。


1.将数据集所有标签复制到'/home/jiangshan/py-faster-rcnn/data/VOCdevkit2007/VOC2007/Annotations'目录下。

2.将数据集所有图片复制到'/home/jiangshan/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages'目录下。

3.将'/home/jiangshan/py-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main/'目录下的test.txt文件、train.txt文件、trainval.txt文件、val.txt文件内容清空。

然后执行Desktop目录下的matlab文件generate_sets.m文件,命令为:

>>matlab

>>cd /home/jiangshan/Desktop/

>>generate_sets(不需要加后缀名)

其它需要改的文件:

4.lib/datasets/下的pascal_voc.py(修改类别)和factory.py(添加新数据集?好像不用。。)

5.models/pascal_voc/下存放相应的模型配置文件,打开相应的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

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

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

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

7.lib/datasets/imdb.py文件:

找到append_flipped_images函数,修改

widths = self._get_widths()

这一行,为:

widths = [PIL.Image.open(self.image_path_at(i)).size[0]

  fori in xrange(num_images)]

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/VOCdevkit2007/annotations_cache中的文件删除。

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

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

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

12.检查一下显卡情况:

执行nvidia-smi命令。

12.开始训练:

进入py-faster-rcnn目录,执行:

./experiments/scripts/faster_rcnn_end2end.sh0 ZF pascal_voc

注----格式:

#./experiments/scripts/faster_rcnn_end2end.sh GPU NET DATASET [options args to{train,test}_net.py]

# DATASET is either pascal_voc or coco.

 

注:建议开一个tmux窗口来跑。



你可能感兴趣的:(Faster Rcnn end2end训练流程(Pascal格式数据集))