mnist数据集分类大致分为9步:
1.下载数据集
http://yann.lecun.com/exdb/mnist/
2.下载的原始数据集为二进制文件,需要转换为LEVELDB或LMDB
3.修改网络模型描述文件caffe-windows\examples\mnist\lenet_train_test.prototxt
4.修改超参数文件caffe-windows\examples\mnist\lenet_solver.prototxt
5.开始训练模型
6.等待模型训练好,准备要测试的图片
7.生成均值文件
8.准备标签
9.测试分类效果
下面分别进行操作:
1.分别下载这四个数据集:
2.下载的原始数据集为二进制文件,需要转换为LEVELDB或LMDB
(1)转换训练数据
创建一个windows批处理文件,我这里命名为convert_train_lmdb.bat。用Notepad++修改为:
(批处理文件加参数有两种方法:1.不同参数在同一行用空格隔开。2.如图所示,用空格加^加回车)
在图示位置新建一个lmdb文件夹(train_lmdb文件夹不能存在),然后运行批处理文件,运行结束后再lmdb文件夹里生产以下文件夹:
打开后:
(2)转换测试数据
新建一个批处理文件,这里命名为convert_test_lmdb.bat。用Notepad++修改为:
运行批处理文件,在lmdb文件夹下生成了以下文件夹:
打开后:
3.修改网络模型描述文件caffe-windows\examples\mnist\lenet_train_test.prototxt
(1)把刚才生成的mdb训练数据导入模型(注意斜杠方向):
(2)把刚才生成的mdb测试数据导入模型(注意斜杠方向):
4.修改超参数文件caffe-windows\examples\mnist\lenet_solver.prototxt
传入网络模型描述文件(注意斜杠方向):
在图上位置新建一个model文件夹,生成的网络模型保存到此文件夹,注意:modle后面一定要加反斜杠,博主这里就是开始几次没加反斜杠网络模型一直没生成。下图意思是迭代一万次,每五千次生成网络模型,cpu计算:
5.开始训练模型
首先创建一个批处理文件用来进行模型训练,我这里取名叫train.bat用来调用caffe.exe文件。修改为(注意两行斜杠方向不一样):
执行批处理文件:
等待一段时间后(cpu训练大约得一个小时),在超参数文件里设置好的目标文件夹model里生成以下四个文件:
6.等待模型训练好,准备要测试的图片。
我这里准备了9张图片放在文件夹里:
7.生成均值文件。
创建一个批处理文件用来调用计算均值的程序computer_image_mean.exe,我这里取名为:mniat_mean.bat。修改为:
在目标位置创建mean_file文件夹。运行批处理文件后最终会生成mean.binaryproto文件.
8.准备标签。
新建一个txt文件,我这里命名为label.txt。如图所示写入0-9:
9.测试分类效果。
写一个批处理文件调用我们刚刚训练好的模型对我们准备好的0-9图片进行测试。批处理文件我这里取名为:mnist_classilifcation.bat。修改为:
运行批处理文件,我这里把数字3传入模型,得到的结果如下图:
上图意思是可能性最大的为“3”。