win10下安裝基於caffe的 Faster-Rcnn

安裝教程


  本篇博客將會教會你在Windows下配置py-faster-rcnn,請細心仔細閱讀。說白了,Windows下配置這些東西就是一個坑。php


安裝配置Anaconda


  因爲py-faster-rcnn要用到python,這裏咱們使用了Anaconda,Anaconda版本爲Anaconda2-4.3.1-Windows-x86_64.exeAnaconda下載地址,雙擊安裝便可,安裝完Anaconda2後須要下載必要的python庫,在cmd下運行下面代碼便可:python

conda install --yes numpy scipy matplotlib scikit-image pip
    pip install protobuf
    conda install numpy pyqt
  • 1
  • 2
  • 3
  • 4

  一樣的,在cmd中輸入python --version,能夠獲得你安裝的python信息:(若是是Anaconda則無需以後操做)linux

(python27) C:\Users\39294\Desktop>python --version
    Python 2.7.13 :: Anaconda 4.3.1 (64-bit)

 


安裝配置Windows-caffe


  在安裝好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

  • 注意:若是libcaffe和testall存在問題,請參考以下解決辦法:

  因爲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\
    • 1
    • 2

    coapp.NuGetNativeMSBuildTasks.dll加載任務「NuGetPackageOverlay」

  該問題解決辦法,只須要升級opencv便可,參考博客解決問題

 

下載Caffe-Microsoft並添加roi_poling_layer後正確編譯

下載地址: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。具體步驟可參考這裏,生成成功則大功告成。

error MSB4062: 未能從程序集 …… 加載任務「NuGetPackageOverlay」。

若是你以前生成過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,最終都是從新生成得以解決。

2、配置Faster-RCNN

1. 配置windows版的py-faster-rcnn

下載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)
  • 1

替換爲

cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')
  • 1

2. 拷入生成的Caffe

將Caffe根目錄—Build文件夾下,找到生成的pycaffe,將其中的caffe文件夾總體複製到py-faster-rcnn根目錄—caffe-fast-rcnn—python文件夾下。我生成的caffe是Release版本,如圖:

這裏寫圖片描述

複製到:

這裏寫圖片描述

注:官方推薦用命令

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

下載py-faster-rcnn,若是用Download ZIP(由於咱們已經有了Caffe-Microsoft),在py-faster-rcnn的caffe-faster-rcnn下單首創建python文件夾,再將生成的pycaffe下的caffe拷貝進來,實測也可以完成demo生成。

3. 客製化修改與setup

根據本機的CUDA環境,修改py-faster-rcnn—lib路徑下的setup_cuda.py:

(1)第14行

'-arch=sm_35' //個人是-arch=compute_60 (GTEX-1050的顯卡)
  • 1

修改成本機顯卡的計算能力,具體查詢Nvida官網
(2)第33行

include_dirs = [numpy_include, 'C:\\Programming\\CUDA\\v7.5\\include'])
  • 1

修改成本機的CUDA-include環境,好比個人路徑是:

include_dirs = [numpy_include, 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0\\include'])
  • 1

此時能夠CMD打開至py-faster-rcnn\lib路徑下,運行命令:

python setup.py install python setup.py build_ext --inplace python setup_cuda.py install
  • 1
  • 2
  • 3

假如出現缺乏某些依賴項或cv2.pyd (opencv) 的狀況,用pip install命令安裝或網上搜索相關配置方法便可,pip用法示例:

pip install easydict
  • 1

 


 

  而後,在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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 編譯報錯:

    error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27;
    • 1
    • 2

  解決辦法:直接在在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()
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

  解決辦法:咱們須要添加環境變量,參考博客辦法(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
  • 1
  • 2
  • 編譯報錯:

    ImportError: No module named easydict
    • 1
    • 2

  解決辦法:在cmd下輸入:pip install easydict,能夠參考博客()

  • 編譯報錯:

    ImportError: No module named cv2
    • 1
    • 2

  解決辦法:將opencv裏面的cv2.pyd文件拷貝到D:\Anaconda2\Lib\site-packages中,能夠參考博客

  • 編譯報錯:

    ImportError: No module named google.protobuf.internal
    • 1
    • 2

  解決辦法:在cmd下輸入:conda install protobuf,能夠參考博客

  • 編譯報錯:

    AttributeError: 'ProposalLayer' object has no attribute 'param_str_'
    • 1
    • 2

  解決辦法:將對應文件中’param_str_’改成’param_str’,能夠參考博客

  • 編譯報錯:

    proposal_layer.py 中 pre_nms_topN  = cfg[cfg_key].RPN_PRE_NMS_TOP_N, keyerror = 1
    • 1
    • 2

  解決辦法:能夠參考博客

若是遇到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的顯示就是完成了。   至此,編譯完成,運行成功。

相關文章
相關標籤/搜索