caffe入門學習(2):Exmaple mnist訓練和測試步驟

編譯配置好caffe的環境後,下一步做什麼的,直接看什麼幾層網絡,太抽象了,第一步先把流程跑起來,看它能做些什麼。

在caffe源碼中,自帶了三個例子:

mnist
cifar10
ilsvrc12

一個一個來吧,本文先從mnist開始,熟悉caffe的模型訓練和測試步驟。

mnist是什麼?

MNIST手寫數字數據庫是另外一個更大的手寫體數據庫NIST的子集,現在已成爲圖像識別領域用來測試自己的算法的一個基準數據庫,它的訓練集由60000張手寫數字圖片樣本組成,測試集包含了10000個樣本,其中所有的圖片樣本都經過了尺寸標準化和中心化,圖片的大小固定爲28*28。

據說該數據集中的圖片是由美國中學生手寫的數字,所以非常貼近實際。
這裏寫圖片描述

還是先看官網的說明:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html

下面就是基本的訓練步驟:

1、下載數據。

程序本身不帶測試數據,需要去下載,正常步驟應該是用
.\caffe\data\mnist\get_mnist.sh
下載數據,然後用
./examples/mnist/create_mnist.sh
轉換格式就可以了
:Windows下的sh運行方法,就是將後綴名改成“bat”,就可以雙擊運行。

實際情況,這個腳本自動下載數據,但一般都不成功,可能裏面的網址被牆了。

可以直接到此下載:http://pan.baidu.com/s/1hry1f4g

下載好後直接解壓,得到兩個文件夾

mnist-train-leveldb
mnist-test-leveldb

然後,將這兩個文件夾直接拷貝到目錄下

.\examples\mnist\

2、修改網絡結構文件

lenet_train_test.prototxt

這裏寫圖片描述
說明:
1)在此給出用於訓練的MNIST數據mnist-train-leveldb以及mnist-test-leveldb的路徑,路徑都改爲絕對路徑
2)在此定義這個網絡都有哪些層,給出每一層的定義
3)數據類型改爲LEVELDB

3、設置網絡求解文件

lenet_solver.prototxt

這裏寫圖片描述

說明:
1)在此指明我們要訓練的網絡是lenet_train.prototxt,給出lenet_train.prototxt的路徑,這裏要用絕對路徑;
2)指定模型輸出路徑,mnist下的lenet文件夾必須存在,如果不存在就會報錯
3)定位到最後一行:solver_mode: GPU,默認是GPU,如你沒有GPU則改爲CPU

4、修改訓練腳本

train_lenet.sh改爲 train_lenet.bat
這裏寫圖片描述

說明:
1)刪除# !/user/bin/env sh
2)使用絕對路徑

5、訓練數據

這裏寫圖片描述

雙擊train_lenet.bat開始訓練,如果是GPU,會很快完成,用CPU的話就需要多等一段時間。

說明
1)運行代碼初始化時,出現的信息包括每一層的詳細信息,其連接和輸出形狀,該信息有助於debugging.初始化之後,開始training,基於solver setting,根據設置,每100次iterations將會打印出training loss function,每1000次iterations將會測試network,出現的信息中,對於每一次training iteration lr是iteration的learning rate, loss是training function,對於testing phase的輸出,score 0 是精確度, scorce 1是 testing loss function.

2)經過幾分鐘後,Optimization Done信息出現表明訓練完成,最終的model,以二進制protobuf file存儲在 lenet_iter_10000, 接下來你可以將此訓練模型用於實際的數據集。

訓練完成後目錄下會生成結果:

lenet_iter_10000.caffemodel
lenet_iter_10000.solverstate
lenet_iter_5000.caffemodel
lenet_iter_5000.solverstate

6、用腳本測試

有三種接口可以進行測試數據,命令行、Python、MATLAB,本例中採用命令行進行測試。
1)創建測試命令腳本
新建一個腳本文件,比如命名爲 test_lenet_mnist.bat
裏面內容爲:

e:/caffe/Build/x64/Release/caffe.exe test
–weights=e:/caffe/examples/mnist/lenet_iter_10000.caffemodel -gpu=0

pause

說明
1)先是test表明是要評價一個已經訓練好的模型。
2)然後指定模型prototxt文件,這是一個文本文件,詳細描述了網絡結構和數據集信息。

2)雙擊執行批處理測試
這裏寫圖片描述
模型lenet_iter_10000.caffemodel測試結果,準確率爲 0.9868

更換成 5000次迭代的模型測試,修改腳本雙擊運行
這裏寫圖片描述

發佈了155 篇原創文章 · 獲贊 59 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章