(本博客适合学习目标检测的纯新手在笔记本电脑上运行demo)
环境:
win7/10
pycharm 2019.3
anaconda3
Tensorflow(版本随意,自己是1.x且是CPU版本)
python3.6
VS2017
Faster-RCNN源码下载:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
一 . 下载源码以及源码环境准备
- 环境准备
在github上下载源码解压(文件很小只有几MB),建议新手仔细阅读readme文件,除了py版本是3.5,其它基本上和说明一样。
安装python包(cython,python-opencv,easydict)
pip install Cython
pip install python-opencv
pip install easydict
(安装包时有时网速过慢,建议使用手机热点,自己下载国外文献时也是使用手机热点)
打开pycharm的Terminal,分别运行:
python setup.py build_ext --inplace
python setup.py build_ext install
提示:安装VS2015的库,否则会报错 “error: Unable to find vcvarsall.bat”
(自己安装的是VS2017)
接下来的步骤非常重要:
**注意:**由于自己使用的是py3.6而下载出来是基于py3.5版本的所以需要在setup.py文件中更改:
更改之前直接运行demo会出现:
'lib.utils.cython_bbox’无法识别。
出错语句:from lib.utils.cython_bbox import bbox_overlaps
找了很多博客,主要原因是由于下载下来的github上是基于py3.5,在路径:Faster-RCNN-TensorFlow-Python3.5-master/lib/utils下只有cython_bbox.cp35-win_amd64.pyd文件,如图:
方法:
第一步:在Faster-RCNN-TensorFlow-Python3.5-master/data/coco/PythonAPI/setup.py中,更改第16行(注意缩进):
在上图中注意记得添加15行的“,”
从第10行到底21行代码如下:`
Extension(
'pycocotools._mask',
sources=['../common/maskApi.c', 'pycocotools/_mask.pyx'],
include_dirs = [np.get_include(), '../common'],
extra_compile_args=[],
),
Extension(
'lib.utils.cython_bbox',
sources=['../../../lib/utils/bbox.c', '../../../lib/utils/bbox.pyx'],
include_dirs = [np.get_include(), '/lib/utils'],
extra_compile_args=[],
)`
注意上面代码中source,这是一个相对路径,也可以改为绝对路径,如果你下载的是源码,使用这个就可以,但更改的时候记得两个都改。
第二步:
使用VS编译python程序(其实使用pycharm直接运行也可以,自己参考的是:https://blog.csdn.net/u010554381/article/details/86233339,非常感谢)
1)打开VS2015 X64 本机工具命令提示符;
2)同样激活tensorflow环境(activate tensorflow),进入到源码的路径下(cd 自己的路径\Faster-RCNN-TensorFlow-Python3.5-master\data\coco\PythonAPI),运行:
python setup.py build_ext --inplace;
VS2017运行相关图片:
成功生成文件在Faster-RCNN-TensorFlow-Python3.5-master/data/coco/PythonAPI/lib/utils的路径中:
将生成的三个文件复制到:Faster-RCNN-TensorFlow-Python3.5-master/lib/utils,如图:(其实只需腐蚀.pyd结尾的文件就可以)
2.下载模型
VGG16模型预训练权重下载地址:http://download.tensorflow.org/models
下载模型VGG16 ,放入Faster-RCNN-TensorFlow-Python3.5-master\data \ imagenet_weights \ vgg16.ckpt”,记得把文件名从“VGG_16”更改为“VGG16”或“vgg15”
将demo.py的第108行原来默认的res101,改成我们现在用的vgg16。
如图:
到这里我们可以直接运行demo.py,记住在Terminal中运行,直接run会出现:
Unknown command line flag ‘net’. Did you mean: network ?
在控制台:
python demo.py
运行成功,贴图一张:
- 下载数据集并训练
官网地址:
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
将以上三个压缩包解压到同一个文件夹下,然后同时选择三个压缩包,右键,然后选择解压到当文件夹下,会得到一个VOCdekit然后将其改为VOCdevkit2007,然后将这个文件夹拷贝到Faster-RCNN中data目录下,如图:
然后在Terminal中:
python train.py
- 修改相关训练参数
有时训练时间太长,测试是否完全跑的通,你可以在config.py中设置, 将40000改为4000,等你需要的数目:
5.训练相关错误
训练完成后,运行demo.py可能会出现:
output\vgg16\voc_2007_trainval+voc_2012_trainval\default\vgg16_faster_rcnn_iter_70000.ckpt.meta not found.
这是结果找不到,你需要新建文件output并保存就可以
以上就是自己调试过程中遇到的问题与解决办法。