【caffe-Windows】mnist实例编译之model的使用-classification

标签: 深度学习caffe
2016-08-16 11:24 1349人阅读 评论(12) 收藏 举报
本文章已收录于:
分类:
caffe(14)

作者同类文章X

版权声明:欢迎大家一起交流,有错误谢谢指正~~~多句嘴,CSDN会在每一行代码后面加两个空格,复制博客代码时请手动去掉,尤其是bat里面的代码

目录(?)[+]

  1. 第一步
  2. 第二步
  3. 第三步
  4. 第四步
  5. 第五步
  6. 第六步
  7. 第七步

仿照cifar10的模型使用,本文对mnist的训练方式做了部分修改

【注】本文caffe安装路径为E:\CaffeDev-GPU\caffe-master。请自行参考并修改相关路径(debug以及release参考你编译caffe时候采用的模式)

第一步

按照前面的model生成方法的前两步骤制作数据集,得到两个文件夹。并拷贝到E:\CaffeDev-GPU\caffe-master\Build\x64\Release

train:链接: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,内容如下

[html] view plaincopyprint?
  1. compute_image_mean.exe mnist_train_leveldb mean.binaryproto
  2. pause

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)

[html] view plaincopyprint?
  1. name: "LeNet"
  2. layer {
  3. name: "mnist"
  4. type: "Data"
  5. top: "data"
  6. top: "label"
  7. include {
  8. phase: TRAIN
  9. }
  10. transform_param {
  11. mean_file: "examples/mnist/mean.binaryproto"
  12. scale: 0.00390625
  13. }
  14. data_param {
  15. source: "examples/mnist/mnist_train_leveldb"
  16. batch_size: 64
  17. backend: LEVELDB
  18. }
  19. }
  20. layer {
  21. name: "mnist"
  22. type: "Data"
  23. top: "data"
  24. top: "label"
  25. include {
  26. phase: TEST
  27. }
  28. transform_param {
  29. mean_file: "examples/mnist/mean.binaryproto"
  30. scale: 0.00390625
  31. }
  32. data_param {
  33. source: "examples/mnist/mnist_test_leveldb"
  34. batch_size: 100
  35. backend: LEVELDB
  36. }
  37. }

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: 64backend: 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: 100backend: 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,内容如下:

[html] view plaincopyprint?
  1. .\Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver1.prototxt
  2. pause

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

此处注意一下CPU与GPU的训练仅仅需要修改lenet_solver1.prototxt的最后一行即可

第五步

测试一下测试集的分批准确率,同样在E:\CaffeDev-GPU\caffe-master下新建test_mnist.bat,内容如下

[html] view plaincopyprint?
  1. .\Build\x64\Release\caffe.exe test --model=examples/mnist/lenet_train_test1.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel -gpu=0
  2. pause

.\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函数,自己查询调用方法,很简单

然后,写几张,本人龙飞凤舞地画了几张:链接:http://pan.baidu.com/s/1o79lL5S 密码:umjl

可以发现,这个保存下来的是RGB图像,三通道,然而我们的测试集和训练集mnist都是灰度图像,怎么办,简单,用matlab转

[html] view plaincopyprint?
  1. %存储二值图像
  2. image=imread('009.png');
  3. im=255-rgb2gray(image);
  4. imshow(im)
  5. imwrite(uint8(im),'./binarybmp/9.bmp');

%存储二值图像
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:

[html] view plaincopyprint?
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9

0
1
2
3
4
5
6
7
8
9

调用classification.exe去识别某张图片,E:\CaffeDev-GPU\caffe-master目录新建mnist_class.bat

