利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

从一到二:利用mnist训练集生成的caffemodelmnist测试集与自己手写的数字进行测试

通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件:

接下来就可以利用模型进行测试了。关于测试方法按照上篇教程还是选择bat文件,当然python、matlab更为方便,比如可以迅速把识别错误的图片显示出来。

一、均值文件mean.binaryproto

在进行分类之前首先需要产生所有图片的平均值图片,真正分类时的每个图片都会先减去这张平均值图片再进行分类。这样的处理方式能够提升分类的准确率。

产生均值文件的方法是利用解决方案中的compute_image_mean.exe,位于目录\caffe-windows\Build\x64\Release下。回到caffe-windows根目录下创建一个mnist_mean.txt,写入如下内容:

我的是生成lmdb格式。

将后缀名改为bat后双击运行(其实写了那么多bat文件也应该有体会了,只要指定的路径正确就行,不一定非要放在caffe-windows根目录下)。正确运行的话会在根目录下产生一个mean.binaryproto,也就是我们所需要的均值文件。接着为了使用均值文件需要稍微修改下层的定义。所以打开\examples\mnist\lenet_train_test.prototxt,做如下修改:

到此为止,均值文件的预处理部分处理完毕,下面就可以进行测试了。

二、利用mnist测试集进行测试

这部分比较简单,因为之前生成的Caffe.exe就可以直接用来进行测试。同样地在caffe-windows目录下新建mnist_test.txt,并写入如下内容(其中的间断处都为一个空格)。

意思也显而易见,首先指定为测试模式,随后指定模型和训练出来的参数。

将后缀名改为bat后双击运行,结果如下所示:

左侧的内容依旧是GLOG的记录日志,右侧中的Batch需要和网络参数初始中的batch_size一起理解。每个Batch中包含了batch_size张测试图片,所以每个Batch的准确率是对这batch_size张测试图片整体而言的。而不是像我最初一样先入为主地以为准确率应该是对每张测试图片而言,故只有0和1两种情况。

这边个人也有个小问题,Batch之所以为0-49共50个是由caffe.cpp中一个叫做FLAGS_iterations的变量指定的,但是找来找去实在无法确定这个变量是否是由网络参数确定的,之后再好好看一下代码。

这个准确率不能说特别好,因为我有空也尝试过Tensorflow,Tensorflow官方文档中的一个多层卷积网络对mnist测试集的准确率为99.2%左右。不过到此为止我们已经完成了mnist测试集在caffe上的运行和测试。

三、利用自己的手写数字进行测试

主要参考了http://blog.csdn.net/zb1165048017/article/details/52217772这篇文章,不过还是有些细节需要更改。

(1)首先可以按照上面网址教程中的第六和第七步在\examples\mnist目录下生成手写的一个28*28像素数字的bmp文件和一个标签文件label.txt。比如我手写的数字如下图所示:

这里需要注意的是上述教程中的matlab代码最后一句需要更改。例如我已经将matlab的工作目录设为\caffe-windows\examples\mnist,就可以直接输入(test1为我的手写数字文件名):

(2)之后就可以调用之前生成的classification.exe进行分类。同样的在caffe-windows目录下新建test_personaldig.txt并写入如下内容:

中间的三行其实是每个加一个空格后跟在examples\mnist\lenet.prototxt的后面,这里为了显示地更加清楚而进行了换行。更改后缀为bat后就可以双击运行,会出现类似下面的内容:

可见分类结果正确。让我们再来测试一个下图写得一个比较飘逸的5。

分类结果还是正确的。

四、后记

到此为止我们已经完成了利用mnist测试集对生成的模型进行准确率测试,并成功对自己手写的数字进行了识别,总之效果还不差。然而至此教程甚至根本没有提及过卷积神经网络,可见caffe的确可以让一个完全不懂卷积神经网络原理的人通过不断手动调整参数完成学习,实现分类等目标,甚至还能取得非常不错的效果。就像程序员和数学的关系一样,知晓了卷积神经网络的详细原理对我们使用caffe只有好处没有坏处,并且要真正做到看懂caffe的每个模块必须了解卷积神经网络。博主自己也正在深入学习卷积神经网络,这里推荐一个非常好的入门资料CS231n Convolutional Neural Networks for Visual Recognition

http://cs231n.github.io/convolutional-networks/

上面网址中的教程对卷积神经网络的基础知识讲述得非常透彻清楚。但如果想继续了解其中的数学推导的话,建议再看下面这篇文章:

Notes on Convolutional Neural Networks, Jake Bouvrie

原文地址:https://www.cnblogs.com/juluwangshier/p/10217679.html

时间: 2024-08-03 08:41:20

利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试的相关文章

TensorFlow下利用MNIST训练模型并识别自己手写的数字

