日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)

發(fā)布時(shí)間:2025/3/21 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

準(zhǔn)備數(shù)據(jù)集

http://yann.lecun.com/exdb/mnist/提供了訓(xùn)練集與測(cè)試集數(shù)據(jù)的下載。

但是caffe并不是直接處理這些數(shù)據(jù),而是要轉(zhuǎn)換成lmdb或leveldb格式進(jìn)行讀取。如何轉(zhuǎn)換可以再去查閱相關(guān)資料,為簡(jiǎn)化步驟,直接給出下載地址:
鏈接:http://pan.baidu.com/s/1nv3a5LJ 密碼:jvlt
數(shù)據(jù)集格式是leveldb。

進(jìn)行訓(xùn)練

在正式開始訓(xùn)練之前,要先配置一些參數(shù)。
進(jìn)入到配置caffe環(huán)境時(shí)編譯caffe工程的目錄。
1、打開目錄下的 \examples\mnist 下的lenet_solver.prototxt。

更改最后的solver_mode,是CPU版本的填CPU,GPU版本的填GPU。

# The maximum number of iterations max_iter: 10000

最大迭代次數(shù)為10000次,訓(xùn)練進(jìn)行到10000次停止。

# snapshot intermediate results snapshot: 5000 snapshot_prefix: "examples/mnist/lenet"

snapshot為中間過程文件,后面輸出文件中包含了中間過程生成的caffelmodel文件。

2、接著打開 \examples\mnist 下的lenet_train_test.prototxt。

source指定到訓(xùn)練集存放的目錄;
backend選擇LEVELDB;


source指定到測(cè)試集存放的目錄;
backend選擇LEVELDB;

mnist的數(shù)據(jù)集存放目錄在:\examples\mnist

3、接下來(lái)可以開始訓(xùn)練了。
在編譯caffe的工程根目錄下編寫bat腳本:

Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt pause

Build\x64\Release\caffe.exe:指定到caffe.exe所在目錄,caffe.exe就是之前caffe工程編譯后的可執(zhí)行文件。
train:進(jìn)行訓(xùn)練。
--solver=examples/mnist/lenet_solver.prototxt:lenet_solver.prototxt就是之前更改的配置文件。
編寫完成后,保存,雙擊運(yùn)行bat腳本。
caffe開始訓(xùn)練,首先會(huì)打印一些配置信息:

我的電腦裝的是GPU版本。
訓(xùn)練幾分鐘后結(jié)束。

CPU版本會(huì)慢一些,可能10多分鐘,根據(jù)配置不同速度也不一樣。
4、到\examples\mnist目錄下查看生成的caffemodel文件。

文件后的參數(shù)指迭代次數(shù)。
迭代到5000次時(shí)根據(jù)當(dāng)前的參數(shù)生成一個(gè)caffemodel文件,就是snapshot指定的參數(shù)。
10000次時(shí)最大迭代次數(shù),即輸出結(jié)果。
所以測(cè)試時(shí),調(diào)用的是lenet_iter_10000.caffemodel文件。

測(cè)試結(jié)果

1、測(cè)試之前,還需要產(chǎn)生以下所有圖片的均值文件。計(jì)算時(shí),會(huì)將每幅圖片減去這個(gè)均值,使用差進(jìn)行分類??梢杂懈玫姆诸愋Ч?。
產(chǎn)生均值mean文件需要調(diào)用compute_image_mean.exe。
一般會(huì)在\Build\x64\Release下生成,如果沒有,可以打開caffe的工程,選中對(duì)應(yīng)的工程進(jìn)行編譯,就會(huì)產(chǎn)生compute_image_mean.exe。

在根目錄編寫bat腳本,調(diào)用compute_image_mean.exe生成均值文件。

Build\x64\Release\compute_image_mean.exe examples\mnist\mnist_train_leveldb mean.binaryproto --backend=leveldb pause


生成的mean文件。

2、生成了mean文件后,可以使用caffe.exe調(diào)用訓(xùn)練好的模型識(shí)別手寫數(shù)字了。
由于之前生成了mean文件,所以還要在lenet_train_test.prototxt中加上它。

在根目錄編寫bat腳本,調(diào)用caffe.exe識(shí)別手寫數(shù)字。

Build\x64\Release\caffe.exe test --model=examples\mnist\lenet_train_test.prototxt -weights=examples\mnist\lenet_iter_10000.caffemodel -gpu=0 pause

--model=examples\mnist\lenet_train_test.prototxt:指定配置,之前添加了mean文件進(jìn)去。
-weights=examples\mnist\lenet_iter_10000.caffemodel:指定訓(xùn)練好的模型。
-gpu=0:加上表示使用gpu,如果不是gpu版的去掉這個(gè)就可以了。

保存bat腳本,雙擊運(yùn)行。

看accuracy知道,準(zhǔn)確率不是很高。

3、自己手寫數(shù)字來(lái)進(jìn)行識(shí)別,可以使用畫圖工具繪制。

使用matlab編寫簡(jiǎn)單程序?qū)⑷ǖ赖膱D像轉(zhuǎn)換成二值圖像。
相關(guān)步驟可以參考下面這個(gè)博客:
http://blog.csdn.net/zb1165048017/article/details/52217772
不做贅述。

我們得到的圖片放到一個(gè)方便找到的目錄吧,我就直接放到\examples\mnist目錄下了。

編寫bat腳本文件,調(diào)用classification.exe,沒有的自己在編譯caffe的visual studio項(xiàng)目里找到對(duì)應(yīng)工程編譯下就有了。

Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\0.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\1.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\2.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\3.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\4.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\5.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\6.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\7.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\8.bmp Build\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\9.bmp pause

識(shí)別效果不是很好,可能訓(xùn)練的迭代次數(shù)還是少了,有待改進(jìn)。

總結(jié)

以上是生活随笔為你收集整理的caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。