1. 程式人生 > >WINDOWS+VS2013下生成caffe並進行cifar10分類測試

WINDOWS+VS2013下生成caffe並進行cifar10分類測試

-s right post eve str example nts proto copyto

http://blog.csdn.net/naaaa/article/details/52118437

標簽: windowsvs2013caffecifar10 技術分享 分類:

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?
  1. airplane
  2. automobile
  3. bird
  4. cat
  5. deer
  6. dog
  7. frog
  8. horse
  9. ship
  10. 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?
  1. ---------- Prediction for ../../../examples/images/cat.jpg ----------
  2. 0.9784 - "deer"
  3. 0.0100 - "cat"
  4. 0.0094 - "bird"
  5. 0.0017 - "frog"
  6. 0.0004 - "dog"

參考博文:http://blog.csdn.net/zb1165048017/article/details/51476516

WINDOWS+VS2013下生成caffe並進行cifar10分類測試