py-faster-rcnn 安装、测试和训练自己的数据
系统环境:Ubuntu16.04+CUDA8.0+Cudnn5.1
py-faster-rcnn安装和测试
参考这篇博客Ubuntu16.04+GT720M + Cuda8.0+py-faster-rcnn(caffe)
注:没有使用Cudnn
用py-faster-rcnn训练自己的数据
参考这篇博客
Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
使用的数据集是ImageNet带有bbox的kit fox子类,编号是n02119789。
注:kit fox数据集有800多张图片,但含有bbox的只有300多张,需要自己写脚本挑选出可用的300多张样本,生成trainval.txt和test.txt。
在训练自己的数据过程中出现的问题总结
问题1:TypeError: ‘numpy.float64’ object cannot be interpreted as an index
正如错误所指出的,源程序出错出涉及到的numpy数组的索引出现了float型,在numpy1.11.0中这不会报错,但你的numpy版本若比较新,就会报错。具体解决办法可参考这里,建议改动源程序,在相应出错处把float型强制转换成int型,若是numpy的float类型,用.astype(np.int)
进行转换。
问题2:File “/home/ygj/EclipseWorkspace/py-faster-rcnn-Sun2012/tools/../lib/datasets/pascal_voc.py”, line 249, in _write_voc_results_file
with open(filename, ‘wt’) as f:
IOError: [Errno 2] No such file or directory:…
这个问题应该是模型训练完写结果文件的时候没有找到要写的文件,并不影响模型的测试(当然可以按出错提示建立缺少的相应目录和文件夹再跑一遍就不会报错了,还会输出测试集中每类的平均得分)。按照上面博文修改demo.py(把类别标签换成自己数据的类别标签,caffemodel模型换成训练生成的模型再把测试图片换一下)进行测试即可。
最后再贴一张结果图,效果还是可以的(不过貌似我选的数据集还是不太合理,因为我是拿在ImageNet上预训练的ZFNet训练kit fox的,囧!)