caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
来源:互联网 发布:mysql创建表sql语句 编辑:程序博客网 时间:2024/05/19 18:39
准备数据集
http://yann.lecun.com/exdb/mnist/提供了训练集与测试集数据的下载。
但是caffe并不是直接处理这些数据,而是要转换成lmdb或leveldb格式进行读取。如何转换可以再去查阅相关资料,为简化步骤,直接给出下载地址:
链接:http://pan.baidu.com/s/1nv3a5LJ 密码:jvlt
数据集格式是leveldb。
进行训练
在正式开始训练之前,要先配置一些参数。
进入到配置caffe环境时编译caffe工程的目录。
1、打开目录下的 \examples\mnist 下的lenet_solver.prototxt。
更改最后的solver_mode,是CPU版本的填CPU,GPU版本的填GPU。
# The maximum number of iterationsmax_iter: 10000
最大迭代次数为10000次,训练进行到10000次停止。
# snapshot intermediate resultssnapshot: 5000snapshot_prefix: "examples/mnist/lenet"
snapshot为中间过程文件,后面输出文件中包含了中间过程生成的caffelmodel文件。
2、接着打开 \examples\mnist 下的lenet_train_test.prototxt。
source指定到训练集存放的目录;
backend选择LEVELDB;
source指定到测试集存放的目录;
backend选择LEVELDB;
mnist的数据集存放目录在:\examples\mnist
3、接下来可以开始训练了。
在编译caffe的工程根目录下编写bat脚本:
Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxtpause
Build\x64\Release\caffe.exe
:指定到caffe.exe所在目录,caffe.exe就是之前caffe工程编译后的可执行文件。 train
:进行训练。 --solver=examples/mnist/lenet_solver.prototxt
:lenet_solver.prototxt就是之前更改的配置文件。
编写完成后,保存,双击运行bat脚本。
caffe开始训练,首先会打印一些配置信息:
我的电脑装的是GPU版本。
训练几分钟后结束。
CPU版本会慢一些,可能10多分钟,根据配置不同速度也不一样。
4、到\examples\mnist目录下查看生成的caffemodel文件。
文件后的参数指迭代次数。
迭代到5000次时根据当前的参数生成一个caffemodel文件,就是snapshot指定的参数。
10000次时最大迭代次数,即输出结果。
所以测试时,调用的是lenet_iter_10000.caffemodel文件。
测试结果
1、测试之前,还需要产生以下所有图片的均值文件。计算时,会将每幅图片减去这个均值,使用差进行分类。可以有更好的分类效果。
产生均值mean文件需要调用compute_image_mean.exe。
一般会在\Build\x64\Release下生成,如果没有,可以打开caffe的工程,选中对应的工程进行编译,就会产生compute_image_mean.exe。
在根目录编写bat脚本,调用compute_image_mean.exe生成均值文件。
Build\x64\Release\compute_image_mean.exe examples\mnist\mnist_train_leveldb mean.binaryproto --backend=leveldbpause
生成的mean文件。
2、生成了mean文件后,可以使用caffe.exe调用训练好的模型识别手写数字了。
由于之前生成了mean文件,所以还要在lenet_train_test.prototxt中加上它。
在根目录编写bat脚本,调用caffe.exe识别手写数字。
Build\x64\Release\caffe.exe test --model=examples\mnist\lenet_train_test.prototxt -weights=examples\mnist\lenet_iter_10000.caffemodel -gpu=0pause
--model=examples\mnist\lenet_train_test.prototxt
:指定配置,之前添加了mean文件进去。 -weights=examples\mnist\lenet_iter_10000.caffemodel
:指定训练好的模型。 -gpu=0
:加上表示使用gpu,如果不是gpu版的去掉这个就可以了。
保存bat脚本,双击运行。
看accuracy知道,准确率不是很高。
3、自己手写数字来进行识别,可以使用画图工具绘制。
使用matlab编写简单程序将三通道的图像转换成二值图像。
相关步骤可以参考下面这个博客:
http://blog.csdn.net/zb1165048017/article/details/52217772
不做赘述。
我们得到的图片放到一个方便找到的目录吧,我就直接放到\examples\mnist目录下了。
编写bat脚本文件,调用classification.exe,没有的自己在编译caffe的visual studio项目里找到对应工程编译下就有了。
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.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\1.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\2.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\3.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\4.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\5.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\6.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\7.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\8.bmpBuild\x64\Release\classification.exe examples\mnist\lenet.prototxt examples\mnist\lenet_iter_10000.caffemodel mean.binaryproto examples\mnist\synset_words.txt examples\mnist\9.bmppause
识别效果不是很好,可能训练的迭代次数还是少了,有待改进。
- caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
- Caffe学习(二)Mnist手写数字识别测试与分析
- 【caffe学习笔记——mnist】mnist手写数据集训练和测试
- Tensorflow学习笔记(二):利用CNN实现手写数字(mnist)识别
- TensorFlow学习笔记(二)MNIST手写数字识别
- 基于Tensorflow, OpenCV. 使用MNIST数据集训练卷积神经网络模型,用于手写数字识别
- Windows Caffe 学习笔记 caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
- Caffe mnist数据集训练
- caffe的python接口学习(4):mnist实例---手写数字识别
- caffe的python接口学习(4):mnist实例---手写数字识别
- caffe的python接口学习(4):mnist实例---手写数字识别
- Caffe——Python接口学习(4):mnist实例——手写数字识别
- caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
- 从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
- caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel
- 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
- 【TensorFlow-windows】(一)实现Softmax Regression进行手写数字识别(mnist)
- 【TensorFlow-windows】(三) 多层感知器进行手写数字识别(mnist)
- 文件内建方法read()、readline(),readlines()
- 关于自定义View简单说明
- Java学习第一天
- 代码审查工具Eclipse插件FindBugs安装使用
- Java数组的基本操作方法整理
- caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
- 7.19
- js跳转新页面,指定div加载新页面
- android之在线音乐播放器
- UVa253--Cube painting--骰子涂色--重在算法思想
- pip install geohash后无法import的解决方法
- 显式锁之自旋锁
- 程序安装异常:此项不适合在指定状态下使用
- python---模块与包