折騰faster-rcnn(一)--配置篇

標(biāo)簽:深度學(xué)習(xí) Linux
Platform:ubuntu 16.04 LTS + CUDA 8.0 + OPENCV 2.4.13 + Python 2.7
四月份就要開(kāi)始做畢業(yè)設(shè)計(jì)的相關(guān)工作了。跑起來(lái)rcnn這是實(shí)現(xiàn)畢業(yè)設(shè)計(jì)的第一步,大概分為一下三個(gè)方面:

  • caffe的編譯
  • OPENCV的編譯
  • RCNN的編譯
    注意,編譯的時(shí)間根據(jù)機(jī)器不同可能非常長(zhǎng),因此請(qǐng)做好玩手機(jī)或做其他事情的準(zhǔn)備。從今天開(kāi)始,小論文寫(xiě)完,等面試結(jié)果,以及做畢業(yè)設(shè)計(jì),要不然無(wú)法畢業(yè)啊!!!

caffe的編譯

這一章入的坑不多,如果你是第一次裝Ubuntu,先得自己動(dòng)手解決Nvidia開(kāi)源顯卡驅(qū)動(dòng)Xorg的問(wèn)題。建議先通過(guò)系統(tǒng)設(shè)置的附加驅(qū)動(dòng)先干掉Xorg提供的驅(qū)動(dòng),然后裝CUDA,記住一定要重新裝一遍顯卡驅(qū)動(dòng)啊,反正至少在Windows下如果不裝一遍CUDA里的顯卡驅(qū)動(dòng)那么獲取Compute Capability時(shí)會(huì)出問(wèn)題,還得重裝一遍CUDA多麻煩。這時(shí)候裝不裝CUDA包里的驅(qū)動(dòng)都無(wú)所謂了。這里編譯的caffe不是RCNN用到的caffe,作者略微修改了,但通過(guò)這個(gè)步驟可以驗(yàn)證caffe的依賴是否都已經(jīng)滿足。

下載caffe源碼

BLVC caffe下載caffe的源碼,建議先從Ubuntu環(huán)境搞起,原生支持,遇到問(wèn)題查的資料比較多。在Ubuntu下折騰久了自然就對(duì)Windows下caffe編譯駕輕就熟。然后解壓至用戶目錄,好找。

安裝依賴

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

修改Makefile.config

這一步很重要,不修改根本沒(méi)法編譯。重要的點(diǎn)有:

  1. USE_CUDNN := 1,這里筆者暫時(shí)沒(méi)有取消注釋,具體原因見(jiàn)后。
  2. WITH_PYTHON_LAYER := 1,Python接口選項(xiàng),一定要選
  3. include和lib目錄:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

編譯

從這就正式編譯了,下面命令的X是多線程參數(shù),跟CPU核數(shù)一致即可,你會(huì)看到所有CPU的使用率都是100%。一般X取2,4,8,16。第三條命令是對(duì)所有編譯的測(cè)試,從這可以看出編譯是否成功。

sudo make all -jX
sudo make test -jX
sudo make runtest -jX
sudo make pycaffe -jX

總結(jié)

Hardware Platform Time Cost(min)
Xeon E5530 22
GT 620(CUDA Compute Capability:2.1) 14
GTX 960M(CUDA Compute Capability:5.0) 1

上面的編譯工作完成后,我們可以初步試水caffe。這里跑了下mnist的訓(xùn)練,不同平臺(tái)訓(xùn)練時(shí)間如下:

Hardware Platform Time Cost(min)
Xeon E5530 22
GT 620(CUDA Compute Capability:2.1) 14
GTX 960M(CUDA Compute Capability:5.0) 1

OPENCV的安裝

筆者一開(kāi)始準(zhǔn)備偷懶采用其他人寫(xiě)的OPENCV一鍵下載編譯腳本的,后來(lái)發(fā)現(xiàn)略有問(wèn)題,因此還是按照官方文檔手工編譯。
下載源碼opencv2.4.13,這里由于caffe寫(xiě)配置文件的時(shí)候默認(rèn)就是opencv2,如果使用opencv3請(qǐng)修改配置文件。

進(jìn)入源碼,創(chuàng)建release目錄

cd opencv-2.4.9
mkdir release 

安裝opencv依賴

sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev

進(jìn)入release目錄,編譯

cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make install

RCNN的編譯

這一章可就厲害了,不光是要重新編譯caffe框架(RCNN也是基于框架寫(xiě)的,從作者github上git),而且編譯的時(shí)候會(huì)遇到各種各樣的問(wèn)題,大家最好有心理準(zhǔn)備。總之,這一章集成度比較高,一句話:缺什么補(bǔ)什么。

兩個(gè)依賴的安裝

sudo pip install cython
sudo pip install easydict

下載&編譯caffe

注意哦,這里的caffe應(yīng)當(dāng)是從py-faster-rcnn on Github上down下來(lái)的,為了區(qū)分暫且稱這個(gè)叫rcnn-caffe,第一章寫(xiě)的叫caffe。如果看到py-faster-rcnn目錄下的caffe是空的就對(duì)了,不知道GitHub是什么原理,rcnn那個(gè)caffe 如果通過(guò)下載zip文件的方式是不會(huì)下載下來(lái)的。這一點(diǎn)之前并不知道,因此看其他人的教程的時(shí)候云里霧里的,這啥都沒(méi)有啊!!!
將下載的文件解壓到py-faster-rcnn下相應(yīng)目錄,然后這時(shí)候就可以拷貝caffe的配置文件啦,上面那個(gè)caffe之所以沒(méi)有打開(kāi)cuDNN選項(xiàng)就是因?yàn)檫@里作者改過(guò)的rcnn-caffe不支持cuDNN5.0,編譯的時(shí)候容易出問(wèn)題。然后,就和caffe一樣的方法編譯以及測(cè)試,一般不會(huì)出問(wèn)題啦,上面都編譯過(guò)了嘛~

測(cè)試RCNN

編譯到這就完成了,其實(shí)也就是caffe再編譯一遍。接下來(lái)就是測(cè)試RCNN的流程。
下載Faster RCNN檢測(cè)器

cd py-faster-rcnn
./data/scripts/fetch_faster_rcnn_models.sh

運(yùn)行demo,不帶任何參數(shù)的是VGG16 net,需要大約11G顯存,估計(jì)大多數(shù)顯卡都跑不動(dòng)吧,所以可以加運(yùn)行參數(shù)選擇較小的zf net,但記住哦,顯存還需3G左右,如果提示類似于:
Check failed: error == cudaSuccess (2 vs. 0) out of memory
這就是顯存不夠了,試著改網(wǎng)絡(luò)參數(shù)也好,換CPU模式跑也好,跟本教程無(wú)關(guān)

./tools/demo.py
./tools/demo.py --net zf

Q&A:

  1. 編譯rcnn-caffe出現(xiàn)
Error parsing text-format caffe.NetParameter: 244:21: Message type "caffe.LayerParameter" has no field named "roi_pooling_param".

那是你自己沒(méi)看清楚教程,安裝的是caffe官方的版本吧,請(qǐng)從py-fast-rcnn的github主頁(yè)上git。

2.出現(xiàn)

Makefile:563: recipe for target '.build_release/src/caffe/layers/hdf5_data_layer.o' failed

解決方案:一定修改Makefile.config,將include和lib改為:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

3.出現(xiàn)

Makefile:563: recipe for target '.build_release/src/caffe/layers/bnll_layer.o' failed
make: *** [.build_release/src/caffe/layers/bnll_layer.o] Error 1

解決方案:將Makefile.config中cudnn注釋掉,不知為何官方的caffe可以打開(kāi)cudnn選項(xiàng),而這版caffe不行。據(jù)說(shuō)是不支持cudnn5.0,亟待解決
4.make test時(shí)出現(xiàn):

Makefile:563: recipe for target '.build_release/src/caffe/test/test_smooth_L1_loss_layer.o' failed

解決方案:修改src/caffe/test/test_smooth_L1_loss_layer.cpp,為test_smooth_L1_loss_layer.cpp.orig,打開(kāi)這個(gè)文件刪掉第11?行報(bào)錯(cuò)的頭文件#include "caffe/vision_layers.hpp"
5.編譯 pycaffe時(shí)報(bào)錯(cuò):fatal error: numpy/arrayobject.h沒(méi)有那個(gè)文件或目錄
其實(shí)已經(jīng)裝好了numpy,但還要執(zhí)行以下命令重新裝一遍numpy:

sudo apt-get install python-numpy

反之在上面命令已經(jīng)輸入的情況下,如果還報(bào)錯(cuò)就在根目錄下:

sudo pip install numpy

5.make runtest時(shí)出現(xiàn):

.build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
Makefile:526: recipe for target 'runtest' failed
make: *** [runtest] Error 127

解決方案:
32-bit: sudo ldconfig /usr/local/cuda/lib

64-bit: sudo ldconfig /usr/local/cuda/lib64

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,250評(píng)論 6 530
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 97,923評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,041評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,475評(píng)論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,253評(píng)論 6 405
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,801評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,882評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,023評(píng)論 0 285
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,530評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,494評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,639評(píng)論 1 366
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,177評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,890評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,289評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,552評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,242評(píng)論 3 389
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,626評(píng)論 2 370