win7下py-faster-rcnn-master下跑通demo.py



最近一直在看RCNN相關的內容,看完論文就要實現一下。我的caffe一直用的是windows平臺,而很多官方文檔都是在linux底下操作的,所以只能求助各種大神(Linux菜鳥一枚。。。)。CSDN博客上大神特別多,他們寫的很簡單,我就掉進了很多坑,每次掉進去都感覺要爬不上來了。不過,功夫不負有心人,折騰了將近一週,終於跑通了demo。

在此,特別感謝rookie_cz,遇到的很多問題都是請教這位大神,幫了我很多。

平臺:Win7
顯卡:GTX960
python IDE: Anaconda2(2.7.11)
caffe安裝包:Microsoft

下面,開始正文。
1 編譯caffe
1.1 從微軟的Github下載caffe-master,網址https://github.com/Microsoft/caffe,下載安裝包。 這裏寫圖片描述
在網頁的下方有詳細的安裝說明。
這裏寫圖片描述
我簡單做了下翻譯:
Requirements: Visual Studio 2013
Pre-Build Steps: 將.\windows\CommonSettings.props.example 複製重命名爲 .\windows\CommonSettings.props,還是同一個文件夾底下。
這裏寫圖片描述

如果電腦中沒有GPU,可以通過調整.\windows \ CommonSettings.props 中的變量禁用CUDA和cuDNN,默認情況下是支持CUDA和cuDNN的。Python在默認情況下禁用,但也可以通過\ windows \ CommonSettings.props啓用。Caffe需要的第三方依賴(用過happynear的caffe應該會知道大神自己攢了一個第三方庫)關係通過NuGet自動解析。
CUDA
從NVIDIA官網下載自己顯卡對應版本的CUDA,目前,除了1080,用的都是CUDA7.5。環境變量會自動添加,就是傻瓜式安裝。如果沒有GPU,可以在CommonSettings.props 將CpuOnlyBuild 設置爲 true ,同時將set UseCuDNN to false.
cuDNN
Download cuDNN v4 or cuDNN v5 from nVidia website. 將下載的zip解壓縮到%CUDA_PATH%(由CUDA安裝程序設置的環境變量)或者,可以將zip解壓縮到任何位置,然後CommonSettings.props.CuDnnPath處添加這個位置,我的解壓位置在D:\**\software,cuda文件夾就是解壓後的cuDNN。
這裏寫圖片描述

這裏寫圖片描述
Python
因爲要使用python接口,我們在\ windows \ CommonSettings.props中將PythonSupport設置爲true。微軟推薦的是 從Miniconda網站下載Miniconda 2.7 64位Windows安裝程序。我用的是Anaconda2,都可以。程序安裝完後,會自動添加python的路徑到環境變量中。同時,注意設置CommonSettings.props中python的路徑。
這裏寫圖片描述
另外,沒有安裝protobuf的,可以用pip install protobuf安裝。
不用pip 安裝的話,注意下載最新版本的,否則和caffe有兼容問題。
Build
雙擊.\windows\Caffe.sl打開caffe的VS工程,右鍵libcaffe重新生成,編譯libcaffe。之後編譯pycaffe,之後用的到。
Remark
編譯完成後,設置 PythonPath 環境變量值爲 \Build\x64\Release\pycaffe
或者複製 \Build\x64\Release\pycaffe\caffe 到\lib\site-packages.

2 編譯py-faster-rcnn-master
2.1 下載py-faster-rcnn-master,網址:https://github.com/rbgirshick/py-faster-rcnn,直接點擊下載後,下載的壓縮文件解壓後,裏面的caffe-fast-rcnn是空的,所以要點進去下載後,然後解壓到caffe-fast-rcnn文件中。
這裏寫圖片描述

2.2 編譯lib\setup.py,但這個setup是不能直接編譯的。我用的是rookie_cz重新整理好的newsetup.py和setup_cuda.py,鏈接:http://blog.csdn.net/chenzhi1992/article/details/53374265
然後,直接cd到lib下面,執行 python newsetup.py install 和python setup_cuda.py install。如果遇到找不到cl.exe之類的問題,把cl.exe路徑添加到環境變量中去就行了。
2.3 其實編譯完之後就可以測試demo了,然而,呵呵。。。重點來了,運行demo的時候報錯說找不到roi pooling layer。然後我就比較了一下caffe-root和rbg的caffe分支,發現\py-faster-rcnn-master\caffe-fast-rcnn\include\caffe底下多了個fast_rcnn_layers,這是roi和smooth L1的聲明文件,然後別的都一樣,真的是都一樣啊。caffe-root的\src\caffe\layers底下有roi_pooling_layer.cpp/cu和smooth_l1_loss_layer.cpp/cu,這四個文件都有;然後\src\caffe\proto中caffe.proto文件中也有roi的註冊,那些寫博客要添加這些東西的大神們,讓我抑鬱了很久。然並卵,再次運行demo,還是找不到roi,然後我又鬱悶了很久。時間過的好快,然後元旦我就出去玩了三天。
這裏寫圖片描述
回來之後發現,一直忽略了VS工程中打開的libcaffe以及pycaffe,然後檢查了一下libcaffe,果然,真想罵人!!工程中沒有添加roi_pooling_layer.cpp和cu,smooth的cpp和cu倒是有。沒辦法了,把roi_pooling_layer.cpp和cu還有那個fast_rcnn_layers.hpp粘貼到工程中相應位置,然後重新編譯caffe,編譯的過程慢的不行不行的啊。。。。順便重新編譯下pycaffe,然後把生成的 \Build\x64\Release\pycaffe\caffe 複製到\lib\site-packages替換掉原來的caffe。這樣基本上問題就解決了。測試demo.py結果如下:
這裏寫圖片描述
此外還有一些我遇到的其他問題:
1 no module named _caffe
這是pycaffe沒有編譯好,重新編譯一下。但是我有一次發現,faster-rcnn-master\caffe-fast-rcnn\python\caffe報錯,no module named _caffe。我重新編譯了之後還是有問題。然後我就把py-faster-rcnn-master\caffe-fast-rcnn\python\caffe用編譯後的release\pycaffe\caffe替換,就可以了。
2 proposal_layer.py 中 pre_nms_topN = cfg[cfg_key].RPN_PRE_NMS_TOP_N, keyerror = 1
解決方法 :
進行如下修改
cfg_key = str(self.phase) # either ‘TRAIN’ or ‘TEST’
cfg_key = str(‘TRAIN’ if self.phase == 0 else ‘TEST’)
3 cannot import name set_random_seed
解決方法:參考https://github.com/BVLC/caffe/pull/4351/files#diff-9b973c3db5bcd89fc0a5e1977f7cd70aL57
4 最後再說一句,如果電腦上裝了mingw,編譯setup_cuda.py的時候可能會碰到g++的問題,我把ming卸載了就沒問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章