py-faster-rcnn+CUDA8.0+CUDNN5.0 折腾记

1:

2017年4月19号本来打算 在linux上面装个Keras+TensorFlow 学习一下 ,但是原来电脑的配置是ubuntu15.10+cuda7.5+cudnnV4+opencv3.1。

在按照 http://keras-cn.readthedocs.io/en/latest/for_beginners/keras_linux/网站教程 安装过程中出现类似下图错误(提示找不到libcudart.so.8.0))。

问题是tensorflow要求cuda8.0和cudnn5.0。于是升级cuda7.5->8.0  、cudnnv4->v5。升级完了之后,原来的py-faster-rcnn不能运行了,出现上图错误。

2 于是 在py-faster-rcnn中的caffe下面,先使用 命令 make clean 清理,然后再重新编译 。又出现错误(如下图),主要是py-faster-rcnn与cudnnV5不兼容,于是在makefile.config中关闭cudnn,编译通过。

3 然后运行 ./tool/demo.py 又出现警告(下图),其实这个警告不影响使用,就是VGG文件的大小超过了protobuf里面设置的阈值。但是看着难受,于是想回到原始的cuda7.5和cudnnV4,为了不影响py-faster-rcnn的使用。

4 中间以为是opencv3.1的问题,尝试重新编译到80%出现下图错误,后来放弃,目前还不会重装opencv。

5系统中有2个cuda版本。于是修改cuda配置文件 /etc/ld.so.conf.d/cuda.conf 设置为 /usr/local/cuda-7.5/的路径,但是还是不行。于是又把 /ld.so.conf.d/目录下面的cuda-8.0文件里面的路径改了,同时修改了

/usr/local/cuda 这个文件的软链接,这样才调用了cuda7.5的so文件。    这里记得修改好之后一定使用 sudo ldconfig。也可以使用LD_LIBRARY_PATH来设置,动态链接库的路径。

6替换cudnnv4时,不知道什么原因,在/usr/local/lib下面还是cudnnv5的文件,通过查看文件大小才发现。V5的大小是79M,V4的是61M。 再次替换一下,最后才有用了。如果只是把libcudnn.* 的文件放到/usr/local/cuda/lib 好像优先选择的cudnn的路径是/usr/local/lib ,具体不知道在哪里设置。

7过程中学习了环境变量的设置。

方法一:

  在/etc/profile文件中添加变量【对所有用户生效(永久的)】

  用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。

  要让刚才的修改马上生效,需要执行以下代码

  # source /etc/profile

  方法二:

  在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】

  用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

  要让刚才的修改马上生效,需要在用户目录下执行以下代码

  # source .bash_profile

  方法三:

  直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】

  在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

  例如:export PATH=/usr/local/webserver/php/bin:$PATH

8 如果出现下图所示的“DSO missing”错误。是由于opencv3.0的原因,在makefile文件中修改链接库。

USE_LEVELDB ?= 1
USE_LMDB ?= 1
USE_OPENCV ?= 1
LIBRARIES += glog gflags protobuf leveldb snappy 
	lmdb boost_system hdf5_hl hdf5 m

ifeq ($(USE_LEVELDB), 1)
	LIBRARIES += leveldb snappy
endif
ifeq ($(USE_LMDB), 1)
	LIBRARIES += lmdb
endif
ifeq ($(USE_OPENCV), 1)
	LIBRARIES += opencv_core opencv_highgui opencv_imgproc 

	ifeq ($(OPENCV_VERSION), 3)
		LIBRARIES += opencv_imgcodecs
	endif
		
endif

  

 

8 安装IPYTHON后,启动时出现无法import 模块

解决办法:在 /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py的  注释一行,添加一行。

9

 

修改setup.py中代码  ,确定cuda的路径是正确的。

    cudaconfig = {'home': home, 'nvcc': nvcc,
                  'include': pjoin(home,'local', 'cuda-7.5','include'),
                  'lib64': pjoin(home, 'local','cuda-7.5','lib64')}  

9 还有其他的各种坑,待补充,搞了整整1天半。

原文地址:https://www.cnblogs.com/linkboy1980/p/6741802.html