pva-faster-rcnn

训练可以参考这篇文章:

http://blog.csdn.net/samylee/article/details/52860038

继fasterrcnn后,又一个pva-fasterrcnn的配置教程,希望可以帮助大家。若不能配置成功,请与我联系,邮箱:[email protected]

注意:有些复制的终端命令如果不能在终端运行,请注意英文全角半角问题,可以将命令输入终端,无须复制粘贴命令


第一部分:下载并编译pvanet
1、终端输入:
Git clone --recursive https://github.com/sanghoon/pva-faster-rcnn.git
2、建立Cython模块:
这个地方很容易错,缺什么下载什么就能解决啦,出现问题的小伙伴可以来群里讨论哈,很多问题我当时没有记录,所以来群里讨论讨论就行啦,群号你懂得
cd $pva-faster-rcnn/lib
make –j16(为啥用16相信大家也很清楚啦)
3、编译caffe及pycaffe
cd $pva-faster-rcnn/caffe-fast-rcnn
cp Makefile.config.example Makefile.config
修改Makefile.config文件:
去掉cudnn前面#(我用cudnn4.0,仅供参考
Opencv_version不用注释(我用的2.4.10,3.0没有测试过,所以不用注释
BLAS=atlas(我测试的库,mkl没有试过)(sudo apt-get install libatlas-base-dev即可安装)
去掉with_python_layer前面的#,注意一定要去掉,不然无法训练数据(测试的时候不需要)

修改后保存退出

make –j16
make pycaffe –j16


第二部分:下载预训练模型(外网真心慢啊
为小伙伴们提供百度网盘下载链接:
链接:http://pan.baidu.com/s/1kVRRPDd 密码:1cdt
1、打开文件将test.model放入$pva-faster-rcnn/models/pvanet/full/这个目录下
2、将test(1).model重命名为test.model放入$pva-faster-rcnn/models/pvanet/comp/目录下
其他的模型我就没有去试验啦,后续有时间就会更新这些模型的训练方法的


第三部分:下载voc07数据
打开终端(任何目录)输入:
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

解压(严格按照此顺序):
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

将生成的VOCdevkit文件夹更名为VOCdevkit2007移动至$pva-faster-rcnn/data/目录下面


第四部分:voc07测试预训练模型
终端输入:
cd $pva-faster-rcnn
1、full/test.model测试:
./tools/test_net.py --gpu 0 --def models/pvanet/full/test.pt --net models/pvanet/full/test.model --cfg models/pvanet/cfgs/submit_160715.yml
2、Comp/test.model测试:
./tools/test_net.py --gpu 0 --def models/pvanet/comp/test.pt --net models/pvanet/comp/test.model --cfg models/pvanet/cfgs/submit_160715.yml
此测试会得到系列类别的AP值


第五部分:预训练model训练并测试voc07数据
终端输入:
1、训练:
cd $pva-faster-rcnn
./tools/train_net.py --gpu 0 --solver models/pvanet/example_finetune/solver.prototxt --weights models/pvanet/full/test.model –iters 100000 --cfg models/pvanet/cfgs/train.yml –imdb voc_2007_trainval(其他参数默认)
训练结果会在pva根目录生成output文件夹,模型就在里面
2、测试:
./tools/test_net.py --gpu 0 --def models/pvanet/example_finetune/test.prototxt --net output/faster_rcnn_pavnet/voc_2007_trainval/pvanet_frcnn_iter_100000.caffemodel --cfg models/pvanet/cfgs/submit_160715.yml(其他参数默认)


第六部分:预训练model训练并测试自己数据
1、数据制作:
还记得fasterrcnn数据如何制作的吗?参考博客http://blog.csdn.NET/samylee/article/details/51201744
Tips:参考voc07的数据格式,我们可发现,生成的数据最后只需保留Annotations、ImageSets和JPEGImages三个文件夹即可,ImageSets/Main文件中用到的只有trainval.txt和test.txt这两个文件(数据分布:trainval=train+val,all_data=trainval+test),多类别如果增加负样本或模糊样本可以考虑1、0及-1操作(其中1表示有目标,0表示模糊目标,-1表示没有目标
数据集制作完成后将这三个文件夹复制至一个文件夹(命名为VOC2007)当中,再移动至$pva-faster-rcnn/data/VOCdevkit2007中,替换原来的VOC2007

2、类别设置:(有几类设置几类,类似fasterrcnn,我的数据集为1类行人数据)

1)打开文件/models/pvanet/example_finetune/train.prototxt

num_classes:2(开头处)(我实验时一类)

2)修改lib/datasets/pascal_voc.py

self._classes = ('__background__', # always index 0
                              'people')(只有这一类)

3)修改lib/datasets/imdb.py

 
  数据整理,在一行代码为 
   boxes[:, 2] = widths[i] - oldx1 - 1 
  下加入代码: 
  
 for b in range(len(boxes)):

      if boxes[b][2]< boxes[b][0]:

         boxes[b][0] = 0

4)修改完pascal_voc.py和imdb.py后进入lib/datasets目录下删除原来的pascal_voc.pyc和imdb.pyc文件。

5)删除:"/home/~~~~~/pva-faster-rcnn/data/cache/voc_2007_trainval_gt_roidb.pkl"


3、训练数据:
cd $pva-faster-rcnn
./tools/train_net.py --gpu 0 --solver models/pvanet/example_finetune/solver.prototxt --weights models/pvanet/full/test.model –iters 100000 --cfg models/pvanet/cfgs/train.yml –imdb voc_2007_trainval
(其他参数默认)
4、测试模型:
./tools/test_net.py --gpu 0 --def models/pvanet/example_finetune/test.prototxt --net output/faster_rcnn_pavnet/voc_2007_trainval/pvanet_frcnn_iter_100000.caffemodel --cfg models/pvanet/cfgs/submit_160715.yml(其他参数默认)




1、

出现错误operands could not be broadcast together with shapes (84,4096) (12,1)

出现这种错误主要是train.prototxt  中的文件类别没改过来,可以下载原来的VOC的num_classes进行修改

2、

Cannot copy param 0 weights from layer 'cls_score'; shape mismatch.  
Source param shape is 21 4096 (86016); target param shape is 3 4096 
(12288). To learn this layer's parameters from scratch rather than 
copying from a saved net, rename the layer.


这个错误要把对应的层rename。比如把cls_score改为cls_score1

你可能感兴趣的:(pva-faster-rcnn)