基于深度学习的数字图像识别技术设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于深度学习的数字图像识别技术设计摘要:本文介绍了图像识别和深度学习基本原理和流程,深入分析了softmax回归算法,设计了数字图像的识别模型,在TensorFlow上使用softmax回归算法实现了数字图像的识别。实验表明,使用TensorFlow能够快速实现图像识别、自然语言处理等相关的机器学习和深度学习算法,可靠性和准确性较高。关键词:数字图像识别;深度学习;TensorFlow;softmax回归1引言1.1图像识别技术图像识别是模式识别技术的一种,特指对图像类模式的识别。图像识别过程主要包括训练和测试两个阶段。训练阶段对图像特征进行训练得到分类模型,测试阶段可以利用已训练模型得到识别结果。以上两个阶段主要由图像预处理、特征提取及分类三个环节组成。在图像识别中,首先要对获取的图像进行预处理,目的是去掉图像中的噪声,把它变成一幅清晰的点阵图,以便于提取正确的图像特征。预处理主要对图像进行几何变换、格式变换、图像滤波,得到满足需要的改进形式。其次要对图像中的目标进行分析,提取正确代表不同目标物特点的特征参数(图像特征)。对图像进行特征提取后,具备将一个目标或场景的不同影像进行匹配。最后要对图像中目标物进行识别和解释。设计分类器,建立分类模型,对图像中目标物进行识别和分类。机器学习作为图像识别实现的主要方法,其实现方法、工具、性能仍难以满足当前需要,应用时也存在一定的困难,在信息化,智能化的时代背景下,本文主要利用Google第二代人工智能平台TensorFlow,使用softmax回归算法实现数字图像的识别。1.2机器学习及实现流程机器学习能够通过先验学习获取经验,自动分析数据获取规律,重新组织已有知识、结构,并不断完善自身性能,让计算机在无事先明确编程的情况下做出正确的响应。机器学习主要从已知数据学习获取正确经验或规律,然后利用该经验或规律推理其中未知的、潜在的概率分布等重要信息,提示数据样本中变量(特征)之间的关系。机器学习主要有两个方向:一是监督学习,它主要解决分类和回归问题。分类主要任务是将实例数据划分到合适的分类中,而回归主要用于预测数值型数据;二是无监督学习,它是将数据集分成由类似对象组成的多个类的过程,即聚类;或者将寻找描述数据统计值的过程,即密度估计。在构建机器学习模型选择算法,首先要明确机器学习算法的目的。如果想要预测,则选择监督学习算法,再考虑目标变量类型,如果预测值是离散的,则选择分类算法,如果预测值为连续的,则选择回归算法。如果不想预测,则选择无监督学习,如果需要将数据划分为离散的组,则使用聚类算法;然后要分析数据集。由于机器学习的同类算法很多,为了缩小算法的选择范围,需要充分了解数据,对实际数据了解越充分,才能选出最切近该问题的算法。机器学习应用程序开发过程中,首先需要收集数据。如制作网络爬虫从网站爬取数据等;接着要格式化数据源,确保数据格式符合要求;然后将格式化的数据输入到算法,即训练算法,从中抽取信息;算法训练好后,测试算法的工作效果,检验算法的成功率;若不满意可修改前面步骤,最后将机器程序转换为应用程序,执行实际任务。1.3TensorFlow2015年9月,Google发布了其第二代人工智能系统——TensorFlow,一个开源机器学习软件资源库。它是目前最受欢迎的机器学习算法框架,支持多种开发语言(本文使用的为python),支持异构分布式系统部署。TensorFlow即支持深度学习算法,也实现了很多其他算法,例如线性回归、逻辑回归等。2数字图像识别模型的设计与实现2.1数据采集本模型主要用MNIST数据集进行训练,而验证和测试部分采用不同来源的数字图片,从而验证正确率。MNIST数据集在TensorFlow官网上下载。MNIST数据集由训练集、验证集和测试集三部分构成,其中训练集有55000个样本,验证集有5000个样本,测试集有10000个样本。每一个样本都有它对应的标签信息(label)用来描述样本中的数字。MNIST样本描述的是一个28×28像素的灰度图片,可用一个长度为784的数组来表示一张图片。图片样本虽然丢弃了图片二位结构的信息,但由于分类任务比较简单,这种数据简化,可以选择比较简单的分类算法实现模型。这里我们对官方程序稍作改进:训练样本仍用MNIST,而验证测试部分采用处理后的任意数字图片。训练样本的数据特征是一个55000×784的Tensor。第一维是图片编号,第二维是对应图片的像素点,其值表示某个像素点的灰度值。训练样本的标签是一个55000×10的Tensor,用来描述每个样本代表的数字,每个样本的label是一个10维向量,只有一个值为1,其余为0;那个数字样本图片的label变量对应位置为1,其余为0。例如数字0的样本label就是[1,0,0,0,0,0,0,0,0,0]。由于MNIST数据集所有样本描述的数字图片值为0—9,所有样本就分为10类,即0,1,2,3,4,5,6,7,8,9,数字图像识别问题就是计算测试集中第i个样本是数字j(j=0,1,2…9)的概率问题,可以采用softmax回归算法实现。2.2softmax回归算法Softmax回归将只能解决二分类问题的Logistic回归扩展至能够解决多分类问题。通过梯度下降算法计算参数,得到训练好的softmax回归模型。然后将测试集中的样本数据代入假设函数计算其所属类别的概率,选择概率最大的类别作为预测结果。3TensorFlow实现数字图像识别3.1MNIST简介MNIST数据库是一个手写数字的数据库,它提供了六万的训练集和一万的测试集。它的图片是被规范处理过的,是一张被放在中间部位的28px×28px的灰度图。总共4个文件:train-images-idx3-ubyte:trainingsetimagestrain-labels-idx1-ubyte:trainingsetlabelst10k-images-idx3-ubyte:testsetimagest10k-labels-idx1-ubyte:testsetlabels图片都被转成二进制放到了文件里面,所以,每一个文件头部几个字节都记录着这些图片的信息,然后才是储存的图片信息。3.2准备要识别的图片按照mnist的标准需要格式为28×28的灰度图片,因此需要将采集来的图片进行转化。首先需要将任何一张带有数字的图片,按照长宽1:1的比例,以单个数字为中心进行裁剪,注意需要保留一个完整的数字;将图片文件按照规则重命名,比如一张为3的图片应该命名为3_4(最后一位可以随意命名,为了区分不同版本的图片,示例中最后一位表示版本号)然后将第一步处理后的所有图片放入目录‘C:\TensorFlow_train\input’中,运行程序mnist_train.py,该程序可以将这些图片自动将该目录中的正方形图片转化为28×28的灰度图片,以供测试阶段使用。程序mnist_train.py如下:3.3矩阵转化将28×28图片转化成28×28矩阵,再将矩阵转化为1维矩阵(即把第2,3,4,5....行矩阵依次接入到第一行的后面)通过子程序来完成。3.4样本标签在前文2.1中,已经初步介绍了样本的label。Softmax回归处理后会生成一个1×10的数组,该数组表示的就是这张图片是哪个数字的概率(已经归一化处理过)因此实际上概率最大的那个数字就是我们预测的值。标准标签就是表示图片对应数字的概率是100%,而别的数字为0。3.5softmax回归Softmax回归:为了得到一张给定图片属于某个特定数字类的证据(evidence),我们对图片像素值进行加权求和。如果这个像素具有很强的证据说明这张图片不属于该类,那么相应的权值为负数,相反如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值是正数。同时,需要引入一个额外的偏移量(bias),因为输入往往会带有一些无关的干扰量。对于给定输入图片x它代表的是数字i的证据可以表示为𝑒𝑣𝑖𝑑𝑒𝑛𝑐𝑒𝑖=∑𝑤𝑖,𝑗𝑗𝑥𝑗+𝑏𝑖其中,𝑤𝑖,𝑗表示权重,𝑏𝑖代表数字i类的偏移量,j代表给定图片x的像素索引用于像素求和。然后用softmax函数可以把这些证据转换成概率y:Y=softmax(evidence)这里的softmax可以看成是一个激励函数或链接函数,把我们定义的线性函数的输出转换成我们想要的格式,也就是关于10个数字类的概率分布。因此,给定一张图片,它对于每一个数字的吻合度可以被softmax函数转换成为一个概率值。softmax函数可以定义为:Softmax(x)=normalize(exp(x))展开等式右边的子式,可以得到:𝑆𝑜𝑓𝑡𝑚𝑎𝑥(𝑥)𝑖=exp(𝑥𝑖)∑𝑒𝑥𝑝(𝑥𝑗)𝑗但是更多的时候把softmax模型函数定义为前一种形式:把输入值当成幂指数求值,再正则化这些结果值。这个幂运算表示,更大的证据对应更大的假设模型(hypothesis)里面的乘数权重值。反之,拥有更少的证据意味着在假设模型里面拥有更小的乘数系数。假设模型里的权值不可以是0值或者负值。Softmax然后会正则化这些权重值,使它们的总和等于1,以此构造一个有效的概率分布。具体见官网:图片识别训练结束后,即可使用这个模型进行图片识别了。最后会输出一个input值和一个output值,其中input来自于图片名第一位,即准确值;output为使用训练模型识别出的数字。由于mnist_softmax程序读取图片是按照编号依次读取的,比较即可看出图片识别正确与否。4结果与讨论4.1模型评估tf.argmax函数可以用于得到某个tensor对象在某一维上的其数据最大值所在的索引值。由于标签向量是由0、1组成,因此最大值1所在的索引位置就是类别标签,比如tf.argmax(y,1)返回的是模型对于任一输入x预测到的标签值,而tf.argmax(y_,1)代表正确的标签,我们可以用tf.equal来检测我们的预测是否真实标签匹配(索引位置一样表示匹配)。这里我们测试两种不同的算法实现的训练模型。第一种来源于官方教程介绍的最简单的模型(MNISTForMLBeginners),下一部分测试代码也由此改编而来;下面是运行结果:前面四行表示写入压缩文件;后面的值0.9172表示识别正确率为91.72%,这个结果不太让人满意。第二种是多层卷积网络模型。细节内容就不一一赘述了,详情见官网运行结果如下:刚开始循环时:可以看出,第一次正确率非常之低,只有4%;经过100次循环后迅速上升到92%,已经超过了第一种简单的模型。随后在0.9附近涨落,总体而言正确率在上升。一段时间后:从图中可以看出,正确率和开始相比有了明显的进步,很多情况下都到了1(当然,由于精度有限,所以这个1不一定是100%)但也有不小的涨落。显然这种模型是非常有效的,远远优于第一种了。4.2对数字图像的识别首先,将数字图片按照3.2所述制成标准格式。然后运行mnist_softmax文件,部分运行结果如下:图中,input来自于图片名第一位,即准确值;output为使用训练模型识别出的数字。比较即可看出图片识别正确与否。图片顺序是从上到下,为了节省空间将一张竖直图片截成5张从左到右依次排列。从图上看,似乎正确率并不高——明显不到90%。不过,原因大概是测试过于苛刻。其中,以0结尾的图片,是从原来的测试集中得出来的。从识别结果来看1,训练模型对于测试集中的图片识别做到了绝对的正确。同时,测试了旋转90度以后有没有可能识别。结果显示,部分倾斜的图片可能由于特征比较明显,也是可以识别的,比如0。识别图片格式似乎也没有限制,既可以是png也可以是jpg。再来一个更加困难的测试。图片分别来源于网上和手机照片:经过处理后用于识别,结果如下:1需要声明的是,第二部分数字图片的识别整个都是建立在第一部分

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功