本篇博客將會教會你在Windows下配置py-faster-rcnn,請細心仔細閱讀。說白了,Windows下配置這些東西就是一個坑。php
因爲py-faster-rcnn要用到python,這裏咱們使用了Anaconda,Anaconda版本爲Anaconda2-4.3.1-Windows-x86_64.exe
,Anaconda下載地址,雙擊安裝便可,安裝完Anaconda2後須要下載必要的python庫,在cmd下運行下面代碼便可:python
conda install --yes numpy scipy matplotlib scikit-image pip pip install protobuf conda install numpy pyqt
一樣的,在cmd中輸入python --version
,能夠獲得你安裝的python信息:(若是是Anaconda則無需以後操做)linux
(python27) C:\Users\39294\Desktop>python --version Python 2.7.13 :: Anaconda 4.3.1 (64-bit)
在安裝好Anaconda後,須要配置Windows-caffe。爲了使用GPU來運行深度學習,咱們須要安裝相應的cuda和cuDNN。其中,cuda版本爲cuda_8.0.61_win10
,雙擊安裝便可;cuDNN版本爲cudnn-7.5-windows10-x64-v5.0-ga
,下載並將其解壓至D:\
CUDA下載地址 cuDNN下載地址
一樣的,須要從github上下載相應的windows-caffe,並將其解壓至D:\
。
windows-caffe下載地址git
隨後,開始配置caffe:
進入D:\caffe-master\windows
,複製文件CommonSettings.props.example
並將其更名爲CommonSettings.props
,雙擊進入工程caffe(這裏注意:須要安裝了VS,才能夠打開並編譯)。有時候libcaffe沒有加載成功(主要緣由在於看看propos裏面的cuda版本是7.5,而你裝的是8.0,ctrl+F搜索7.5,找到到改成8.0.並重啓caffe.sln便可)github
因爲vs2013的安裝路徑中缺乏 CUDA 8.0.props ,文件引用CUDA 8.0的路徑是 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations ,其實 CUDA 8.0.props 安裝路徑是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\visual_studio_integration\MSBuildExtensions ,只要拷貝到 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations 就好了,那麼libcaffe和testall就都沒問題了!windows
在打開caffe工程後,打開右側文件列表中的文件CommenSetting.probs
,在文件中搜索cudapath
,該欄存放從cudnn
解壓出來的文件夾cuda
的目錄路徑。因爲咱們從cudnn
解壓出來的文件夾cuda
的目錄路徑是D:\
,所以,輸入D:\
便可。網絡
若是須要配置pycaffe,即caffe的python接口,則請進行一下操做:打開右側文件列表中的文件CommenSetting.probs
,編譯支持python接口<PythonSupport>ture</PythonSupport>
,同時修改python的路徑,指定到Anaconda中。
隨後,咱們參考博客,將roi_pooling_layer.hpp,cu,cpp加入到libcaffe文件配置中。
參考博客app
接下來,選擇編譯類型爲release,x64
,關閉 Treat Warnings As Errors (即設置爲No) ,若是不設置的話在編譯boost庫的時候會因爲文字編碼的警告而報錯。下面兩張圖幫你進行設置。
而後開始漫長的編譯過程,編譯結束後會在D:\
下生成文件夾NugetPackages
,咱們也能夠在拷貝別人的文件NugetPackages
到指定目錄D:\
後進行編譯。python2.7
在編譯好libcaffe
後,須要繼續編譯其餘任務:下面兩張圖幫你進行設置並進行相關編譯。
學習
至此,caffe工程已經編譯完成,能夠正常訓練測試網絡。
編譯錯誤:
error MSB4062:未能從程序集D:\NugetPackages\OpenCV.2.4.10\build\native\private\
coapp.NuGetNativeMSBuildTasks.dll加載任務「NuGetPackageOverlay」
該問題解決辦法,只須要升級opencv便可,參考博客解決問題
下載地址:https://github.com/Microsoft/caffe
因爲windows版本caffe的不完善,要先在libcaffe項目中添加roi_poling層的相關支持。具體操做以下:
在libcaffe項目下的 cu—layers 文件夾右擊,添加——現有項,找到 caffe根目錄—src—caffe—layers下,添加roi_pooling_layer.cu。
路徑示例:
同理,在libcaffe項目下的 src—layers 添加roi_polling_layer.cpp;
(所在路徑:caffe根目錄—src—caffe—layers)
在libcaffe項目下 include—layers添加roi_pooling_layer.hpp。
(所在路徑:caffe根目錄—include—caffe—layers)
記得在配置中開啓python版編譯,而後生成caffe。具體步驟可參考這裏,生成成功則大功告成。
若是你以前生成過windows版caffe,在添加roi_pooling支持後從新生成時,極可能會碰到error MSB4062錯誤。個人解決方案以下:
(1)將caffe根目錄下的Build文件夾整個刪除;
(2)右鍵 解決方案caffe —清理解決方案;
(3)從新生成。
另:網上有說是CuDNN 5.0 與 CUDA8.0 兼容問題的,也有說是Nuget中opencv更新至2.4.11問題的(默認爲2.4.10),我我的的嘗試是——很差使 = =。我在兩個配置過caffe的機器上都出現了error MSB4062,均爲CUDA 8.0+CuDNN 5.0,一個Win7一個Win10,最終都是從新生成得以解決。
下載py-faster-rcnn,地址:https://github.com/rbgirshick/py-faster-rcnn
因爲上述版本中的python都是基於linux環境編寫的,windows運行須要進行改動。好在有人已經完成了相關工做:
再下載py-faster-rcnn-windows,地址:https://github.com/MrGF/py-faster-rcnn-windows
將其中的文件複製進py-faster-rcnn進行替換。
替換後,在py-faster-rcnn根目錄—lib—rpn路徑下,編輯proposal_layer.py:
(1)將其中的 param_str_ 替換爲 param_str。
(2)將
cfg_key = str(self.phase)
替換爲
cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')
將Caffe根目錄—Build文件夾下,找到生成的pycaffe,將其中的caffe文件夾總體複製到py-faster-rcnn根目錄—caffe-fast-rcnn—python文件夾下。我生成的caffe是Release版本,如圖:
複製到:
注:官方推薦用命令
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
下載py-faster-rcnn,若是用Download ZIP(由於咱們已經有了Caffe-Microsoft),在py-faster-rcnn的caffe-faster-rcnn下單首創建python文件夾,再將生成的pycaffe下的caffe拷貝進來,實測也可以完成demo生成。
根據本機的CUDA環境,修改py-faster-rcnn—lib路徑下的setup_cuda.py:
(1)第14行
'-arch=sm_35' //個人是-arch=compute_60 (GTEX-1050的顯卡)
修改成本機顯卡的計算能力,具體查詢Nvida官網。
(2)第33行
include_dirs = [numpy_include, 'C:\\Programming\\CUDA\\v7.5\\include'])
修改成本機的CUDA-include環境,好比個人路徑是:
include_dirs = [numpy_include, 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0\\include'])
此時能夠CMD打開至py-faster-rcnn\lib路徑下,運行命令:
python setup.py install python setup.py build_ext --inplace python setup_cuda.py install
假如出現缺乏某些依賴項或cv2.pyd (opencv) 的狀況,用pip install命令安裝或網上搜索相關配置方法便可,pip用法示例:
pip install easydict
而後,在cmd中切換工做目錄到py-faster-rcnn/lib目錄:執行 python setup.py install 代碼執行成功後,修改setup_cuda.py中第33行,CUDA的include路徑爲你本身的路徑。執行 python setup_cuda.py install 安裝成功.
python setup.py install include_dirs = [numpy_include, 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\include']) python setup_cuda.py install
編譯報錯:
error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27;
解決辦法:直接在在cmd下輸入:SET VS90COMNTOOLS=%VS120COMNTOOLS%
,若是不行,則參考博客(注意:直接在D盤Anaconda2下面進行修改)
編譯報錯:
File "D:\Anaconda2\lib\ntpath.py", line 180, in split d, p = splitdrive(p) File "D:\Anaconda2\lib\ntpath.py", line 115, in splitdrive if len(p) > 1: TypeError: object of type 'NoneType' has no len()
解決辦法:咱們須要添加環境變量,參考博客辦法(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\ )
成功狀態如圖:
至此,py-faster-rcnn的配置工做基本完畢,接下來,咱們運動demo,看看效果。在cmd中切換工做目錄到到py-faster-rcnn目錄下,執行python ./tools/demo.py
。若執行成功,將出現相應的檢測圖片。
python ./tools/demo.py
編譯報錯:
ImportError: No module named easydict
解決辦法:在cmd下輸入:pip install easydict
,能夠參考博客()
編譯報錯:
ImportError: No module named cv2
解決辦法:將opencv裏面的cv2.pyd文件拷貝到D:\Anaconda2\Lib\site-packages中,能夠參考博客
編譯報錯:
ImportError: No module named google.protobuf.internal
解決辦法:在cmd下輸入:conda install protobuf
,能夠參考博客
編譯報錯:
AttributeError: 'ProposalLayer' object has no attribute 'param_str_'
解決辦法:將對應文件中’param_str_’改成’param_str’,能夠參考博客
編譯報錯:
proposal_layer.py 中 pre_nms_topN = cfg[cfg_key].RPN_PRE_NMS_TOP_N, keyerror = 1
解決辦法:能夠參考博客
若是遇到ImportError: DLL load failed: 找不到指定的程序。參考:http://blog.csdn.net/lzhalan2016/article/details/52415998
第一步:
在命令中輸入如下指令卸載相應的包:pip uninstall numpy;pip uninstall scipy;pip uninstall matplotlib;pip scikit-learn
第二步:
在下面的網站中找到對應的包,若是是python2.7就是cp27系列的,電腦是多少位的必定下載對應版本
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 第三步: 找到安裝python的目錄下的Scripts文件,在這個文件裏安裝相應的whl包 好比指令爲 cd D:\ProgramData\Anaconda2\Scripts,而後在這裏用指令 pip install D:/xxx/xxx/xxx.whl 假若有successful的顯示就是完成了。 至此,編譯完成,運行成功。