1. 程式人生 > >Win7下嘗試編譯Fast RCNN---- 一次失敗的經歷

Win7下嘗試編譯Fast RCNN---- 一次失敗的經歷

        前輩說,建議用Linux系統做,windows系統做會有問題。這叫我摸索半天之餘突然放棄,心中著實有點不甘。於是,找了happynear大神的一篇博文Windows下編譯fast rcnn,嘗試了一下,卻是一次失敗的經歷【如圖1】,在網上找了兩天,ImportError:No module named _caffe的答案仍然沒有任何頭緒。既不是python2.x和python3.x版本不同導致函式不同的原因,也不是路徑不對。我把每個涉及到的檔案都開啟看了一遍。_caffe.cpp是個檔案,而系統卻當成模組module以至於無法識別。

        到現在不知道問題如何解決,焦慮憤懣難過之餘,先記錄一下,希望在今後的學習中終有一天將之解決。之餘是否換Linux,等到我對Caffe也有初步直觀的瞭解後,實在不能忍受windows系統下的跑速,再抽空換Linux下的Caffe操作吧。


圖1 ImportError:No module named _caffe

一、準備

        1.首先,確認我的caffe-windows-master已經編譯好Python介面,詳見

        3.下載fast r-cnn所需的模型檔案:http://pan.baidu.com/s/1kTzQYgR。下載完成後,請將3個資料夾放置在fast_rcnn_root/data中。

        4.安裝protobuf的python介面:首先從google上下載protobuf-2.5.0.zip和protoc-2.5.0-win32.zip,然後把protoc-2.5.0-win32.zip裡的protoc.exe放到protobuf-2.5.0\src\下。
切換到protobuf-2.5.0\python 。分別執行指令 python setup.py build

,  python setup.py test,  python setup.py install

        5.開啟cmd,輸入pip install cython pip install easydict來安裝cython和easydict,如果你使用的是Anaconda,cython預設是安裝上了的。【如圖2】(如果提示安裝失敗,可能是由於你的pip的版本過低,請先使用   pip install pip --upgrade    升級你的pip。)

圖2 install cython以及easydict

二、編譯

        1.將caffe_windows_root/python目錄,複製到fast_rcnn_root/caffe-fast-rcnn中。

        2.用文字編輯器開啟fast_rcnn_root/lib/utils/nms.pyx,將第25行的np.int_t修改為np.intp_t。

        3.用文字編輯器開啟fast_rcnn_root/lib/setup.py,將第18行和23行的"-Wno-cpp", "-Wno-unused-function"指令刪除,只留下空的中括號[]即可。

        4.開啟cmd,定位至fast_rcnn_root/lib目錄中,執行python setup.py install。 如果提示Unable to find vcvarsall.bat的話,若為VS2012,輸入以下指令:SET VS90COMNTOOLS=%VS110COMNTOOLS% ;若為VS2013輸入以下指令SET VS90COMNTOOLS=%VS120COMNTOOLS%。【如圖3所示】

        5.setup.py安裝完成後,到python_root/Lib/site-packages/utils中可以找到兩個檔案cython_bbox.pyd和cython_nms.pyd,把這兩個檔案複製到fast_rcnn_root/lib/utils中。

        6.定位至fast_rcnn_root,執行python tools/demo.py,等待demo的結果。

圖3 解決Unable to find vcvarsall.bat的方法1

三、常見問題說明

       1. Protobuf 全稱Google Protocol Buffers。http://code.google.com/p/protobuf。結構化資料儲存格式(xml, json)用於通訊協議、資料儲存等高效的序列化和反序列化。語言無關、平臺無關、擴充套件性好。官方支援C++, Java, Python三種語言。安裝caffe所需的依賴項,我們知道caffe是用google的protobuf,作為引數的引數傳遞。

       2. 我安裝了Anaconda,下載連結  。Anaconda(蟒蛇)是一個完全免費的Python分佈(包括商業性的使用和再分配)。它包括科學,數學,工程,資料分析等超過195個最流行的Python包。

       我在windows下Anaconda 安裝報錯。PS:我是64-bit,安裝的是Anaconda2 2.4.1(64bit),已經解除安裝了python2.7, 但每次安裝到最後一步就報錯[Error9]。。【如圖4所示】。後來找到解決方法,安裝時選擇所有使用者使用時提示同樣的錯誤,但安裝時如選擇當前使用者則沒問題。【如圖5所示】

圖4 安裝Anaconda時出現[Error 9]

圖5 解決[Error 9]

        3.我在做到上述步驟的二/(4):開啟cmd,定位至fast_rcnn_root/lib目錄中,執行python setup.py install。error:Unable to find vcvarsall.bat,網上找到:徹底解決error unable to find vcvrsall.bat ,瞭解到:凡是安裝和作業系統底層密切相關的python擴充套件,幾乎都會遇到這個錯誤。但,這個連結並沒有解決問題==。【如圖6所示】

        後找到微軟官網:http://www.microsoft.com/en-us/download/details.aspx?id=44266 。裡面說:之所以需要大家來下載【Microsoft Visual C++ Compiler for Python 2.7 】,是因為咱們會遇到一個經典的錯誤資訊:無法找到vcvarsall.bat檔案。(The typical error message you will receive if you need this compiler package isUnable to find vcvarsall.bat)。於是,我下載並安裝了該編譯器(C++ Compiler)。【如圖7所示】


圖6  解決Unable to find vcvarsall.bat的方法2

圖7 Microsoft官網下載編譯器

        至此,本文終,正如本文開頭所述,This is such a disappointing experience! 萬事開頭難,一枚小菜鳥正因有太多的未知內容,在任何問題面前顯得蒼白無力。路漫漫其修遠兮!千里之行始於足下!這個問題待以後解決。。。To be continued!

參考網址: