【caffe-Windows】mnist实例编译之model的使用-classification
2016-08-16 11:24
405 查看
仿照cifar10的模型使用,本文对mnist的训练方式做了部分修改
【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/fdcd5ea924f6b528a9dbda2998620686)
train:链接:http://pan.baidu.com/s/1cJZNI2 密码:ikz8
test:链接:http://pan.baidu.com/s/1gfuhmvx 密码:7krq
mean.binaryproto:链接:http://pan.baidu.com/s/1dFp19i5 密码:xhux
修改此文件夹下的训练方法lenet_train_test1.prototxt的前两层,就是在原来的基础上把均值文件加进去。同时注意lenet_solver.prototxt中的net是你修改以后的prototxt文件,我是把修改后的prototxt训练文件命名为lenet_train_test1.prototxt了(加了一个1)
lenet_solver1.prototxt:链接:http://pan.baidu.com/s/1kVxwQl5 密码:3o5a
此处注意一下CPU与GPU的训练仅仅需要修改lenet_solver1.prototxt的最后一行即可
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/5146809b14f38f359dd1bd9aa0dc4a03)
训练好的lenet_iter_10000.caffemodel共享 : 链接:http://pan.baidu.com/s/1i55hlid 密码:7fxl
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/8b37327534814faafa0266250b3e77c9)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/e7e0b90c3a906929e44946b97c868cbe)
为了方便直接调整写的数字的大小,如果你这里不调整大小,在matlab里面有相关的resize函数,自己查询调用方法,很简单
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/58249319250aa664e2939407cb2cd693)
然后,写几张,本人龙飞凤舞地画了几张:链接:https://pan.baidu.com/s/1mkf3aXi 密码:zo3c
可以发现,这个保存下来的是RGB图像,三通道,然而我们的测试集和训练集mnist都是灰度图像,怎么办,简单,用matlab转
转换完毕的测试集:链接:http://pan.baidu.com/s/1o7NySMu 密码:bead
在E:\CaffeDev-GPU\caffe-master\examples\mnist下建立标签文件synset_words.txt:
调用classification.exe去识别某张图片,E:\CaffeDev-GPU\caffe-master目录新建mnist_class.bat
运行就会得到结果
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/a2e5195087a8033cf0c09ccaf2c9f671)
【已解决】【笔者注】现在正在研究matlab的实现,在预处理部分卡住了,在模型中加入均值计算以及归一化以后,这两个操作有没有先后顺序,在matlab中先进行了减均值计算,发现数据分布有大于0和小于0的,如果直接除以255,肯定不可能归一化到[0,1],此法测试效果很差,肯定错了。如果采用mapminmax(A,0,1)归一化到[0,1],结果也是错的。如果有想法的同学请私密我一下,一起探讨一下matlab的实现
参考预处理代码详解:http://blog.csdn.net/langb2014/article/details/51050213
python的实现:http://www.dongcoder.com/detail-57212.html
【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式)
第一步
按照前面的model生成方法的前两步骤制作数据集,得到两个文件夹。并拷贝到E:\CaffeDev-GPU\caffe-master\Build\x64\Releasetrain:链接:http://pan.baidu.com/s/1cJZNI2 密码:ikz8
test:链接:http://pan.baidu.com/s/1gfuhmvx 密码:7krq
第二步
计算均值文件:在E:\CaffeDev-GPU\caffe-master\Build\x64\Release目录下新建bat文件mnist_mean.bat,内容如下compute_image_mean.exe mnist_train_leveldb mean.binaryproto pause得到mean.binaryproto
mean.binaryproto:链接:http://pan.baidu.com/s/1dFp19i5 密码:xhux
第三步
将上面两步的train和test数据集以及均值文件拷贝到E:\CaffeDev-GPU\caffe-master\examples\mnist文件夹下,方便后面的路径书写修改此文件夹下的训练方法lenet_train_test1.prototxt的前两层,就是在原来的基础上把均值文件加进去。同时注意lenet_solver.prototxt中的net是你修改以后的prototxt文件,我是把修改后的prototxt训练文件命名为lenet_train_test1.prototxt了(加了一个1)
name: "LeNet" layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { mean_file: "examples/mnist/mean.binaryproto" scale: 0.00390625 } data_param { source: "examples/mnist/mnist_train_leveldb" batch_size: 64 backend: LEVELDB } } layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TEST } transform_param { mean_file: "examples/mnist/mean.binaryproto" scale: 0.00390625 } data_param { source: "examples/mnist/mnist_test_leveldb" batch_size: 100 backend: LEVELDB } }lenet_train_test1.prototxt:链接:http://pan.baidu.com/s/1skBN3Md 密码:ixzt
lenet_solver1.prototxt:链接:http://pan.baidu.com/s/1kVxwQl5 密码:3o5a
第四步
在E:\CaffeDev-GPU\caffe-master目录下新建训练bat文件train_minist.bat,内容如下:.\Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver1.prototxt pause
此处注意一下CPU与GPU的训练仅仅需要修改lenet_solver1.prototxt的最后一行即可
训练好的lenet_iter_10000.caffemodel共享 : 链接:http://pan.baidu.com/s/1i55hlid 密码:7fxl
第五步
测试一下测试集的分批准确率,同样在E:\CaffeDev-GPU\caffe-master下新建test_mnist.bat,内容如下.\Build\x64\Release\caffe.exe test --model=examples/mnist/lenet_train_test1.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel -gpu=0 pause运行之,得到如下结果:
第六步
这一步往后就比较实用了,先介绍如何制作手写数字的单张测试样本。两种方法:①按照我前面的博客,从mnist数据集里面摘取里面的某张或者某些图片;②用Windows的画图工具自己手写一张(怎么打开画图工具就不说了吧)为了方便直接调整写的数字的大小,如果你这里不调整大小,在matlab里面有相关的resize函数,自己查询调用方法,很简单
然后,写几张,本人龙飞凤舞地画了几张:链接:https://pan.baidu.com/s/1mkf3aXi 密码:zo3c
可以发现,这个保存下来的是RGB图像,三通道,然而我们的测试集和训练集mnist都是灰度图像,怎么办,简单,用matlab转
%存储二值图像 image=imread('009.png'); im=255-rgb2gray(image); imshow(im) imwrite(uint8(im),'./binarybmp/9.bmp');【注意】这里不要手动去save那个figure哦,不然图像会比28*28大,一定要用imwrite,并且格式为bmp
转换完毕的测试集:链接:http://pan.baidu.com/s/1o7NySMu 密码:bead
第七步
把转换好的二值图像拷贝到E:\CaffeDev-GPU\caffe-master\examples\mnist\在E:\CaffeDev-GPU\caffe-master\examples\mnist下建立标签文件synset_words.txt:
0 1 2 3 4 5 6 7 8 9
调用classification.exe去识别某张图片,E:\CaffeDev-GPU\caffe-master目录新建mnist_class.bat
E:\CaffeDev-GPU\caffe-master\Build\x64\Release\classification.exe E:\CaffeDev-GPU\caffe-master\examples\mnist\lenet.prototxt E:\CaffeDev-GPU\caffe-master\examples\mnist\lenet_iter_10000.caffemodel E:\CaffeDev-GPU\caffe-master\examples\mnist\mean.binaryproto E:\CaffeDev-GPU\caffe-master\examples\mnist\synset_words.txt E:\CaffeDev-GPU\caffe-master\examples\mnist\binarybmp\0.bmp pause
运行就会得到结果
【已解决】【笔者注】现在正在研究matlab的实现,在预处理部分卡住了,在模型中加入均值计算以及归一化以后,这两个操作有没有先后顺序,在matlab中先进行了减均值计算,发现数据分布有大于0和小于0的,如果直接除以255,肯定不可能归一化到[0,1],此法测试效果很差,肯定错了。如果采用mapminmax(A,0,1)归一化到[0,1],结果也是错的。如果有想法的同学请私密我一下,一起探讨一下matlab的实现
参考预处理代码详解:http://blog.csdn.net/langb2014/article/details/51050213
python的实现:http://www.dongcoder.com/detail-57212.html
相关文章推荐
- 【caffe-Windows】mnist实例编译之model的使用-classification
- jQuery基础_2
- 剑指Offer_24_二叉树中和为某一值的路径
- jQuery操作select-----1
- CSS3 :nth-child() 选择器
- Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.
- Css暴力绘制圆角矩形
- html标签的嵌套规则
- HTML
- 使用h5的history改善ajax列表请求体验
- JSTL的c:forEach标签(${status.index})
- 开源wkhtmltopdf使用心得 (二)
- 认识前端安全
- HTML5 视频直播
- Css暴力绘制圆角矩形
- 转载:Js中的window.parent ,window.top,window.self 详解
- js实现阶乘
- Html使用CSS自定义字体的总结
- json数组的序列化和反序列化json数组的序列化和反序列化
- js获取a标签的值