您的位置:首页 > Web前端

深度学习框架Caffe学习笔记(6)-测试自己的手写数字图片

2016-11-08 17:53 561 查看
在之前的实验中我们使用过

$ ./build/tools/caffe.bin test \

-model examples/mnist/lenet_train_test.prototxt \

-weights examples/mnist/lenet_iter_10000.caffemodel \

-iterations 100


命令来测试训练好的网络。这主要用于测试网络的准确率。

但如想用自己的手写数字,通过训练好的模型来识别这个数字,怎么做呢?

可以使用Caffe中build/examples/cpp_classification/classification.bin这个程序来实现。

$ ./build/examples/cpp_classification/classification.bin
Usage: ./build/examples/cpp_classification/classification.bin
deploy.prototxt    // 模型描述文件
network.caffemodel // 模型权值文件
mean.binaryproto   // 图像均值文件
labels.txt         // 图像类别标签信息
img.jpg            // 输入待分类图像


接下来开始准备这几个文件

模型描述文件

将lenet_train_test.prototxt复制一份修改如下

// 将训练和测试用的mnist层删除,添加以下层
name: "LeNet"
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }
}
......
// 中间的模型不改动,省略
......
// 将accuracy层和loss层删除,添加以下层
layer {
name: "prob"
type: "Softmax"
bottom: "ip2"
top: "prob"
}


权值描述文件

训练好网络后examples/mnist/目录下就会会有lenet_iter_10000.caffemodel这个文件。

图像均值文件

Caffe框架为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面。编译后的可执行体放在 build/tools/ 下面,我们直接调用就可以了

$ sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto


带两个参数:

第一个参数:examples/mnist/mnist_train_lmdb, 表示需要计算均值的数据,格式为lmdb的训练数据。

第二个参数:examples/mnist/mean.binaryproto, 计算出来的结果保存文件。

标签文件

新建label.txt,每行一个数字,0到9。

0
1
2
3
4
5
6
7
8
9


输入待分类图像

这个自己拿画图工具画一个就好。由于训练集中的数据都是黑底白字的,所以如果自己写是是白底黑字的图片可能识别不准确。

开始测试

$ ./build/examples/cpp_classification/classification.bin \
examples/mnist/classificat_net.prototxt \
examples/mnist/lenet_iter_10000.caffemodel \
examples/mnist/mean.binaryproto examples/mnist/label.txt \
examples/mnist/0.png
---------- Prediction for examples/mnist/0.png ----------
1.0000 - "0"
0.0000 - "1"
0.0000 - "3"
0.0000 - "4"
0.0000 - "2"


结果显示图片中的数字为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