在ubuntu16.04系统中运行Faster RCNN的Tensorflow代码(二)

本人在上一篇博客https://blog.csdn.net/hitzijiyingcai/article/details/81347402中写到本人成功运行了Faster RCNN的Tensorflow代码,在那篇博客中本人采用的是github上的这一个代码https://github.com/endernewton/tf-faster-rcnn,同时在那篇博客中,本人写到,也实验了其他github开源代码但并未成功,但是本人今日再一次实验验证时,发现对其中提到的另一个开源代码实验成功,对于其中的一个困扰了很久的问题有了解决方法,因此记录下来。

本次本人实验的代码为https://github.com/smallcorgi/Faster-RCNN_TF,它和前一篇博客中采用的代码并不一样,而且实现的过程也不一样,下面一一描述。

本文为博主原创,转载请注明出处:https://blog.csdn.net/hitzijiyingcai/article/details/81747148

1、环境准备

此部分内容为进行faster rcnn实验所共同必备的,参见本人上一篇博客。

2、程序运行

首先在github上下载

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

下载完成之后解压可得到如图所示

注意,下载的文件夹里并没有output这一文件夹,这个是本人为了方便后续工作新建的。

解压完成之后,进入Faster-rcnn-TF的文件夹下的lib文件夹进行编译:

正常情况下编译完成之后即可进行下一步。但是相信很多人会跟我一样在这里就卡住,会出现很多错误,本人之前就是卡在这里出现的错误中,对于此部分错误的解决,在后面第三部分详细介绍,先接着按照正常的继续进行。

下一步,在测试demo之前,需要下载一个训练好的模型,在github上作者提供了两个链接,但是都需要翻墙,在这里提供一个百度云下载地址: 链接:https://pan.baidu.com/s/1zNWzMxBwQ6qVoXXvN89Peg 密码:0rtb

下载完成之后,在tools文件夹下新建一个名称为model的文件夹,把下载好的模型放进去。

接着即可运行demo,

这里,运行的格式为:

cd $FRCN_ROOT
python ./tools/demo.py --model model_path

对于model模型存放的位置,大家根据自己修改,另外,对于tensorflow版本的模型来讲,它由三个文件(后缀名为data-00000-of-00001、index、meta)组成,所以大家只需要写到ckpt即可,这里我使用的是自己的模型路径。

正常情况下,到这里就能正确运行,可以得到正确的结果,

但是假如跟我一样是在服务器上而不是在本地运行的同学来说,要注意修改一下demo.py里面的部分内容,具体可以参看本人的上一篇博客。

在这里仍然放上正确的运行结果:

到这里就算运行成功,但是前面说了,其中有很多难以预料的错误之前困扰了本人,在这里一一列出。

3、运行错误集锦

(1)编译时报错

这是再说找不到nsync文件,因此要找到自己的此文件并添加进路径。这个错误也是困扰本人最久的,因为需要添加的文件路径并不好找。

解决方法:

根据错误指示打开mutex.h文件:

vim /share2/home/qingdong/anaconda-alter/envs/tf-2.7/lib/python2.7/site-packages/tensorflow/include/tensorflow/core/platform/default/mutex.h

      添加路径:

#include “/share2/home/qingdong/anaconda-alter/envs/tf-2.7/lib/python2.7/site-packages/tensorflow/include/external/nsync/public/nsync_cv.h”


#include “/share2/home/qingdong/anaconda-alter/envs/tf-2.7/lib/python2.7/site-packages/tensorflow/include/external/nsync/public/nsync_mu.h”

这是本人的路径,替换成自己的对应路径即可。

(2)跑demo

解决办法:

修改make.sh文件:添加TF_LIB,并修改相应的编译参数

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

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

roi_pooling_op.cu.o -I $TF_INC -L $TF_LIB -ltensorflow_framework -D GOOGLE_CUDA=1 \

-fPIC $CXXFLAGS -lcudart -L $CUDA_PATH/lib64
   ......

修改后重新make,然后运行。

(3)运行demo过程中遇到的错误(之前遇到了此错误,本次没遇到)

g++: error: roi_pooling_op.cu.o: No such file or directory

解决:按如下步骤设置

(1) export PATH=$PATH:/usr/local/cuda-8.0/bin/ (你的CUDA路径) for your terminal
(2) 在$FRCN_ROOT/lib/ make.sh 文件中,将 CXXFLAGS+='-undefined dynamic_lookup'

改为 CXXFLAGS='-D_MWAITXINTRIN_H_INCLUDED'

(CUDA添加到环境变量
export PATH=$PATH:/usr/local/cuda-8.0/bin/)

部分内容参考自:

https://www.cnblogs.com/danpe/p/7825357.htmlhttps://blog.csdn.net/weixin_39970417/article/details/80577863

猜你喜欢

转载自blog.csdn.net/hitzijiyingcai/article/details/81747148
今日推荐