由於學習需要,決定安裝caffe,之前用的都是基於theano的keras。聽說win下caffe很難配置,經過一個下午和晚上的配置終於成功,以此記錄。
我的電腦:win10 64位,N卡GTX950,Visual Studio 2013,MatLab 2014a, Anaconda2,PyCharm2016.
由於之前使用win下的theano和keras,所以安裝了anaconda2,確實很好用,建議使用python的話還是裝anaconda比較簡單。
安裝caffe前提要求:電腦系統win7,8,10都可以;顯卡只有N卡可以用Cuda,利用GPU加速,非N卡就利用CPU就好;此外需要用matlab或python(推薦)編程的再下載對應軟件。
安裝步驟:
1.安裝cuda和cuDNN(無GPU則無需安裝)
因為網上有各種失敗案例,所以要注意版本問題。官網即可下載,cuda我下載的是cuda_8.0.44_win10. cuDNN我下載的是cudnn-7.0-win-x64-v4.0(網上對cudnn 版本有爭議)。
安裝cuda8.0(進官網點擊download一步一步來,安裝時一直點下一步即默認裝到C盤)和cudnn v4(下載下來解壓,解壓后會有一個名為cuda的文件)即可。
注:官網下載cudnn時會要求注冊,填完信息注冊完成后,選着cuDNN v4 或者 cuDNN v5 (這取決於 CommonSettings.props 文件里標注支持的版本,建議選擇 cuDNN v4 Library for Windows)安裝盡量默認路徑。
cuda:

cudnn:

要實現gpu加速,以上步驟一定認真安裝。
2.下載caffe
一種是直接上caffe官網:https://github.com/BVLC/caffe/tree/windows,這種方法需要自己裝CuDNN。
另一種是用happynear的caffe-windows:https://github.com/happynear/caffe-windows,這個方法作者已經提供了打包好的第三方庫。
因為我自己裝的CuDNN,所以我采取第一種方法。下載完后,解壓文件,得到一個叫caffe-master的文件夾。我裝到了E盤,即E:\caffe-master
3.caffe環境整合
打開caffe-master文件夾,然后看到一個windows文件夾,然后繼續打開windows文件夾,看到里面一個CommonSettings.props.example文件,復制出來一份,並改名字為CommonSettings.props。完成過后如下圖:

然后打開到 caffe-master/caffe-master/windows 文件夾,用 VS2013 運行 Caffe.sln 文件,檢查解決方案中的項目,重點看libcaffe和test_all是否成功地被導入。


第一次應該是這兩個顯示加載失敗的,解決方法如下:
關閉VS,打開 CUDA 安裝路徑中的 MSbuildExtensions 文件夾,如果你在之前安裝時選的是默認路徑,那么它應當在 c 盤 / Program File/NVIDIA GPU Cpmputing Toolkit/CUDA/8.0/extras/visual_studio_integration 里

拷貝 MSbuildExtensions 文件夾中的所有文件,復制到 C 盤 / Program File(x86)/MSBuild/Microsoft.Cpp/v4.0(這里取決於你安裝的版本)/V120/BuildCustomizations 文件夾下,替換目標中的文件

這時打開VS,發現他倆不再顯示加載失敗了。
點擊 VS2013 里右邊的 CommonSettings.props 文件
第 7行 false 保持為false(不是只要用CPU,所以為false)
第 8 行 false 改為 true(要用cudnn,所以為true)
第 9 行 7.5 改為 8.0(我的cuda版本為8.0)
第 13 行 false 改為 true(支持python所以為true)
第 24 行 改為你的 cuDNN 的解壓文件中 cuda 文件夾的路徑

如我把 cuda 文件夾復制到 E盤 / cuda7 文件夾下,則我在 CommonSettings.props 中路徑應當為 E:\cuda7

第 48 行改為 Anaconda2 的安裝文件夾,我的Aanconda2在D盤。

4. 編譯
編譯順序:libcafffe->caffe->pycaffe
1)編譯libcaffe:右擊右側libcaffe,選擇屬性,打開如下libcaffe屬性頁:按照如下修改

然后開始編譯libcaffe,點擊
綠色三角即可,結果會很漫長等待,最后可能會有錯誤,我的確實出現錯誤,和大家的錯誤基本一樣,大致是如下:無法打開libcaffe.lib:

網上的解決方案是對libcaffe單獨重新生成,如下圖所示:

然后重新編譯,但這樣的話會出現另外一個錯誤: error C2220:警告被視為錯誤-沒有生成“object”文件
如果出現這樣的錯誤,請打開項目-屬性按照下圖進行更改:

如果已經改好的話,應該就不會再出現錯誤。我在運行的過程中出現了上面提及的兩個錯誤,通過重新生成和將警告是為錯誤這兩個解決方法,最終編譯正確。
編譯完成后,caffe_master文件夾下應該生成了一個名為Build的文件夾,以后編譯的成功和運行需要的文件都會存放在..\build\X64\Relase下面。
2)編譯caffe
在Visual Studio 2013的解決方案上面右擊選擇屬性(properties)

