您的位置:首页 > 编程语言

faster-rcnn tensorflow版本训练代码运行

2019-05-22 10:28 2091 查看

运行这个代码我只想说fuck fuck!好多坑啊…

我运行的代码是 smallcorgi/Faster-RCNN_T 1fb8c F版本的,其实github上大多的faster-rcnn-tf都差不多,都是照着源码写的,像这种官方的代码运行起来真费劲!

1. 运行环境
这一部分超级重要,要想少走弯路.我的运行环境ubuntu16.04 + cuda8+cudnn6+python2.7+tensorflow1.3.0github上大多的代码都是用python2写的,我也没去详细的找python3的,还有这个版本的代码最好是在cuda8上运行,我试过cuda10的,也试过cuda9的都没有运行出来,最后用了cuda8,还有一点要注意,tensorflow版本不能过高,这个作者给出的是tf1.2,由于cuda和cudnn版本问题我安装的是tf1.3.0,也可以运行,但是,过高的版本不可以,会报错,下面我会例举一些我遇到的问题,但是由于当时忘记截图,只能语言描述,但是大部分的问题都是cuda,和tf版本问题,如果你用了我说的这个版本基本不会报错.

2. 遇到的坑

  • 1


    这个就是cuda版本的问题,用cuda8(刚开始的时候不要对安装不同版本cuda太过抗拒,慢慢的就习惯了…)

  • 2

    File "/home/ubuntu/Faster-RCNN_TF/tools/../lib/networks/VGGnet_test.py", line 57, in setup .fc(4096, name='fc6') File "/home/ubuntu/Faster-RCNN_TF/tools/../lib/networks/network.py", line 25, in layer_decorated layer_output = op(self, layer_input, *args, **kwargs) File "/home/ubuntu/Faster-RCNN_TF/tools/../lib/networks/network.py", line 246, in fc feed_in, dim = (input, int(input_shape[-1])) TypeError: int returned non-int (type NoneType)

    遇到这个问题不要哭,洗个脸接着运行!
    这个就是典型的tf版本过高的问题,安装低版本的tf-gpu,但要注意,也许你安装的cuda,tf,python版本不匹配,也会报错,我尝试了好多个版本的tf,最后用了cuda8+cudnn6+tf1.3.0这个版本的

  • 3

cd $FRCN_ROOT/lib
make

After this step I am getting an error:

aquib@javed:~/Faster-RCNN_TF/lib$ make all
python setup.py build_ext --inplace
running build_ext
skipping 'utils/bbox.c' Cython extension (up-to-date)
skipping 'utils/nms.c' Cython extension (up-to-date)
skipping 'nms/cpu_nms.c' Cython extension (up-to-date)
skipping 'nms/gpu_nms.cpp' Cython extension (up-to-date)
rm -rf build
bash make.sh
make.sh: line 13: nvcc: command not found
g++: error: roi_pooling_op.cu.o: No such file or directory
g++: error: GOOGLE_CUDA=1: No such file or directory

这是啥东西?你肯定会问为什么我会这么惨,跑个代码都跑不出来…

别慌,遇到这个问题,你看看你的gcc版本,我的这个版本就是gcc+±5x的,网上说这个版本的gcc会遇到这样的问题,所以你可以试着安装gcc+±4x版本,
执行
nvcc --version

这会安装gcc+±4.9

sudo apt-get install gcc++-4.9

安装完gcc 4.9 后,你的电脑里会有gcc5x和gcc4x 两个版本,这时候

cd /usr/bin

cd到该目录下,然后会看到,有三个g++相关的东西,其中g++是个链接,我们需要删除

sudo rm -rf g++
sudo ln -s g++-4.9 g++

这两行指令,第一句是删除这个链接,第二句是新建一个链接g++指向g+±4.9

- 4
这个问题也许你会遇到,如果一开始的时候你的cuda版本不对,然后执行make了,那么make中的一些文件已经编译了,这样如果及时我们后来更改了cuda版本同样会报错,所以,要删除编译好的文件,按照指示删除指定目录下的*.pyc, .o,.so文件

  • 5
    这个问题很有意思
    ValueError: Object arrays cannot be loaded when allow_pickle=False
    定位到你自己numpy 所在的文件夹下,找到format.py文件,然后注释掉报错的代码
    出问题的是692行,注掉了,就好了。


运行这个代码遇到的坑就记得这么多了,只能说运行这种偏官方的代码真难…

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: