天天看點

關于在ubuntu14.04下搭建py-faster-rcnn環境時所遇到的一些坑

首先聲明一下,這是本人自己搭建py-faster-rcnn所遇見的一些坑,不會涵蓋所有的問題,因為很多問題的解決方法網上都有。

再談一下,既然網上都有解決方法,為什麼我還要寫,因為網上的一些教程說的不是很全面,提供的方法并不能完全解決該問題,是以我覺得有必要寫點什麼,供大家參考。

第一次寫部落格,希望能對大家有所幫助,大家遇到一些其他的問題,歡迎留言讨論。

首先本人作為一個小白,第一次接觸圖像處理方面的東西,通過查閱文獻找到了faster-rcnn這個架構。

論文名稱:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks  論文連結

如果想對該算法有個較為清晰的了解,推薦這篇部落格:部落格連結  知乎上的這篇介紹一些檢測方法曆史的文章也不錯:文章連結

該架構的一個應用,華南理工大學的團隊利用該架構赢得了一個手部檢測國際比賽的第一名。比賽連結

還是回歸正題,聊聊搭環境的事情吧。首先得講下硬體軟體環境了:

硬體:GTX970 (顯示卡顯存至少3G以上)

軟體:ubuntu 14.04 64位系統

環境說明:運作Faster-rcnn中的最小的zf網絡也需要3個G顯存,如果想要在純cpu環境下運作demo的話,可以參考這篇文章:http://www.cnblogs.com/justinzhang/p/5386837.html

但是如果想要自己訓練資料集,本人暫時沒有找到教程在純cpu環境下進行訓練,即使可以,那也沒法用zf和VGG網絡進行訓練。

如果要裝雙系統,那麼參考百度經驗就可以了,想要說的是,在用easybcd做引導的時候,類型要選擇GRUB模式,百度經驗裡面沒說清楚,進階設定中的Drive選BOOT,如果分區分好了,會出現BOOT選項。

然後安裝好之後,現在就是有了ubuntu14.04的裸機,然後就先裝一波依賴包吧。

據我的不完全統計有這麼幾個:git、setuptools、cython、numpy、pip、 python-opencv, easydict、python-yaml

具體安裝方法,包括了apt-get和pip install,具體怎麼裝,可以自行百度,我這邊就不細講了。

這些依賴包有些是安裝工具,有些是環境需求。

這些包安裝好後,我們正式開始搭建py-faster-rcnn。

1. 下載下傳py-faster-rcnn源碼:源碼連結

下載下傳方式是用git,

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

2.按照github上的readme是要在lib檔案夾下進行make,但是實際情況是如果你caffe沒裝好,建議别着急make,因為make中依賴cuda。

是以這一步我們先裝caffe,具體安裝caffe的教程可以參考官網和這篇文章 http://blog.csdn.net/ubunfans/article/details/47724341

這篇文章寫的還是很不錯的,基本順序按照部落格的走就行,但是需要看一下我的幾個注意點再安裝:

  2.1建議cuda使用 cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb這個版本的,也就是V7.5,cudnn選擇cudnn-7.0-linux-x64-v4.0-prod.tgz這個版本,也就是V4.0

如果你選了V5.0,安裝之後運作demo會出錯,雖然網上有糾錯教程,但是略麻煩,是以就用V4版本就好了。;

  2.2安裝cuda之前要更新gcc,之前沒有注意到這點也走了不少彎路,gcc更新教程可以參考這篇文章:http://www.cnblogs.com/loveidea/p/4384837.html

  2.3在安裝好cudnn之後,需要更新軟連結,因為我們用的是V4版本,就不能跟上面那篇部落格中的一樣了,要将5改成4,具體版本号可以cd /usr/local/cuda/lib64/ 然後搜尋一下檔案夾中libcudnn.so.X的這個X是幾,我的是4.0.7那麼對應的指令就是:

sudo chmod +r libcudnn.so.4.0.7
sudo ln -sf libcudnn.so.4.0.7 libcudnn.so.4
sudo ln -sf libcudnn.so.4 libcudnn.so
sudo ldconfig
           

  2.4安裝到編譯caffe這一步,這時候大坑來了,特别注意Makefile.config這個檔案,需要去掉注釋的地方:

USE_CUDNN := 1 
 
           
ANACONDA_HOME := $(HOME)/<strong>anaconda2 </strong> 
 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \  
         $(ANACONDA_HOME)/include/python2.7 \  
         $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
           
WITH_PYTHON_LAYER := 1  
           

那篇部落格教程裡面的config檔案還是不太對的,特别是這個anaconda現在檔案夾都是加了個2,即anaconda2,還有就是下面的python_include的三行都要去掉注釋,不然運作demo會出錯。

  2.5在make的時候,基本上都是要加sudo,不然會報錯權限不夠,此時就是各種坑會出現的時刻,首先我貼一個文章,有些錯誤我沒遇到,但是有人總結了:文章連結

  2.6在這裡我想提一下cmake和make的問題,官網上提供了另一種方法,cmake,大家最好還行先用make,然後如果遇到ImportError: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory問題的話,再用cmake。

  2.7在make test時基本都會報錯,說缺少vision_layer.hpp之類的問題。找了很久,才發現這個新版本的caffe跟老版本的不一樣,gitclone py-faster-rcnn的時候下載下傳下來的是新版本caffe,但是vision_layer.hpp是老版本也就是原作者的版本裡面的,是以真的很坑,我後來就将include/caffe檔案夾下的缺少的幾個hpp檔案手動複制到了我的caffe-fast-rcnn/include/caffe/下,具體哪幾個大家自己對比看一下就好了,但是我的make test還是運作不成功,因為查到這個test不成功不影響faster-rcnn的運作,是以我就沒管了。

3.現在開始到lib檔案加下進行make,然後就可以運作demo了,此時又一坑來了,這時候就會發現各種問題,首先有個文章總結了一些問題:http://blog.csdn.net/jiajunlee/article/details/50373815

但是呢,這篇文章也有一點小瑕疵,比如我遇到了“undefined symbol _nms”這個問題,按照文章中的改法改完後,依然是沒用的,為什麼呢,因為按照文章中的改法,改完之後,需要重新在py-faster-rcnn/lib檔案夾下重新make,這樣才能生成新的gpu_nms.so檔案,當然也可能是因為我沒什麼經驗,是以我說這個也是為了其他小白們。也就是建議大家修改了其他的檔案之後,可能需要重新的make之類的操作,不然修改也不生效。

4. 另外附上幾個我遇到的問題以及解決方法。

  4.1 version `GLIBCXX_3.4.20' not found   解決方法:http://www.ithao123.cn/content-10627395.html

  4.2 Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so  說到這個問題,就因缺絲挺了。首先,網上關于這個問題的解決方法不多,搜了搜基本都說是要裝inter mkl,我就傻乎乎的裝了一整天,因為首先要去intel公司網站申請個學生帳号,然後再下載下傳,先下了17版本的,檔案挺大的,然後又說不行要裝2015版的,我又卸了17版本重裝15版本,搞了一天吧,真是坑啊,安裝完之後興高采烈地跑了一下demo.py,然而并沒有什麼卵用,還是出現這個錯誤,這我就無語了啊,然後我就扔了不管了,第二天晚上再重新研究了一下,我先在我系統裡全文搜尋了一下libmkl_avx2.so,除了我安裝的mkl檔案夾下有,那個anaconda2檔案夾下也有啊。。。那怎麼還出現這個問題呢,然後我手一抖輸入了sudo ./demo.py 然後問題就沒有了。此時,我隻能,呵呵呵呵.....

  4.3 另外,我之前在沒有好顯示卡的機子上搭了一個隻用cpu跑demo的環境,大家可以參考這篇文章,親測可用:http://www.cnblogs.com/justinzhang/p/5386837.html

由于實在是被網上的一些不完整的教程給坑慘了,是以想自己寫一篇,希望能作為網上一些其他教程的補充吧,讓小白們少走一些彎路。至于一些其他的問題,如缺少什麼什麼依賴包,大家百度一下基本也能解決。

最後,歡迎大家批評指正或留言讨論,第一次寫格式看起來有點累,待我摸索一下分段。

繼續閱讀