WINDOWS+VS2013下生成caffe並進行cifar10分類測試
http://blog.csdn.net/naaaa/article/details/52118437
標簽: windowsvs2013caffecifar10 2016-08-04 15:33 1316人閱讀 評論(1) 收藏 舉報 分類:版權聲明:本文為博主原創文章,未經博主允許不得轉載。
1.下載vs2013,安裝
http://download.microsoft.com/download/0/7/5/0755898A-ED1B-4E11-BC04-6B9B7D82B1E4/VS2013_RTM_ULT_CHS.iso
2.下載caffe源代碼,解壓
https://github.com/Microsoft/caffe
將caffe-master/windows下CommonSettings.props.example後面的.example去掉。
3.gpu配置
帶gpu的配置:
下載cuda:
https://developer.nvidia.com/cuda-downloads
根據自己的顯卡選擇下載的版本
雙擊exe進行安裝
下載cudnn:
https://developer.nvidia.com/cudnn
下載v4或v5版本
解壓後分別將lib、include、bin文件夾下的文件復制到cuda安裝目錄下的lib、include、bin文件夾下
(默認為:c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x)
無gpu的配置:
記事本打開caffe-master/windows下的CommonSettings.prop修改:
<CpuOnlyBuild>false</CpuOnlyBuild>為<CpuOnlyBuild>true</CpuOnlyBuild>
<UseCuDNN>true</UseCuDNN>為<UseCuDNN>false</UseCuDNN>
編譯每個項目前設置:
項目->屬性->配置屬性->c/c++->預處理器->預處理器定義,添加一項CPU_ONLY
4.生成libcaffe
打開caffe-mastetr/windows下的Caffe.sln
所有項目都要用到libcaffe.lib,所以第一個要編譯這個項目。
libcaffe有很多相關的庫,工程裏已經配置好了可以用NuGet進行下載。
我們需要安裝NuGet包管理器並啟動它。
下載Nuget:
工具->擴展和更新->聯機,搜索NuGet,下載Nuget 包管理
(也可以網站直接下載http://docs.nuget.org/consume/installing-nuget,雙擊安裝)
啟動Nuget:
右鍵工程->啟用NuGet程序包還原。
接著生成libcaffe會在caffe-master\Build\x64\Debug下生成libcaffe.lib
(後續所有的exe文件也都是生成在這個目錄)
5.cifar10訓練數據
http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
下載數據到caffe-master\data\cifar10,解壓。
下載的數據為binary格式,需要轉換為leveldb。
編譯convert_cifar_data項目,生成convert_cifar_data.exe。
打開cmd,cd到caffe-master\Build\x64\Debug,輸入命令(後續所有命令都是在這個路徑下):
convert_cifar_data.exe ../../../data/cifar10/cifar-10-batches-bin ../../../data/cifar10 leveldb
在caffe-master\data\cifar10文件夾下生成cifar10_test_leveldb和cifar10_train_leveldb文件夾
6.求數據圖像均值
編譯compute_image_mean項目,生成compute_image_mean.exe
cmd輸入命令:
compute_image_mean.exe ../../../data/cifar10/cifar10_train_leveldb ../../../data/cifar10/mean.binaryproto --backend=leveldb
7.訓練cifar10模型
打開caffe-master\examples\cifar10\cifar10_quick_solver.prototxt文件:
修改路徑:examples/cifar10 為 ../../../examples/cifar10(兩處)
修改最後一行為:solver_mode: CPU(用gpu就不用改這一項)
打開caffe-master\examples\cifar10\ cifar10_quick_train_test.prototxt文件:
修改backend: LMDB 為 backend: LEVELDB(兩處)
修改mean_file: "examples/cifar10/mean.binaryproto" 為 mean_file:"../../../data/cifar10/mean.binaryproto"(兩處)
修改source: "examples/cifar10/cifar10_train_lmdb" 為 source:"../../../data/cifar10/cifar10_train_leveldb"
修改source: "examples/cifar10/cifar10_test_lmdb" 為 source:"../../../data/cifar10/cifar10_test_leveldb"
編譯caffe項目,生成caffe.exe
cmd輸入命令:caffe.exe train --solver=../../../examples/cifar10/cifar10_quick_solver.prototxt 訓練網絡
CPU訓練會訓練好久,訓練完成後caffe-master/examples/cifar10文件夾下生成
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
8.對圖像進行分類
在caffe-master\data\cifar10下新建文本文件synset_words.txt。
文件內容是cifar10裏面包含的分類種類,如下:
[plain] view plain copy print?
- airplane
- automobile
- bird
- cat
- deer
- dog
- frog
- horse
- ship
- truck
編譯classification項目,生成classification.exe
命令行輸入:
classification.exe ../../../examples/cifar10/cifar10_quick.prototxt ../../../examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 ../../../data/cifar10/mean.binaryproto ../../../data/cifar10/synset_words.txt ../../../examples/images/cat.jpg
就會出來分類結果,我的結果:
[plain] view plain copy print?
- ---------- Prediction for ../../../examples/images/cat.jpg ----------
- 0.9784 - "deer"
- 0.0100 - "cat"
- 0.0094 - "bird"
- 0.0017 - "frog"
- 0.0004 - "dog"
參考博文:http://blog.csdn.net/zb1165048017/article/details/51476516
WINDOWS+VS2013下生成caffe並進行cifar10分類測試