在之前的实验中我们使用过
$ ./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。

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

  1. 02:一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)

    标签(空格分隔): 王小草Tensorflow笔记 笔记整理者:王小草 笔记整理时间2017年2月24日 Tensorflow官方英文文档地址:https://www.tensorflow.org/g ...

  2. 深度学习笔记:07神经网络之手写数字识别的经典实现

    神经网络之手写数字识别的经典实现 上一节完成了简单神经网络代码的实现,下面我们将进行最终的实现:输入一张手写图片后,网络输出该图片对应的数字.由于网络需要用0-9一共十个数字中挑选出一个,所以我们的网 ...

  3. TF2.0深度学习实战(一):分类问题之手写数字识别

    前言: 本专栏将分享从零开始搭建神经网络的学习过程,力争打造最易上手的小白教程.在这过程中,我将使用谷歌TensorFlow2 框架逐一复现经典的卷积神经网络:LeNet-5.AlexNet.VGG系 ...

  4. TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线

    TF之CNN:利用sklearn(自带手写数字图片识别数据集)使用dropout解决学习中overfitting的问题+Tensorboard显示变化曲线 目录 输出结果 设计代码 输出结果 设计代码 ...

  5. 【Tensorflow学习三】神经网络搭建八股“六步法”编写手写数字识别训练模型

    神经网络搭建八股"六步法"编写手写数字识别训练模型 Sequential用法 model.compile(optimizer=优化器,loss=损失函数,metrics=[&quo ...

  6. 深度卷积生成对抗网络DCGAN——生成手写数字图片

    前言 本文使用深度卷积生成对抗网络(DCGAN)生成手写数字图片,代码使用Keras API与tf.GradientTape 编写的,其中tf.GradientTrape是训练模型时用到的. 本文用到 ...

  7. TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%)

    TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%) 目录 设计思路 全部代码 设计思路 全部代码 #TF:利用是Softmax回归+GD ...

  8. 《人工智能实践:Tensorflow笔记》听课笔记22_6.1输入手写数字图片输出识别结果

    附:课程链接 第六讲.全连接网络实践 6.1输入手写数字图片输出识别结果 由于个人使用Win7系统,并未完全按照课程所讲,以下记录的也基本是我的结合课程做的Windows系统+PyCharm操作.且本 ...

  9. Keras【Deep Learning With Python】keras框架下的MNIST数据集训练及自己手写数字照片的识别(分类神经网络)

    文章目录 前言 mnist_model.py predict.py 前言 深度学习领域的"hello,world"可能就是这个超级出名的MNIST手写数字数据集的训练(想多了,要是 ...

最新文章

  1. 图解|什么是缺页错误Page Fault
  2. Ie6/ie7 不支持 JSON
  3. NYOJ 137 取石子(三)
  4. Golang的日志记录器
  5. Python issubclass 函数 - Python零基础入门教程 2021-07-14 09:24:43
  6. 树链剖分(入门学习)
  7. 在Vue项目中使用Echarts的一种方式
  8. 公司用的非标普通自动化用单片机还是plc_合格电气自动化工程师必备十大技能...
  9. 基于Springboot的物业管理系统_代码
  10. 【MySQL】Mcafee审计插件
  11. java地铁最短距离_地铁线路最短路径
  12. Java8新特性之一:Lambda表达式
  13. html页面证书过期,网页证书过期怎么办
  14. ubuntu 扩充交换空间
  15. 大数据平台技术——Scala+Hbase学习
  16. OmniPeek11安装 (驱动安装)
  17. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身
  18. 如何把pdf文件转换成eps文件
  19. 黑客谈对一台BT主机的入侵过程
  20. 【转载】各个版本Microsoft Visual C++运行库下载

热门文章

  1. 金融术语科普 , 什么是GP、LP、PE、VC和FOF
  2. 绿化版Java11的环境配置与Python调用Java
  3. 未来计算机发展的三大趋势,智能仪器仪表未来有三大发展趋势
  4. 1.三维空间刚体的旋转
  5. Linux修改文件不被允许
  6. K12在线教育:直播课与录播课的优劣对比
  7. 多功能文档应用程序Codex Docs
  8. Excel表格中从右往左指定字符分割的字串提取
  9. Python基础-----列表生成式、偏函数、高阶函数、闭包、装饰器
  10. 树莓派——配置Linux内核适合树莓派