一、前言
本篇主要记录Faster rcnn 采用alt opt 训练方式做训练
二、制作自己的VOC2007格式的数据集
这一部分可以参考 end to end 训练篇 https://mp.csdn.net/postedit/96730858 的章节二,这里不再重复
三、采用VGG_CNN_M_1024模型训练
1 、修改models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt/stage1_fast_rcnn_train.pt
a 将 data 层的 num_classes 改为 你的类别数+1
b 将cls_score 层的 num_output 改为 你的类别数+1
c 将 bbox_pred 层的 num_output 改为 ( 你的类别数+1)×4
2、修改models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt/stage1_rpn_train.pt
a 将 input-data 层的 num_classes 改为 你的类别数+1
3、修改models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt/stage2_fast_rcnn_train.pt,同样修改:
a 将 data 层的 num_classes 改为 你的类别数+1
b 将cls_score 层的 num_output 改为 你的类别数+1
c 将 bbox_pred 层的 num_output 改为 ( 你的类别数+1)×4
4、修改models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt/stage2_rpn_train.pt
a 将 input-data 层的 num_classes 改为 你的类别数+1
5、修改models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt/faster_rcnn_test.pt
a 将cls_score 层的 num_output 改为 你的类别数+1
b 将 bbox_pred 层的 num_output 改为 ( 你的类别数+1)×4
6、将 lib/datasets/pascal_voc.py 当中的 classes 改为你的类别,这里是 receipt
四、清除缓存以及下载预训练模型
1、训练前清空缓存文件夹:
data/cache/
data/VOCdevkit2007/annotations_cache/
删除 output 文件夹,该文件夹将生成训练得的权值文件
2、为加快训练,可使用由imagenet数据集预训练得到的模型
下载地址:
链接: https://pan.baidu.com/s/1kUOD6hNE1DkBD0X07Wmf_g 提取码: iuyp
使用其中的 VGG_CNN_M_1024.v2.caffemodel
五、学习率以及跌代次数修改
在py-faster-rcnn/models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt中的solve文件设置,迭代次数可在py-faster-rcnn\tools的train_faster_rcnn_alt_opt.py中修改:
max_iters = [80000, 40000, 80000, 40000]
分别为4个阶段(rpn第1阶段,fast rcnn第1阶段,rpn第2阶段,fast rcnn第2阶段)的迭代次数。可改成你希望的迭代次数。
如果改了这些数值,最好把py-faster-rcnn/models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_alt_opt里对应的solver文件(有4个)也修改,stepsize小于上面修改的数值。
六、开始训练
进入py-faster-rcnn,执行:
./experiments/scripts/faster_rcnn_alt_opt.sh 0 VGG_CNN_M_1024 pascal_voc
七、demo
将训练得到的 output/faster_rcnn_alt_opt/voc_2007_trainval/VGG_CNN_M_1024_faster_rcnn_final.caffemodel 拷贝至 data/faster_rcnn_models
修改 tools/demo.py:
在 py-faster-rcnn 下执行:
python demo.py --net vgg_m --cpu