Caffe學習筆記(一)——Windows 下caffe安裝與配置
本文主要介紹:經過一番周折,在Windows7 64位系統下成功配置Caffe,下面總結一下基本的配置過程,以及配置過程中遇到的問題。
配置環境:Windows7 X64 + CUDA7.0 + VS2013 + Matlab2014a
1.安裝CUDA
1.1. 版本選擇
至於版本的選擇,安裝7.5、7.0和6.5版本都可以,安裝包網上到處可見,分享一個自己安裝的版本:http://pan.baidu.com/s/1i5AmAZb
2.配置Caffe
2.1. 下載Caffe及第三方庫
檔案下載地址見:http://blog.csdn.net/happynear/article/details/45372231
2.2. 編譯
(1)1、雙擊caffe-windows-master/src/caffe/proto/extract_proto.bat批處理檔案來生成三個檔案:caffe.pb.h、caffe.pb.cc和caffe_pb2.py,前兩個c++檔案,最後一個是python檔案;
(2)開啟caffe-windows-master/buildVS2013/MainBuilder.sln,開啟之後切換編譯模式至Release X64模式。如果開啟之後顯示載入失敗,可能你的CUDA版本和工程中的不一致,工程中是CUDA 7.5版,這時就要用記事本開啟caffe-windows-master/buildVS2013目錄下各個資料夾內的.vcxproj檔案,搜尋CUDA 7.5,把這個7.5換成你自己的CUDA版本,就可以正常打開了。
(3)檢視顯示卡GPU CUDA Capability的版本,方法:
step1: 右鍵“計算機”—>“屬性”—>“裝置管理器”—>“顯示介面卡”,如下圖,
step2: 根據顯示卡型號,在https://developer.nvidia.com/cuda-gpus檢視CUDA Capability的版本:
要檢視顯示卡CUDA Capability版本的原因是因為:buildVS2013專案預設是開啟cudnn的,而CUDNN要求GPU CUDA Capability 不低於3.0,如果CUDA Capability 版本低於3.0,在編譯過程中,不關閉cudnn,則會出現類似問題:
http://www.aiuxian.com/article/p-2150379.html
http://blog.csdn.net/eagelangel/article/details/50562065
(4)修改工程預編譯,關閉cudnn
如果GPU CUDA Capability 不低於3.0,則跳過該過程,低於的進行如下操作:
通過修改預編譯來關閉cudnn,點選caffe工程,右鍵“屬性”開啟屬性頁,
刪除“前處理器定義”中的USE_CUDNN,同理, 工作中的其他專案也刪除USE_CUDNN
(5)修改matcaffe、pycaffe工程相關屬性
Caffe介面可以是Python,也可以是Matlab,我選用的是matlab,所以把MainBuilder.sln過程中的pycaffe過程移除了,介紹一下matcaffe的修改過程,pycaffe工程類似:
step1:開啟matcaffe工程屬性頁,新增matlab的 include路徑和lib路徑:
step2:聯結器中新增附加目錄:
(要根據自己的matlab路徑進行新增)
(6)準備工作已經完成,點選“生成”進行編譯,編輯過程中會花費較長時間。
編譯完成後,會在”caffe-windows-master\matlab+caffe\private“生成caffe_.mexw64檔案。
3.測試
3.1 配置
step1: 把資料夾 ***caffe-windows-master\3rdparty\bin新增到系統環境變數中,也可以直接把這些dll檔案拷貝到“C:\Windows\System32”和“C:\Windows\SysWOW64”中;
step2: 把3rdparty\bin中的dll檔案,拷貝到 “caffe-windows-master\matlab+caffe\private“中;
3.2 測試
step1:matlab 開啟
“caffe-windows-master\matlab\demo\classification_demo.m”,classification_demo.m需要檔案bvlc_reference_caffenet.caffemodel,可以到
http://dl.caffe.berkeleyvision.org/
下載,下載後放到“models/bvlc_reference_caffenet/”中;
step2: 執行[scores, maxlabel] = classification_demo();
執行結果:
4.1 編譯時,matcaffe和pycaffe編譯失敗
解決:原因是編譯時,需要matlab和python的一些標頭檔案和庫檔案,過程中沒有新增,需要自己新增一下,過程見本文2.2 (5)
4.2 編譯成功,測試classification_demo.m時,出現錯誤:Invalid MEX-file “…….caffe_.mexw64”找不到指定的模組
如下圖:
解決方法:按3.1過程進行配置。(當初使用的Matlab2013a,編譯成功,但仍有該問題,最後解除安裝Matlab2013a,換成2014a,如果3.1配置不能解決,可以考慮該方法)
4.3 caffe.Net(net_model, net_weights, phase)函數出問題:glog check error, please check log and clear mex
該問題沒有截圖,大致提示為:
glog check error, please check log and clear mex
出錯 caffe.Net (line 31)
self = caffe.get_net(varargin{:});
出錯 classification_demo (line 84)
net = caffe.Net(net_model, net_weights, phase);
出錯後會生成一些檔案,記錄錯誤,開啟資料夾“caffe-windows-master\matlab\demo”,會發現多了幾個檔案:
開啟ERROR檔案,會看到錯誤原因:
該問題“Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARCH_MISMATCH”是因為:GPU CUDA Capability 版本低於3.0,解決方法見2.2 (3)、(4)