出現 解決方案“caffe”屬性頁:按照如下設置,也有教程說選單啟動項目,好像都可以。

這個過程更慢,過程需要聯網因為可能會翻牆,這個過程的結果是為了下載caffe需要用到的第三方庫:NugetPackages(里面有16個文件)

可能有的人中途失敗或其他原因,所以網上有人把這個包下載好了,可以直接拿來放到上圖路徑即可。
放到和caffe-windows文件夾的同級目錄下。這樣之后再打開Caffe.sln時能夠自動識別出來,提供一個NugetPackages文件夾的壓縮包:http://pan.baidu.com/s/1qYpg3bY,提取碼f2zx。
最終編譯完成后,會在Release下出現caffe.exe,如果出現說明編譯成功。

測試:直接打開與右側的caffe.cpp,按Ctrl+f5執行。

執行結果:下圖為結果即ok!

3)編譯pycaffe
我在編譯的時候是直接點擊pycaffe,直接運行即可,結果也正確,沒有出現任何錯誤或者警告。網上好多教程是要配置路徑(出錯時),這里不再贅述。
5.測試
首先下載mnist數據集http://yann.lecun.com/exdb/mnist/,這里需要注意的是caffe並不直接通過下載得到的四個文件進行訓練,而是會把它轉化為lmdb或leveldb格式進行讀取。lmdb是lightning(閃電的) memory-mapped database manager的縮寫,能夠把原始數據通過更為高效的存儲方式存儲,從而加快讀取和訓練速度(lmdb比leveldb更快,可以看看剛剛的NugetPackages文件夾,當中就包含着對應的庫)。
實現這個轉化的代碼是\examples\mnist的convert_mnist_data.cpp,但也沒必要看,因為它的運行腳本create_mnist.sh顯然是linux下的東西。有教程紹如何實現自己的數據集向lmdb和leveldb轉換。目前更很好的辦法就是直接網盤下載,這里分享一個http://pan.baidu.com/s/1c2G9qyk 提取碼xama。
里面是已經經過轉換的leveldb格式的訓練集和測試集,把這兩個文件夾直接放到\examples\mnist目錄下,如下圖所示:

如果你沒有gpu,則要改一個部位:
首先用VS打開\examples\mnist目錄下的lenet_solver.prototxt,將最后一行改成CPU:

如果有gpu則不用改動。
可以看到,這個文件是對網絡訓練參數進行指定:max_iter指定了最大迭代次數,snapshot是輸出中間結果。上圖中的參數已經修改過,初始的max_iter和snapshot是10000和5000。
接着再用VS打開\examples\mnist目錄下的lenet_train_test.prototxt,做如下修改以正確指定訓練集和測試集。

這里額外介紹下caffe-windows采用的LeNet-5模型,也就是上圖中layer的定義方式。提供該模型的原始資料以供參考:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf
完成上述工作后就可以編寫bat腳本進行正式訓練了。回到caffe-windows的根目錄下新建一個run.txt並寫入以下內容:

即在下圖的路徑中,先新建一個mytrain.txt(名字隨意),然后寫入上圖內容,保存時另存為mytrain.bat。

如上圖,即mytrain.bat
( bat文件是dos下的批處理文件。批處理文件是無格式的文本文件,它包含一條或多條命令。它的文件擴展名為 .bat 或 .cmd。在命令提示下鍵入批處理文件的名稱,或者雙擊該批處理文件,系統就會調用cmd.exe按照該文件中各個命令出現的順序來逐個運行它們。使用批處理文件(也被稱為批處理程序或腳本),可以簡化日常或重復性任務。)普及下。。
后綴名改成bat后雙擊運行,出現類似如下的訓練過程:

好了,在我gtx950的gpu下,速度蠻快的,大約十多秒跑完:


OK,吃飯去!
補充下參考博客:
多多參考,才能仔細認真
http://www.cnblogs.com/yixuan-xu/p/5858595.html 從零到一:caffe-windows(CPU)配置與利用mnist數據集訓練第一個caffemodelhttp://www.cnblogs.com/marso/p/caffe_win10_python.html http://www.cnblogs.com/marso/p/caffe_win10_python.html
http://www.cnblogs.com/marso/p/caffe_win10_python.html 基於Windows10 x64+visual Studio2013+Python2.7.12環境下的Caffe配置學習
cn.bing.com/?FORM=Z9FD1 Windows10+GTX950m+VS2013 環境下編譯 Caffe(網頁音樂不錯23333)
http://www.2cto.com/kf/201612/575865.html Windows 10下安裝配置Caffe並支持GPU加速
http://blog.csdn.net/yingwei13mei/article/details/53890072 Caffe之win10版安裝小結--細數自己遇到的各種坑
http://blog.csdn.net/qq_14845119/article/details/52415090 Windows下caffe安裝詳解(cpu+gpu+matcaffe+pycaffe)
http://m.blog.csdn.net/article/details?id=51549105 【caffe-Windows】caffe+VS2013+Windows+GPU配置+cifar使用
http://blog.csdn.net/happynear/article/details/45372231 如何快糙好猛地在Windows下編譯CAFFE並使用其matlab和python接口
