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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM