caffe windows配置及classification編譯分類

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目錄。

  1. 雙擊./src/caffe/proto/extract_proto.bat 批處理文件來生成caffe.pb.h caffe.pb.cc 兩個c++文件和caffe_pb2.py。
  2. 打開./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,也就是我們需要編譯的工程)
  3. 點擊編譯按鈕開始編譯吧!這個過程大概半個小時左右。另外,編輯即將結(jié)束前可能出現(xiàn)彈窗提示未能生成編譯信息,這個沒有多大關(guān)系,只需要設(shè)置下工程屬性即可,這里不多說可以直接搜下,因為這時在目錄下已經(jīng)有bin文件夾,其中生成了caffe.exe。
  4. 運行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。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容