基于Caffe的Mnist数据集手写识别

操作指南——此文已非常之详细

注意执行convert-mnist-data是在 Build\x64\Release\ 目录下,而不是存放数据的目录下, 所以用绝对路径定位到该exe文件

训练集脚本:

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\convert_mnist_data.exe train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdb  
pause

测试集脚本:

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\convert_mnist_data.exe t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdb  
pause

\examples\mnist下的文件 lenet_solver.prototxt中的训练平台改为CPU

lenet_train_test.prototxt 是要采用的训练模型的具体实现。

然而,开始训练的时候,魔鬼又出现了。。ImportError: No module named _caffe

明明之前import成功了,后来找到一个解决方案 :把Build\x64\Release\pycaffe\caffe目录下的所有文件复制到caffe-windows\python\caffe目录中,也就是把原文件夹中的一部分文件用编译完成的新文件替换。

.\draw_net.py可以查看训练网络的可视化。

caffe根目录下创建训练运行脚本

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\caffe.exe  train --solver=examples/mnist/lenet_solver.prototxt    
pause

接下来参考这篇博客

最终模型存储在lenet_iter_10000

测试脚本

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\caffe.exe test --model examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel
pause

测试结果

1
2
I1219 00:44:56.921839  6236 caffe.cpp:331] accuracy = 0.9854
I1219 00:44:56.921839 6236 caffe.cpp:331] loss = 0.0447507 (* 1 = 0.0447507 loss)

用图片进行测试,参考

脚本生成均值文件mean.binaryproto

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\compute_image_mean mnist_train_lmdb mean.binaryproto 
pause

准备好测试图片,png格式

标签文件lable.txt

图片测试脚本

1
2
C:\Users\18771\Desktop\caffenew\caffe-windows\Build\x64\Release\classification lenet.prototxt ./lenet/_iter_10000.caffemodel mean.binaryproto label.txt 8.png
pause

但是结果有问题,应该是图片格式的原因。

一下步要学习将图片转为Lmdb格式