前言:趁热打铁,完成了mnist实例的训练与测试,并用自己找的图片进行了测试。
本文需要的环境及数据
- 参照上篇博客配置
- 此例子所需数据集及所有需要修改生成的文件都放在云盘里,需要请自取 。链接:http://pan.baidu.com/s/1c16XXAS 密码:69c1
训练模型
- 数据集:程序本身不带测试数据,需要去下载,云盘里有。测试数据为leveldb格式。下载好后直接解压,得到两个文件夹(mnist-train-leveldb和mnist-test-leveldb),将这两个文件夹直接复制.\caffe-windows\examples\mnist .\examples\mnist\ 目录下。
修改配置文件。该目录下prototxt扩展名的都是配置文件。我们需要修改lenet_solver.prototxt,定位到最后一行:solver_mode: GPU,将GPU改为CPU。
另外需要修改 lenet_train_test.prototxt文件的第14,16,31,33行
我这里需要双\,你们自己试一下看需不需要。
- 在D:\APK\caffe-windows\caffe-windows下运行(在你自己的caffe-windows目录下)。新建文本文档txt并重命名为train_mnist.bat,编辑
.\Build\x64\Release\caffe.exe train--solver=examples
\mnist\lenet_solver.prototxt
pause
前两行连在一行写~
双击运行就可以了,结果如下:
用标准数据集测试模型:
按上一步骤生成test_mnist.bat,前边写在一行。
.\Build\x64\Release\caffe.exe
test--model=examples/mnist/lenet_train_test.prototxt -weights=examples\mnist\lenet_iter_10000.caffemodel
pause
测试结果如下:
用自己的图片测试此模型:
参考风翼冰舟的博客http://blog.csdn.net/zb1165048017/article/details/52217772
1. 准备数据:可以从网上搜索,或者自己手写拍照。
找了一个0图片,首先用画图工具resize到28*28像素。然后用matlab或者python进行图像二值化处理。我这里用matlab了。
image=imread('c:\users\yiyi\Desktop\raw.png')
im=255-rgb2gray(image)
imwrite(uint8(im),'c:\users\yiyi\Desktop\0.jpg')
然后生成label.txt
2.计算均值文件:在.\Build\x64\Release(或者Debug)目录下新建bat文件mnist_mean.bat,内容如下:
.\Build\x64\Debug\compute_image_mean.exe examples/mnist/mnist_train_leveldb examples/mnist/mean.binaryproto --backend=leveldb
pause
运行得到mean.binaryproto 。
3. 很重要:生成deploy.prototxt
这里参考了苏的专栏:http://blog.csdn.net/lanxuecc/article/details/52474476
我这里是将 lenet_train_test.prototxt复制了副本然后照着上边博文改了三处。
第一:/将原来训练与测试两层数据层data部分用下边代码替换/:
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }
}
总得来说,deploy.prototxt就是在lenet_train_test.prototxt的基础上稍作改动,input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } } 这四个dim参数分别是 :
(1)对待识别样本图片进行数据增广的数量,一个图片会变成10个,之后输入到网络进行识别。如果不进行数据增广,可以设置成1。
(2)图片的通道数,一般灰度图片为单通道,则值为1,如果为非灰度图3通道图片则为3。
(3)图片的高度,单位像素。
(4):图片的宽度,单位像素
第二:/删除了原有的测试模块的测试精度层/
第三:/*输出层的类型由SoftmaxWithLoss变成Softmax,训练是输出时是loss,应用时是prob。
layer {
name: "prob"
type: "Softmax"
bottom: "ip2"
top
}
```4.
. 开始测试:
把要用到的数据都放在一个目录中,刚刚生成的1~3.
在D:\APK\caffe-windows\caffe-windows下运行(在你自己的caffe-windows目录下)。新建文本文档txt并重命名为mnist_class.bat,编辑:
<div class="se-preview-section-delimiter"></div>
.\Build\x64\Debug\classification.exe examples/mnist/deploy.prototxt examples\mnist\lenet_iter_10000.caffemodel examples/mnist/mean.binaryproto examples/mnist/label.txt examples/mnist/0.jpg
pause
“`
点击运行,结果如下:
终于整理完了,呜呜呜,两篇博文整理了四个小时,歇会去啦,么么哒~