• 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天半。

  • 相关阅读:
    typescript基础语法--变量/函数/指令/类
    java获取post请求头部字符串
    spring MVC 3.2中@ResponseBody(Post接口)返回乱码的完美解决方案
    java+js正则表达式获取URL(带端口)域名
    jquery的ajax提交时加载处理方法
    js截取+全部替换+字符串
    Filter过滤器除去部分URL链接
    Eclipse常用快捷键
    CAS+Tomcat SSL第三方数据证书导入(jks)
    CAS客户端和服务器配置https证书
  • 原文地址:https://www.cnblogs.com/linkboy1980/p/6741802.html
Copyright © 2020-2023  润新知