Github上Faster-RCNN_TF代码填坑

Github仓库地址:https://github.com/smallcorgi/Faster-RCNN_TF
这是一个python-Tensorflow版本的Faster-RCNN,在实际运行测试的时候,出现了一些问题,找了N个博客也算是终于把问题解决了,在此总结一下,供我自己以及需要的朋友以后参考。

本机关键配置

  • System: Ubuntu 16.04
  • GPU: TitanX with Cuda9.0 Cudnn7.1.1
  • ENV: python2.7 tensorflow1.6-gpu

配置步骤

以下内容以已clone了仓库为前提,如果还没有请(一定要带–recursive,否则可能获得的仓库内容不完整):

git clone --recursive https://github.com/smallcorgi/Faster-RCNN_TF.git

1 安装必要的python-package

pip install cython python-opencv easydict
pip install pyyaml

说明: 其中pyyaml包是在实际运行demo的时候,会有import yaml的操作需要,如果没有的话,会报错 “No module named yaml”,看到有的博客说通过下载源码安装……个人觉得没必要那么麻烦

2 编译自定义的动态链接库

仓库的作者自己定义了一些库文件,可以看到在lib文件夹下,有nms、roi_pooling_layer和utils里面有一些cpp之类的文件,需要通过编译产生对应的so文件,然后才能被tensorflow调用。进入lib文件夹,直接输入make就会自动执行相应脚本进行编译。

cd lib
make

在这个环节会遇到特别多的坑,有的是在编译阶段出现的,有的是在运行demo的时候出现的,但归结起来,问题主要在于make.sh文件,对应遇到的问题,按照如下方式修改

2.1 修复fatal error: nsync_cv.h: No such file or directory

参考博客:https://blog.csdn.net/jacke121/article/details/79519068
对nvcc和g++两个的编译命令后的-I $TF_INC进行扩充:
原来的部分:

-I $TF_INC

扩充成:

-I $TF_INC -I $TF_INC/external/nsync/public

一般使用虚拟环境会遇到这个问题

2.2 修复warning:from a host device

参考博客:https://blog.csdn.net/xiezongsheng1990/article/details/80752225
在nvcc后面添加

nvcc -std=c++11 ...此处省略后面原有的所有内容... --expt-relaxed-constexpr

2.3 修复roi_pooling.so: undefined symbol: _ZTIN10tensorflow8OpKernelE

参考博客:https://blog.csdn.net/zhongxinleishi/article/details/78972944
这个问题是由于找不到tensorflow的一些lib导致的
在第二行添加TF_LIB

TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')

然后在g++命令后面把这个变量添加进去,并加上 -ltensorflow_framework

g++ -std=c++11 ...省略... -I $TF_INC -L $TF_LIB -ltensorflow_framework ...省略后面的...

2.4 修复roi_pooling.so: undefined symbol: ZN10tensorflow7strings6StrCatERKNS0_8AlphaNumES3

参考博客:https://blog.csdn.net/xiezongsheng1990/article/details/80752225
在g++的第一行最后加入 -D_GLIBCXX_USE_CXX11_ABI=1 字段即可
这个问题可能不同系统情况下也不一样,有的是0有的是1,都试一下~
g++的第一行扩充为如下内容:

g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc -D_GLIBCXX_USE_CXX11_ABI=1 \

3 运行demo测试配置是否成功

首先需要下载model “PASCAL VOC 2007”
谷歌网盘那个链接似乎打不开,Dropbox的仍然可以使用,这里也有百度网盘的备份 [zm7r] ,model_path为VGGnet_fast_rcnn_iter_70000.ckpt文件的路径

python ./tools/demo.py --model model_path

这个地方如果按照原来README.md里面步骤会出现没有pyyaml的错误,参考步骤1

训练后续会再补充…

你可能感兴趣的:(深度学习模型)