深度学习caffe--手写字体识别例程(一)——运行手写字体识别例程
学习caffe深度学习框架时,最基本的一个应用实例是手写字体识别例程,这是caffe自带的例程,通过这个例程可以了解caffe框架使用的一个基本流程。在这个例程中,知识点比较多,在这篇文章中,我们只关系操作相关的内容,不进行代码和理论分析,让大家先把例程跑通,然后再分成几篇文章对这个例程的知识点进行介绍。这个例程的样板是MNIST数据集,它是一个大型手写体数字的数据库,包含了60000个训练集和10000个测试集,每张图都已经进行了尺寸归一化,数字居中处理,固定尺寸为28像素X28像素。数据集的样本如下图所示。这个例程我们使用这个数据库对caffe网络进行训练,并用训练的网络进行预测。
1、下载MNIST数据集
这个例程,我们在caffe的安装目录下进行,首先我们在终端中进入到caffe安装目录,然后执行下面的命令
cd data/mnist
./get_mnist.sh
这两个命令的作用是进入到mnist文件夹,并且采用get_mnist.sh脚本文件来下载MNIST数据集。成功执行命令之后,在文件夹下下载下来4个文件,分别为:t10k-images-idx3-ubyte、t10k-labels-idx1-ubyte、 train-images-idx3-ubyte、train-labels-idx1-ubyte。它们分别是测试集图片文件、测试集标签文件、训练集图片文件、训练集标签文件。
关于这些文件的详解,会在后面的文章中进行。这里可以先不管这几个文件。
2、数据集格式转换
上一步我们下载到的数据集为二进制文件,无法直接用于caffe网络的训练,我们需要把它准话为LMDB格式的文件。
在caffe的根目录下,执行下面的命令
./examples/mnist/create_mnist.sh
执行完之后,在example/mnist/目录下,生成了两个文件夹mnist_train_lmdb和mnist_test_lmdb,在这两个文件夹下每个文件夹下包含两个文件data.mdb和lock.mdb。这4个文件就是转换完成的LMDB格式的训练集和测试集文件。
3、训练模型
在这个实例中,我们使用的深度学习网络为LeNet-5网络模型,它的描述文件为examples/mnist/lenet_train_test.prototxt,训练和测试的求解器的描述文件为examples/mnist/lenet_solver.prototxt。
这一步我们对模型参数进行训练,在训练之前首先打开lenet_solver.prototxt文件。文件的最后一行修改为
solver_mode: CPU
即采用CPU模式。
在caffe根目录下采用下面的命令对模型进行训练
./examples/mnist/train_lenet.sh
模型开始训练,在终端上会打印出训练日志,训练日志内容比较多,经过我们以后的讲解后我们会明白训练日志的每一条的作用,这里我们先不用深究日志的内容。训练日志的最后,如下所示。
I0207 15:20:14.125481 7502 solver.cpp:414] Test net output #0: accuracy = 0.9913
I0207 15:20:14.125722 7502 solver.cpp:414] Test net output #1: loss = 0.0262061 (* 1 = 0.0262061 loss)
I0207 15:20:14.125864 7502 solver.cpp:332] Optimization Done.
I0207 15:20:14.125982 7502 caffe.cpp:250] Optimization Done.
打印出了测试的识别精度和损失。
训练之后,在/examples/mnist/目录下生成了四个新的文件:lenet_iter_5000.caffemodel、lenet_iter_5000.solverstate、lenet_iter_10000.caffemodel、lenet_iter_10000.solverstate,它们分别为进行了5000次和10000次迭代式生成的快照,快照包含权值文件.caffemodel和求解器状态文件.solverstate。
4、数据预测
在上一步中,我们完成了模型的训练,这一步,我们用训练好的模型参数进行预测,在caffe根目录下执行下面的命令
./build/tools/caffe.bin test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 100
这个命令是调用caffe.bin对模型的识别效果进行预测,test表示处于测试状态,-model examples/mnist/lenet_train_test.prototxt指定了预测使用的模型,与我们训练时使用的模型一样,-weights examples/mnist/lenet_iter_10000.caffemodel指定预测使用的权值文件为我们上一步训练得到的权值文件,-iterations 100表示迭代次数为100次。
执行之后,在终端中打印的日志的最后两行为
I0217 13:54:22.387477 28867 caffe.cpp:321] accuracy = 0.9913
I0217 13:54:22.387509 28867 caffe.cpp:321] loss = 0.0262061 (* 1 = 0.0262061 loss)
给出了识别精度和损失。至此我们完成了手写字体识别的例程测试。
深度学习caffe--手写字体识别例程(一)——运行手写字体识别例程相关推荐
- TF2.0深度学习实战(一):分类问题之手写数字识别
前言: 本专栏将分享从零开始搭建神经网络的学习过程,力争打造最易上手的小白教程.在这过程中,我将使用谷歌TensorFlow2 框架逐一复现经典的卷积神经网络:LeNet-5.AlexNet.VGG系 ...
- 深度学习caffe(4)——caffe配置(GPU)
电脑:win7 64位,NVIDIA GeForce GTX1080 Ti,visual studio 2013. 深度学习caffe(1)--windows配置caffe(vs2013+pytho ...
- CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)
CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别.视频识别.摄像头识别(准确度非常高) 目录 GUI编程设计界面 产品演示 GUI编程设计界面 产品演示 视频演示:https://bl ...
- Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)
Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习.深度学习.大数据.云计算等)推荐系统(包括语音生成.识别等前沿黑科技) 导读 基于Python的GUI界面设计的一套 ...
- caffe模型文件解析_深度学习 Caffe 初始化流程理解(数据流建立)
深度学习 Caffe 初始化流程理解(数据流建立) 之前在简书的文章,搬迁过来 ^-^ 本文是作者原创,如有理解错误,恳请大家指出,如需引用,请注明出处. #Caffe FeatureMap数据流的建 ...
- 深度学习caffe实战(一)验证码识别
狭义上讲验证码识别是将验证码图像转化成字符串值,传统方法常常先对验证码图像进行字符分割,再对验证码进行识别,劣势在于字符分割方法往往针对不同风格的验证码需要做修改,某些验证码加入噪声或线条,字符位置不 ...
- 深度学习3—用三层全连接神经网络训练MNIST手写数字字符集
上一篇文章:深度学习2-任意结点数的三层全连接神经网络 距离上篇文章过去了快四个月了,真是时光飞逝,之前因为要考博所以耽误了更新,谁知道考完博后之前落下的接近半个学期的工作是如此之多,以至于弄到现在才 ...
- 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)
文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...
- 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要的是,它将深度学习的每一个细节都原原本本地展现出来,大大 ...
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
背景 我们在之前的文章中介绍过如何通过PAI内置的TensorFlow框架实验基于Cifar10的图像分类,文章链接:https://yq.aliyun.com/articles/72841.使用Te ...
最新文章
- 科大讯飞刘庆峰发表对未来10年AI三大判断
- 说说如何基于 Vue.js 实现表格组件
- iOS UI基础-11.0 UINavigationController
- Django 的简单ajax
- android1.6,令人遗憾的Android 1.6系统_戴尔 Mini5(Streak)_手机其它OS-中关村在线
- linux下ceontab不起作用,linux下crontab 不能执行的原因
- ARM(AM5728)板移植VSFTPD
- Python中的类属性和实例属性以及静态方法和类方法
- 2021-2025年中国催产药行业市场供需与战略研究报告
- plsql导出表结构语句
- Java白盒测试工具
- zedBoard USB转串口驱动下载问题
- 非齐次线性方程组解的结构暂记
- MC34063降压电路
- 网易2018校园招聘:重排数列 [python]
- 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMI
- makefile和make
- windows下Appium测试环境搭建, 并配合python操作模拟器
- Linux动态监控进程
- Wireshark 201: Intermediate Customization