windows下配置caffe(環境:win7+vs2013+opencv3.0)


說明:大部分轉載於initialneil的大作Caffe + vs2013 + OpenCV in Windows Tutorial (I) – Setup

 

准備工作:

1.下載CUDA7.5: https://developer.nvidia.com/cuda-downloads,安裝完成后會自動創建變量CUDA_PATH_V7_5

2.下載boost1.56:http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/,選擇boost_1_56_0-msvc-12.0-64.exe,安裝完成后手動創建環境變量BOOST_1_56_0

System variable for boost

3.下載opencv3.0.0:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/,安裝完成后手動創建環境變量OPENCV_3_0_0

System variable for OpenCV

以上軟件除了opencv必須使用3.0以外,其他的使用相近版本都無所謂

4.環境變量設置完必須重啟才能生效

5.下載initialneil寫好的vs2013下build caffe的工程:https://github.com/initialneil/caffe-vs2013

6.下載caffe要用到的其他第三方庫:http://22a088.l67.yunpan.cn/lk/ccWF2Zge3tyfb(提取碼:6147),然后替換掉上一步VS工程下的3rdparty文件夾

 

編譯:

1.由於這個工程里邊的proto版本有點問題,編譯前先運行一下xx\caffe-vs2013-master\caffe\src\caffe\proto文件夾下的GeneratePB.bat,用於重新生成caffe.pb.h和caffe_pretty_print.pb.h,不然后面解析prototxt文件的時候會報錯。

2.編輯Caffe-vs2013 - Debug.props 和 Caffe-vs2013 - Release.props,把里邊的跟環境變量有關的東西都換成你自己的,CUDA_PATH_V7_5、BOOST_1_56_0、OPENCV_3_0_0之類的。然后把compute_50,sm_50這一句的50改成20(數字跟GPU架構相關,50 for Maxwell, 20 for Fermi, 30 for Kepler)。

3.打開caffe-vs2013.sln,可以看到caffe、test-MNIST和train-MNIST三個工程。如果caffe顯示load failed,就右擊編輯caffe.vcxproj,把里邊的環境變量也都設置成自己的,一般是CUDA6.5改成7.5就好了。

 

4.把build選項設成Release+x64,把caffe工程屬性的Configuration Type設成Application (.exe),然后右鍵編譯,應該能成功了。會在工程目錄的build/x64/Release文件夾下生成caffe.exe,但是還不能運行,缺少dll。

5.頭文件和靜態庫都在props文件中設置好了,依賴的動態庫需要自己放到系統路徑中。把xx\opencv\build\x64\vc12\bin目錄下opencv_ffmpeg300_64.dll、opencv_world300.dll和3rdparty\bin\x64\Release目錄的所有dll放到caffe.exe的那個目錄,再運行caffe.exe應該就可以了。

6.然后自己把Configuration Type改成lib就能生成靜態庫來調用了,改成dll就是動態庫,Release/Debug、win32/x64都自己挑,注意選擇依賴的dll不同就行

 

測試Test on MNIST:

1. Go to ‘caffe/data/mnist’ folder and run ‘get_mnist.bat’ to fetch dataset for MNIST.

2. Go to ‘caffe/examples/mnist’ folder and run ‘create_mnist-leveldb.bat’ to convert MNIST dataset to leveldb format.

3. run ‘train_lenet-leveldb.bat’ to start the training.

 

注意這里的proto版本有些舊,新的prototxt要自己改一下才能用,其實也很簡單,就是把各個layer里的type屬性從小寫改成大寫就好了。

我自己踩過的坑就這么多,先記錄一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM