盘点Ubuntu 16.04 系统下搭建TFFRCNN的坑

1. 前言

        最近因为实验的需要,决定用faster-RCNN神经网络来改善自己的神经网络。后续的文章中会慢慢的将RCNN,Fast-RCNN,Faster-RCNN系列神经网络进行系统的比较,本文先介绍faster-RCNN在tensorflow框架下的搭建基本步骤。并填上踩到的坑。

搭建的必需部分:

  1. Tensorflow(CPU版本/GPU版本)安装:在这一部分网上有很多的文章和步骤,不再进行赘述;    注:在该步骤中比较简单的有下载清华大学的镜像,进行pip install 命令安装即可;
  2. ubuntu系统安装显卡以及cudnn安装:该部分的步骤同样是比较多,一些比较好的博客我将进行链接,请大家移步如下帖子中进行步骤安装;
  3. 获取Faster-RCNN工程文件:笔者在搭建Faster-RCNN过程中发现有些工程需要caffe框架支持,有些开发者可能同样发现了这个问题,所以在github中有不依赖caffe编译的工程,运行命令行命令git clone 即可获取工程。

    在我们完成tensorflow的测试,即在命令行中输入python,在>>>后输入

import tensorflow as tf 

没有报错即为安装成功;   

对于cudnn的安装和配置,我们只要在命令行中输入如下的命令,查看本地计算机的显卡的状态,没有错误的话,就前期准备顺利完成。

$ nvidia-smi 
闲言少叙,我们接下来慢慢填坑。

2.编译工程

  1. 从github中clone获取的工程中是up主已经训练,保存之后的工程。而将该工程克隆到本地计算机中,笔者认为需要先将$TFFRCNN/lib中所有.so文件进行删除 ,
    cd $TFFRCNN
    find lib -name "*.so" -delete
    删除之后进行make即可
  2. 编程过程第一坑: nsync_cv.h:No such file or directory,原因主要有两个:利用python虚拟环境或者因为tensorflow版本跟新找不到nsybc_cv.h文件。解决办法:在make.sh文件中的TF_INC变量下增加
    NSYNC_INC=$TF_INC"/external/nsync/public"
    然后再在文件中的g++参数最后加上 -I $NSYNC_INC 即可。然后重新make。
  3. 运行过程中出现第二坑:roi_pooling.so: undefined symbol: _ZTIN10tensorflow8OpKernelE,主要原因是make.sh文件中缺少了TF_LIB编译参数;解决办法:在make.sh 中增加TF_LIB 参数,同时增加-D_GLIBCXX_USE_CXX11_ABI=0;即:
    TF_LIB=$(python3.5 -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())') #笔者python版本为3.5 ,python可据本地版本更改 
    g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=1 -o roi_pooling.so roi_pooling_op.cc roi_pooling_op.cu.o -I $TF_INC
            -L $TF_LIB -ltensorflow_frameworfk -D GOOGLE_CUDA=1 -fPIC -lcudart -L $CUDA_PATH/lib64 -I $NSYNC_INC
    

        重新make.至此笔者的编译的坑已经踩完,后面还有坑莫慌。

3. 运行demo

    编译成功之后,我们需要运行TFFRCNN中的Demo了,首先我们需要模型,在其他博主那里有比较好的资源, 参见此链接,请读者自行下载;其中训练数据pascal VOC2007可以按照如下 获取;
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
    其中自己训练自己的数据日后再叙。
demo所需的模型VGGnet_fast_rcnn_iter_70000.ckpt下载完毕后,将模型移至TFFRCNN中的文件中,利用终端命令行运行demo文件格式如下
cd $TFFRCNN
python3.5 ./faster_rcnn/demo.py --model model_path
笔者是利用Pycharm运行,只需要编辑Run/Debug Configurations -> Parameters中添加 --model model_path即可
卡着笔者最大的坑来了:tensorflow.python.framework.errors_impl.UnknownError: KeyError: b'TEST'
因为平台的迁移,导致tf.py_func()函数出现异常,该处需要改写一点代码即可。
在lib/networks/network.py中 删除tf.py_func()参数中的[inp],即删除 cfg_key, _feat_stride, anchor_scales三个参数,
return tf.reshape(tf.py_func(proposal_layer_py, [input[0], input[1], input[2], cfg_key, _feat_stride, anchor_scales], 
[tf.float32]), [-1, 5], name=name)

return tf.reshape(tf.py_func(proposal_layer_py, [input[0], input[1], input[2]], [tf.float32]), [-1, 5], name=name)
再编辑proposal_layer_py函数,将参数cfg_key改为cfg_key ='TEST'即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值