caffe windows的配置安裝
這里主要參考了如何快糙好猛地在windows下編譯caffe及并使用其matlab和python接口,下面詳述本人的安裝過程。
準(zhǔn)備
提前說明下,本人的安裝環(huán)境是windows+vs2013+cuda7.5。首先是happynear準(zhǔn)備好的caffe源碼https://www.github.com/happynear/caffe-windows。
其次是happynear制作的第三方庫http://pan.baidu.com/s/1bSzvKa。
將第三方庫中的內(nèi)容解壓至caffe源碼中的3rdparty文件夾中,并將3rdparty/bin文件夾添加至環(huán)境變量path中,方便程序找到第三方庫的dll。
編譯
進(jìn)入caffe-windows-master目錄。
- 雙擊./src/caffe/proto/extract_proto.bat 批處理文件來生成caffe.pb.h caffe.pb.cc 兩個c++文件和caffe_pb2.py。
- 打開./buildVS2013/MainBuilder.sln,打開之后切換編譯模式至Release X64模式。如果打開之后顯示加載失敗,可能你的CUDA版本和我的不一致,我的是CUDA 7.5版,這時就要用記事本打開./buildVS2013目錄下各個文件夾內(nèi)的.vcxproj文件,搜索CUDA 7.5,把這個7.5換成你自己的CUDA版本,就可以正常打開了。另外,如果你的顯卡比較老或者沒有顯卡,請使用./build_cpu_only/MainBuilder.sln。(工程打開后,默認(rèn)啟動工程是caffe,也就是我們需要編譯的工程)
- 點擊編譯按鈕開始編譯吧!這個過程大概半個小時左右。另外,編輯即將結(jié)束前可能出現(xiàn)彈窗提示未能生成編譯信息,這個沒有多大關(guān)系,只需要設(shè)置下工程屬性即可,這里不多說可以直接搜下,因為這時在目錄下已經(jīng)有bin文件夾,其中生成了caffe.exe。
- 運行mnist demo時,首先得下好mnist leveldb,然后到解壓至.\example\mnist\下,運行根目錄下的run_mnist.bat,運行結(jié)束后,可以在.\log中找到剛才運行的日志。
matlab wrapper編譯
所謂的matlab wrapper編譯,其實就是matcaffe這個工程的編譯。
首先,將該工程設(shè)置為啟動項目,右擊屬性。
- C/C++ ->常規(guī)->附加包含目錄中修改其中的matlab的include改為自己的,如 C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\include。
- 鏈接器 ->常規(guī) ->附加庫目錄中修改其中matlab改為自己的,如 C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\lib\win64\microsoft。
- 鏈接器 ->輸入 ->附加依賴項,檢查有沒有l(wèi)ibmex.lib; libmat.lib; libmx.lib,沒有的話,自己加上。
配置完成后,編譯就可以了,最后會在.\matlab+caffe\private目錄下生成caffe_.mexw64,這個就是matlab調(diào)用caffe的wrapper。
使用caffe中matlab的demo時,打開matlab, 進(jìn)入.\matlab\demo文件夾,參考classification_demo.m使用這個wrapper。另外說明一點,之前我使用的matlab2010b在調(diào)用caffe.Net時幾乎百分百出現(xiàn)matlab崩潰,開始一直以為是我編譯生成的mexw64有問題,后來我重新安裝了matlab2015a這個問題就沒有發(fā)生了。
classificatin.cpp的編譯
classification.cpp是在.\example\classification目錄中的。在windows中用VS編譯還是挺麻煩的,所以在這里也記錄一下,關(guān)鍵還是其中的依賴庫的配置。這里因為是自己不斷實驗,不斷看網(wǎng)上僅有的例子摸索出來的,所以方法有點笨拙。
我的方法是,在caffe工程中,新建classification.cpp,將那個classification.cpp復(fù)制到這里,然后排除caffe.cpp,編譯。這樣就省去了環(huán)境配置的麻煩,但缺點是生成的exe仍在.\bin中,但文件名為caffe,把我之前編譯生成的caffe.exe覆蓋了。
使用該classification.cpp生成的.exe跑demo時,首先得下好下面的文件:
bvlc_reference_caffenet.caffemodel
imagenet_mean.binaryproto和synset_words.txt
上面三個文件我都將它們放在了.\models\bvlc_reference_caffenet文件夾中,所以最后在cmd中的命令句是
.bin\caffe.exe
.\models\bvlc_reference_caffenet\deploy.prototxt
.\models\bvlc_reference_caffenet\bvlc_reference_caffenet.caffemodel
.\models\bvlc_reference_caffenet\imagenet_mean.binaryproto
.\models\bvlc_reference_caffenet\synset_words.txt
.\examples\images\cat.jpg
//后面5個均為caffe.exe的參數(shù)
如此完成了該classification的demo。