最近一直在学习李宏毅老师的机器学习视频教程,学到和神经网络那一块知识的时候,我觉得单纯的学习理论知识过于枯燥,就想着自己动手实现一些简单的Demo,毕竟实践是检验真理的唯一标准!!!但是网上很多的与tensorflow或者神经网络相关的Demo教程都只是在验证官方程序的过程,而如何把这些程序变成自己可以真正利用的程序这一块的资料就比较少,就好比被“玩烂的"MNIST数据集(ML界的”hello world"),网上是有很多手写数字识别的教程,但那些利用的都是官方提供的数据集,这样就算验

数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST

目录 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST 下载数据集 加载数据集 构建神经网络 反向传播(BP)算法 进行预测 F1验证 总结 参考 数据挖掘入门系列教程(八)之使用神经网络(基于pybrain)识别数字手写集MNIST 在本章节中,并不会对神经网络进行介绍,因此如果不了解神经网络的话,强烈推荐先去看<西瓜书>,或者看一下我的上一篇博客:数据挖掘入门系列教程(七点五)之神经网络介绍 本来是打算按照<Python数据挖掘入门与实践>

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

笔记整理者:王小草 笔记整理时间2017年2月24日 原文地址 http://blog.csdn.net/sinat_33761963/article/details/56837466?fps=1&locationNum=5 Tensorflow官方英文文档地址:https://www.tensorflow.org/get_started/mnist/beginners 本文整理时官方文档最近更新时间:2017年2月15日 1.案例背景 本文是跟着Tensorflow官方文档的第二篇教程–识别手

图片训练:使用卷积神经网络(CNN)识别手写数字

这篇文章中,我们将使用CNN构建一个Tensorflow.js模型来分辨手写的数字.首先,我们通过使之“查看”数以千计的数字图片以及他们对应的标识来训练分辨器.然后我们再通过此模型从未“见到”过的测试数据评估这个分辨器的精确度. 一.运行代码 这篇文章的全部代码可以在仓库TensorFlow.js examples中的tfjs-examples/mnist 下找到,你可以通过下面的方式clone下来然后运行这个demo: $ git clone https://github.com/tensor

tensorflow识别Mnist时,训练集与验证集精度acc高,但是测试集精度低的比较隐蔽的原因

tensorflow识别Mnist时,训练集与验证集精度acc高,但是测试集精度低的比较隐蔽的原因除了网上说的主要原因https://blog.csdn.net/wangdong2017/article/details/90176323 之外,还有一种是比较隐蔽的原因(可能对于大多数人不会犯这种低级错误),作为新手的我找了半天才找到,原因是在程序中创建了一个会话之后又重新创建了一个会话,代码程序见我博客https://www.cnblogs.com/hujinzhou/p/guobao_2020

【OpenCV】opencv3.0中的SVM训练 mnist 手写字体识别

前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的ml包含了很多的ML框架接口,就试试了. 详细的OpenCV文档:http://docs.opencv.org/3.0-beta/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html mnist数据下载:http://yann.l

NASNet学习笔记——?? 核心一:延续NAS论文的核心机制使得能够自动产生网络结构; ?? 核心二:采用resnet和Inception重复使用block结构思想; ?? 核心三:利用迁移学习将生成的网络迁移到大数据集上提出一个new search space。

from:https://blog.csdn.net/xjz18298268521/article/details/79079008 NASNet总结 论文:<Learning Transferable Architectures for Scalable Image Recognition> 注 ??先啥都不说,看看论文的实验结果,图1和图2是NASNet与其他主流的网络在ImageNet上测试的结果的对比,图3是NASNet迁移到目标检测任务上的检测结果,从这图瞬间感觉论文的厉害之处了,值

tflearn kears GAN官方demo代码——本质上GAN是先训练判别模型让你能够识别噪声,然后生成模型基于噪声生成数据,目标是让判别模型出错。GAN的过程就是训练这个生成模型参数!!!

GAN:通过 将 样本 特征 化 以后, 告诉 模型 哪些 样本 是 黑 哪些 是 白, 模型 通过 训练 后, 理解 了 黑白 样本 的 区别, 再输入 测试 样本 时, 模型 就可以 根据 以往 的 经验 判断 是 黑 还是 白. 与 这些 分类 的 算法 不同, GAN 的 基本 原理 是, 有两 个 相生相克 的 模型 Generator 和 Discriminator,Generator 随机 生成 样本, Discriminator 将 真实 样本 标记 为 Real, 将 Gene

工欲善其事,必先利其器——利用PowerDesigner建模并生成数据库文件

首先介绍一下Power Designer:它是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库设计全过程.利用Power Designer可以制作数据流程图.概念数据模型.物理数据模型,还可以为数据仓库制作结构模型,对团队设计模型进行控制.它可以与许多流行的软件开发工具如PowerBuilder.Delphi.VB等相配合缩短开发时间以及使系统设计更优化. 在机房收费系统重构阶段,设计数据库是最令人头疼的,设计一个好的数据库可以为以后省下不少代码.