[cpp] view plaincopyprint?
  1. 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
  2. pause

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相关推荐

  1. 【caffe-Windows】mnist实例编译之model的使用-matlab

    前言 针对上一个caffe文章留下的matlab手写数字识别的问题,感谢caffe中文社区的 @ghgzh 的提示,原文请看:caffe中文社区 第一步 手写图片的制作方法我就不说了,直接把我自己画的 ...

  2. 【caffe-Windows】mnist实例编译之model的生成

    其实这个和cifar的实例基本相同,只不过数据转换的方法不一样 [说明,此博客按照我自己的路径设置的相关操作,读者如果自行选择其他路径,记得在bat和prototxt等文件修改路径] 第一步 下载数据 ...

  3. Caffe Windows版本的编译

    2019独角兽企业重金招聘Python工程师标准>>> 1:Caffe的主版本只支持Linux,所以要下载专门的Caffe Windows版本,网址为 https://github. ...

  4. 【caffe-Windows】cifar实例编译之model的生成

    参考:<span style="font-family: Arial, Helvetica, sans-serif;">http://blog.csdn.net/che ...

  5. 【caffe-Windows】cifar实例编译之model的使用

    本文讲解如何对网上下载的一个图片利用训练好的cifar模型进行分类 第一步 上一篇文章训练好以后会得到两个文件 从网上查阅资料解释来看,第一个caffemodel是训练完毕得到的模型参数文件,第二个s ...

  6. 使用caffe对mnist进行训练遇到的点点滴滴

    1. 前言 caffe 是一个非常好用的处理深度学习的基本框架,使用C++编写,因而速度非常快,同时提供了python 和 matlab接口,使用起来非常方便,但是由于caffe的文档资源相对比较少, ...

  7. 运行caffe自带的mnist实例教程

    运行caffe自带的mnist实例教程 1.先进入caffe文件目录,(指令:cd ./caffe),再用data/mnist下的get_mnist.sh下載MNIST数据集,代码如下: cd ./c ...

  8. caffe学习日记--lesson4:windows下caffe DEMO (mnist and cifar10)

    caffe学习日记--lesson4:windows下caffe DEMO (mnist and cifar10) 1.下载数据 mnist官网:http://yann.lecun.com/exdb/ ...

  9. Windows Caffe中MNIST数据格式转换实现

    Caffe源码中src/caffe/caffe/examples/mnist/convert_mnist_data.cpp提供的实现代码并不能直接在Windows下运行,这里在源码的基础上进行了改写, ...

最新文章

  1. 学习C#要养成的好习惯
  2. Bzoj 2064 分裂 题解
  3. linux 删除o开头的文件,linux实现除了某个文件或某个文件夹以外的全部删除
  4. BugKuCTF WEB 计算器
  5. Bomb(hdu 3555)
  6. 【转】通过第三方工具体验Microsoft Graph
  7. 区块链究竟是什么?看完这篇秒懂!
  8. 【Vue.js源码解析 一】-- 响应式原理
  9. html中文案竖排怎么写,做了这个活动,感觉自己成了垂直排版css大师(文字竖排)...
  10. 简书java前端_Java前端知识之JSP
  11. 明略数据是谁?为何能拿下腾讯在行业AI的高额投资
  12. 3.5 RNN 字符级语言模型
  13. 字符串(后缀自动机):COGS 2399. 循环同构
  14. EasyUi模糊匹配搜索框combobox
  15. QQ音乐2009去广告方法
  16. cadence SPB17.4 allegro + CAM350 10.5 / 10.7 / 14.6 出拼板
  17. 数字信号处理实验三用fft对信号作频谱分析_矢量信号分析
  18. c语言如何检测磁盘坏扇区,解决方案:如何检测和修复机械硬盘驱动器上的坏扇区?阅读本文后,您将知道...
  19. 公园遛狗(小 * 逛公园)
  20. ubuntu控制台访问u盘_虚拟机ubuntu访问u盘

热门文章

  1. mysql数据库访问300ms以上_[Java教程]一张900w的数据表,16s执行的SQL优化到300ms?...
  2. fwr171改无线服务器,迅捷(Fast)FWR171无线AP模式设置
  3. 24点游戏c语言去除重复,C语言解24点游戏程序
  4. android 创建虚拟内存,在 Android 的 /data 目录下添加虚拟内存
  5. tp5备份mysql_tp5备份数据库
  6. c 语言链表的另一种实现
  7. 机器学习笔记: Upsampling, U-Net, Pyramid Scene Parsing Net
  8. linux 命令集锦
  9. MATLAB实战系列(三十六)-MATLAB 离散Hopfield神经网络的分类——高校科研能力评价
  10. Flink从入门到精通100篇(二十)-跨境电商 Shopee 的实时数仓之路