1. 程式人生 > >caffe使用lenet5識別手寫數字

caffe使用lenet5識別手寫數字

train資料夾下有10個類別0~9,每個類別500張圖,每張圖大小為28*28,影象深度為32,val資料夾下有10個類別0~9,每個類別100張圖,新建train.txt、val.txt標籤檔案,如圖
這裡寫圖片描述
caffe中已經編寫好了lenet5模型,在路徑D:\caffe\caffe-windows\examples\mnist下,複製create_mnist.sh、lenet.prototxt、lenet_solver.prototxt、lenet_train_test.prototxt、train_lenet.sh檔案到自己的工作目錄下,從D:\caffe\caffe-windows\examples\imagenet中複製make_imagenet_mean.sh檔案到工作目錄下,修改相應檔案的路徑引數,參照

http://blog.csdn.net/baidu_30028771/article/details/60882620
train_lenet.sh中為:

#!/usr/bin/env sh
set -e
.D:/caffe/caffe-windows/Build/x64/Release/caffe train \
    --solver=D:/caffe/caffe-windows/data/work/lenet_solver.prototxt [email protected]
echo "done."
pause

如果安裝了git軟體,就可以直接雙擊執行,開始訓練模型。訓練完成後就會得到lenettt_iter_5000.caffemodel、lenettt_iter_5000.solverstate檔案,新建一個.bat檔案,內容為:

D:\caffe\caffe-windows\Build\x64\Release\caffe.exe test --model=D:\caffe\caffe-windows\data\work\lenet_train_test.prototxt --weights=D:\caffe\caffe-windows\data\work\lenettt_iter_5000.caffemodel
pause

執行後可以檢視訓練的模型結果,
這裡寫圖片描述
可以看到accuracy=0.956,在上一篇pca+svm識別手寫數字中http://blog.csdn.net/baidu_30028771/article/details/71304559

,accuracy=0.875(引數未調優情況下)。
接下來可以自己用畫筆寫幾個數字進行預測分類,新建test.bat,內容為:

D:\caffe\caffe-windows\Build\x64\Release\classification.exe D:\caffe\caffe-windows\data\work\lenet.prototxt D:\caffe\caffe-windows\data\work\lenettt_iter_2500.caffemodel D:\caffe\caffe-windows\data\work\imagenet_mean.binaryproto D:\caffe\caffe-windows\data\work\test.txt D:\caffe\caffe-windows\data\work\test\00.bmp
pause   

這裡寫圖片描述
可以準確的識別自己手寫的數字。
這裡寫圖片描述

說明:在進行訓練的時候,我們用的黑底白字,在預測分類的時候,可以用黑底白字,也可以用白底黑字,但預測結果可能會不一樣,因此儘量和測試集保持一致。