說明:大部分轉載於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
3.下載opencv3.0.0:http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/,安裝完成后手動創建環境變量OPENCV_3_0_0
以上軟件除了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屬性從小寫改成大寫就好了。
我自己踩過的坑就這么多,先記錄一下。