1. 程式人生 > >Windows系統下VS2013+caffe的安裝

Windows系統下VS2013+caffe的安裝

筆者作為一名深度學習小白,今日開始打算入門caffe框架。而caffe的安裝過程沒想到出現各種問題,雖參考眾多部落格,均未完美解決,故集眾家所長,貼上一文,希望幫助和我一樣的新手。筆者環境為win10+vs2013。本文尤其感謝http://blog.csdn.net/tina_ttl/article/details/51722983,並在此基礎上略有補充。
其實win7,win8,win10系統均可,而vs建議2013版本,筆者在vs2015版上未安裝成功,而眾多博主大多也反應vs2015安裝問題眾多。

一. 安裝檔案準備
1.1 visual studio 2013安裝
1.2 CUDA8.0下載 https://developer.nvidia.com/cuda-toolkit-archive


筆者此時(2016/10/8)僅能在官網下載Cuda8.0,故不採用其他諸如6.5,7.0,7.5之類的老版本。
1.3 windows版本caffe下載 https://github.com/Microsoft/caffe
此版本為微軟官方製作版本,推薦!
1.4 cuDNN下載 https://developer.nvidia.com/cudnn
這裡為筆者所用為CuDNNv5,在官網需要註冊郵箱才能下載
1.5 Python2.7安裝
1.6 Matlab安裝 筆者所用為2014a版本

二. 第一步完成的話,vs2013、Python2.7、MATLAB、CUDA8.0想必以安裝好,而caffe和cudnn下載 檔案解壓後會是兩個資料夾caffe-master和cuda,筆者解壓在D:\Program Files\caffe路徑中。接下來,開啟caffe-master資料夾,然後看到一個windows資料夾,然後繼續開啟windows資料夾,看到裡面一個CommonSettings.props.example檔案,複製一份,並改名字為CommonSettings.props。
這裡寫圖片描述


然後用VS2013開啟Caffe.sln(就到剛剛那個資料夾裡面),準備修改配置檔案。

三.開啟CommenSetting.probs.即配置檔案。
這裡寫圖片描述
例子中所有配置引數都是預設值

CpuOnlyBuild:是否使用CPU

預設值為False(即使用GPU編譯)
如果本機沒有配置好CUDA,那麼,該值應該賦值為True;
如果本機已經配置好CUDA,並且需要編譯CUDA版本的caffe,那麼,該值應該賦值為True、
UseCuDNN:是否使用CuDNN

預設值為True;
如果本機沒有配置好CUDA,那麼,該值應該賦值為False;
注意:CpuOnlyBuild和CuDNN不能同時為True;
如果這裡設定為True,那麼還需要對賦值,即下載的CuDNN的路徑
CudaVersion:CUDA的版本

PythonSupport:是否支援python

預設值為False,即後續不編譯pycaffe;
如果需要編譯pycaffe,那麼該值設定為True
如果這裡設定為true,那麼還需要對 C:\Miniconda2\賦值
上面的值是預設的,應該修改為本機的python安裝路徑,也就是python.exe所在路徑,例如,本機安裝的python,路徑如下:D:\Program Files\Python27,那麼,應該令 D:\Program Files\Python27

MatlabSupport:是否支援matlab

預設值為False;
如果需要編譯matcaffe,那麼該值設定為True
如果該值設定為true,那麼還需要對C:\Program Files\MATLAB\R2014b進行賦值:
上面的路徑是預設的,需要更改為本機的matlab安裝目錄,例如,本機的matlab安裝路徑如下:D:\Program Files\Matlab 2014a\setup,那麼,D:\Program Files\Matlab 2014a\setup

注:對cuDNN路徑的配置有兩種方案:
- 方案1:將cuDNN v4的壓縮包內的bin、include、lib中的檔案分別放置在%CUDA_PATH% (即cuda的安裝路徑)的相應目錄中
- 方案2:將 .\windows\CommonSettings.props檔案中的CuDnnPath設定為該解壓縮路徑,例如,將cuDNN解壓後文件放置在D:\Program Files\caffe\cuda中,那麼,在CommonSettings.props中,令D:\Program Files\caffe\cuda,即上面提到的方法。

四.編譯caffe,特別注意專案的編譯順序!(筆者覺得debug或release均可)
編譯前先加入如下一步
這裡寫圖片描述
1、首先編譯libcaffe專案(其他的專案依賴於libcaffe專案)。會還原NuGet包,即從網路下載編譯需要的各種依賴包,經過一段時間等待後,編譯成功 。
這裡可能會出現幾個問題:
(1)編譯過程中,可能會出現錯誤。提示“error C2220: 警告被視為錯誤 - 沒有生成“object”檔案”,這是由於微軟NuGet回來的boost庫中的format\alt_sstream_impl.hpp檔案編碼格式導致的,只需要雙擊錯誤開啟該檔案並儲存,再編譯就順利通過了。
(2)caffe編譯過程中,需要一些依賴包,在有網路的情況下,當編譯第一個專案libcaffe時,程式會自動從網路下載這些依賴包,下載到與caffe-windows資料夾同級的NugetPackages資料夾中,但在沒有網路情況下,需要事先將這些依賴包下載好,並將它們的路徑在vs的管理NuGet程式包中進行設定:工具->選項->NuGet Package Manager->程式包源->利用右側的加號新增本地的package 。手動新增這些package地址後,還需要手動對這些NuGet Package進行安裝 。
2、編譯caffe專案
3、編譯pycaffe。筆者在編譯時提示缺少python27_d.lib,這時可以將Python安裝目錄libs資料夾中的python27.lib複製一份,重新命名為python27_d.lib即可。再修改Python安裝目錄include資料夾中的pyconfig.h檔案,將#define Py_DEBUG一行註釋掉。
4、編譯matcaffe。筆者在編譯時提示找不到”gpu/mxGPUArray.h”,此時在,在MATLAB中搜索才發現,這個標頭檔案在D:\Program Files\Matlab 2014a\setup\toolbox\distcomp\gpu\extern\include路徑下,而matcaffe並不包含該路徑,故在右鍵屬性—VC++目錄—-包含目錄中手動新增該路徑,編譯成功。
5、編譯其他專案
接下來,再依次編譯其他專案,同樣的方法
classification:用來分類
compute_image_mean:計算均值
convert_cifar_dat:對cifat資料集進行轉換
convert_mnist_data:對mnist資料集進行轉換

五、執行caffe.cpp,直接雙擊開啟caffe.cpp,然後ctrl+f5直接編譯,出現如下命令視窗說明編譯成功
這裡寫圖片描述

至此,vs2013+cudnn+微軟官方移植caffe已經編譯成功!
筆者也試過另外一種方案,用大神製作的Windows-caffe包,內含第三方庫,無需自己下載cudnn ,雖然省事,但是筆者並未在此方案下編譯成功,若有興趣的朋友可以嘗試此方案,方法如此http://blog.csdn.net/muyouhang/article/details/50688038

接下來,就可以開始真正學習caffe框架咯~~~