py-faster-rcnn(running the demo): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+python2.7環境搭建記錄


第一次寫博客,以此紀念這幾天安裝caffe,跑faster-rcnn的血淚史.在此特別感謝網絡各路大神,來自全球各地,讓我能從中汲取營養,吸取經驗,總結規律.

faster-rcnn分為matlab版本和python版本,首先記錄弄python版本的環境搭建過程.matlab版本見另一篇:faster-rcnn(testing): ubuntu14.04+caffe+cuda7.5+cudnn5.1.3+opencv3.0+matlabR2014a環境搭建記錄

首先,進入官方github網站:https://github.com/rbgirshick/py-faster-rcnn.按照作者的步驟,一步步往下走.

1.按Ctrl+Alt+t進入終端,進入你想存放源代碼的路徑后(在此假設為dir:A),輸入:

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

--recursive大概是遞歸克隆的意思,就是把源碼中的文件夾,文件夾下的子文件夾等等全部克隆過來.最后在當前目錄下得到一個叫py-faster-rcnn的文件夾,即A/py-faster-rcnn.

2.作者接下來的意思是進入lib,輸入make來"Build the Cython modules".但是我當時沒看到這一步,直接進的下一步,事實證明,后面再做這一步也可以.請繼續往下看.

進入caffe-fast-rcnn,這時,需要編譯作者自己寫的caffe.而這就要求電腦的環境配置了.

條件:

  2.1 python2.7及各種需要的庫,如numpy等,這些庫如果不裝夜可以按照編譯報錯時的提示一一安裝.

  2.2 cuda7.5和cudnn5.1.3.cuda是電腦早就裝好的,cudnn我是按最新的裝,反正沒錯.這里有篇不錯的教程:http://blog.csdn.net/ubunfans/article/details/47724341.寫得非常好.

  需要注意的是跑matlab版本時gcc降級為4.7,而此時的python版本為4.9.gcc的版本按照該網站修改,歸根結底是修改系統gcc和g++文件的鏈接路徑:http://www.cnblogs.com/loveidea/p/4384837.html

  2.3 opencv3是在跑matlab版本的時候裝的,不知道python版本是不是也要求,裝的過程也有一些注意事項,具體請看matlab部分.

3.我們已在A/python-faster-rcnn/caffe-fast-rcnn下,發現沒有Makefile.config文件,這時就要把當時電腦編譯caffe時的config文件拷過來了,按照自己的情況進行修改.我的config文件重點部分如下:

USE_CUDNN := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda


ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
         $(ANACONDA_HOME)/include/python2.7 \
         $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
PYTHON_LIB := $(ANACONDA_HOME)/lib
 WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

4.好了,開始輸入:

make clean #這個是把以前的遇到錯誤的make記錄清除了,第一次make的時候不需要輸,問題是之后我遇到了很多錯誤.
make -j8 #這是出問題最多的地方
make pycaffe

當上面的命令非常成功地不出現錯誤的時候,congratulations,你離成功已經很近了.假設你已經走到了這一步(問題在下面討論),接下來是:

5.作者的步驟如下,不過我是輸入該.sh下的網址:http://www.cs.berkeley.edu/%7Erbg/faster-rcnn-data/faster_rcnn_models.tgz直接下載的,linux的火狐瀏覽器貌似打不開此網址,我是在另外一台windows的瀏覽器上下載的.下載完之后解壓放入A/python-faster-rcnn/data.

cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh

6.這時,該進入lib,輸入make來"Build the Cython modules".如果到這了還不執行這一步后面會發生一些奇怪的事情.特此告知.

cd python-faster-rcnn/lb
make

7.

cd python-faster-rcnn
./tools/demo.py

 大功告成:

 

問題匯總:以下列舉出整個過程我遇到的一些問題,因為當時沒總結,有些可能忘了.非嚴格按照時間順序.

1.

/util/cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’  
         pad_h, pad_w, stride_h, stride_w));  

這是由於cudnn和caffe版本不兼容造成的,具體有兩種解決思路.第一種是降低cudnn版本,比如我降到了cudnnv3.0,結果出現了另外一些低版本的問題,報錯說某些層未定義.另一種思路是提高caffe的版本,因為作者github上的caffe未能"及時升級".具體請參照這一篇神奇的博客:http://blog.csdn.net/rzjmpb/article/details/52373012

大意如下:

 

cd py-faster-rcnn/caffe-fast-rcnn  
git remote add caffe https://github.com/BVLC/caffe.git  
git fetch caffe  
git merge caffe/master 
在合並之后注釋掉include/caffe/layers/python_layer.hppa文件里的self_.attr(“phase”) = static_cast(this->phase_)

 

至於為什么注釋,我也搞不明白,也不知道該大神是怎么弄明白的,更不知道如果不注釋會不會影響到后面.

2.

libgfortran.so.3: version `GFORTRAN_1.4' not found 

參照:http://stackoverflow.com/questions/9628273/libgfortran-version-gfortran-1-4-not-found

3.

 from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \

ImportError: numpy.core.multiarray failed to import 

 

這是一個非常牛逼的錯誤,因為它涉及到ubuntu14.04的numpy最新版本問題.

這個問題是因為numpy版本太低,ubuntu14.04的numpy在numpy網最高版本是1.8.2,系統版本也是1.8.2.而這里我們需要更高的版本,如1.10

查看numpy版本的命令是:

python -c "import numpy; print numpy.__version__"

用apt-get install numpy或者pip install --upgrade numpy等發現是不能自動為系統升級numpy的,具體原因不詳.所以最后,我選擇手動升級.

進入該網站下載numpy-1.10.0.tar.gz: https://sourceforge.net/projects/numpy/files/NumPy/1.10.0/

下載完之后,解壓到dir:B,輸入以下命令:

cd B
sudo mkdir path
python setup.py build -j8 install --prefix B/path

這樣,會在path下生成兩個文件夾lib和bin.

把bin下生成的f2py去替換掉/usr/bin下的f2py;把lib/python2.7/site-packages下的所有文件去替換掉/usr/lib/python2.7/dist-packages/下的原來的文件.即可完成升級.

4 還有其他一些問題,不在此一一列舉,都是通過瘋狂百度或谷歌出來的,基本上都描述的很詳細.

 


免責聲明!

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



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