实验需要利用Faster RCNN来训练自己的数据集,于是小白决定先利用网上现有的数据先来跑通网络,了解程序的流程。
配置实验环境时踩坑较多,所以写下来记录一下。
源码地址及操作步骤:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
>> cd Faster-RCNN-TensorFlow-Python3.5-master/data/coco/PythonAPI
>> python setup.py build_ext --inplace
>> python setup.py build_ext install
数据集我用的是voc2007,可以在这里下载:http://host.robots.ox.ac.uk:8080/pascal/VOC/voc2007/#devkit
对应文件夹位置如图
VGG16模型预训练权重下载地址:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
对应文件夹位置如图
然后就是开始训练数据了,运行train.py.
按照以上步骤运行train.py文件时遇到第一个问题:
ImportError: No module named '_pywrap_tensorflow_internal'
后来在这里找到了答案:https://stackoverflow.com/questions/43577923/cannot-import-tensorflow-for-gpu-on-windows-10
解决方法:把自己安装的cuda/bin文件夹下,把cudnn64_6.dll 文件改名为 cudnn64_5.dll。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin.#一般的所在位置
本以为就大功告成,又来了一个bug!
ModuleNotFoundError: No module named 'lib.utils.cython_bbox'
from lib.utils.cython_bbox import bbox_overlaps
ModuleNotFoundError: No module named 'lib.utils.cython_bbox'
这个问题困扰了我好久,真的很烦,后来我才发现自已的python 版本出了问题,说实话原本知道教程上说是用Python 3.5,我之前一直装的是Python 3.6,本想偷懒不换版本 ,ε=(´ο`*)))唉,惨痛的教训。所以我的解决方法是重装了python 3.5。[衰.jpg]解决上面两个问题后,就开始开心地训练了,搓手等待结果吧(源码设置了迭代40000次)上面参数没改的话训练时间大概要5个多小时。
--------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------
后来偶然又用这个代码又跑了一次实验,发现又冒出来个新的bug......
AttributeError: 'NoneType' object has no attribute 'astype'.
按道理讲之前是完全跑的通的,现在这问题多半是其它因素,仔细看下,发现唯一不同的就是项目路径中写了中文 。好吧改了之后一切又回到正轨。
训练完成后,程序默认的模型保存的路径在下面这个位置。
Faster-RCNN-TensorFlow-Python3.5-master\default\voc_2007_trainval\default
下面就到了检验模型的时刻了,运行demo.py,不过在此之前需要将demo.py的第108行原来默认的res101,改成我们现在用的vgg16。就是下面这个位置。
如果改完上面直接运行demo.py还可能出现下面的问题,
OSError: output\vgg16\voc_2007_trainval+voc_2012_trainval\default\vgg16_faster_rcnn_iter_70000.ckpt.meta not found.
这个问题解决要两步走,第一步是先修改一下训练权重的的保存位置,先新建一个名为output的文件夹,具体的文件名就按它报错的位置跟着新建就行如下图。
第二步就是后面那个迭代70000次的那个问题了,因为默认的最多迭代次数是40000次,所以不加修改前保存的模型应该是最多保存到40000次对应的模型的,需要将demo.py文件中的第39行对应的迭代次数名给改一下,当然如果你之前训练的模型里面包含70000次这个,这步就是不必要的了。
Duang,Duang,然后就开始运行demo.py文件了,下面放一张检测结果图
第一次写博客很激动,难免出现问题,欢迎各位大佬批评指正。最后感谢源码的创作者dBeker的无私贡献。