Faster R-CNN Tensorflow+python 3.5 在Windows10环境下配置实现

实验需要利用Faster RCNN来训练自己的数据集,于是小白决定先利用网上现有的数据先来跑通网络,了解程序的流程。

配置实验环境时踩坑较多,所以写下来记录一下。

源码地址及操作步骤:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5


基础环境配置:

  1. 安装TensorFlow的GPU版本,具体安装步骤可以参照这里
  2. 安装一些必要的库:cython,easydict,python-opencv,库的安装可以直接用pip 命令,当然这里的安装位置要在你自己建的的TensorFlow-gpu环境中。
  3. 在命令行中 cd 一下进入源码中所给的 /data/coco/PythonAPI文件夹下,运行编译提供的 setup.py
  4. 强调一下,最好按照源码给的参考装python 3.5。偷懒不想换原来装的其他版本会出会问题的,我就是,结果被一个bug坑了好久,具体出了什么问题,后面再说。
>> 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个多小时。

训练完成后,程序默认的模型保存的路径在下面这个位置。

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的无私贡献。

猜你喜欢

转载自blog.csdn.net/jcli1_14/article/details/81327047