基于深度学习的数字图像识别技术设计.pdf
- 文档编号:3176268
- 上传时间:2022-11-19
- 格式:PDF
- 页数:8
- 大小:575.56KB
基于深度学习的数字图像识别技术设计.pdf
《基于深度学习的数字图像识别技术设计.pdf》由会员分享,可在线阅读,更多相关《基于深度学习的数字图像识别技术设计.pdf(8页珍藏版)》请在冰豆网上搜索。
基于深度学习的基于深度学习的数字图像识别技术设计数字图像识别技术设计摘要:
本文介绍了图像识别和深度学习基本原理和流程,深入分析了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样本描述的是一个2828像素的灰度图片,可用一个长度为784的数组来表示一张图片。
图片样本虽然丢弃了图片二位结构的信息,但由于分类任务比较简单,这种数据简化,可以选择比较简单的分类算法实现模型。
这里我们对官方程序稍作改进:
训练样本仍用MNIST,而验证测试部分采用处理后的任意数字图片。
训练样本的数据特征是一个55000784的Tensor。
第一维是图片编号,第二维是对应图片的像素点,其值表示某个像素点的灰度值。
训练样本的标签是一个5500010的Tensor,用来描述每个样本代表的数字,每个样本的label是一个10维向量,只有一个值为1,其余为0;那个数字样本图片的label变量对应位置为1,其余为0。
例如数字0的样本label就是1,0,0,0,0,0,0,0,0,0。
由于MNIST数据集所有样本描述的数字图片值为09,所有样本就分为10类,即0,1,2,3,4,5,6,7,8,9,数字图像识别问题就是计算测试集中第i个样本是数字j(j=0,1,29)的概率问题,可以采用softmax回归算法实现。
2.2softmax回归算法回归算法Softmax回归将只能解决二分类问题的Logistic回归扩展至能够解决多分类问题。
通过梯度下降算法计算参数,得到训练好的softmax回归模型。
然后将测试集中的样本数据代入假设函数计算其所属类别的概率,选择概率最大的类别作为预测结果。
3TensorFlow实现数字图像识别实现数字图像识别3.1MNIST简介简介MNIST数据库是一个手写数字的数据库,它提供了六万的训练集和一万的测试集。
它的图片是被规范处理过的,是一张被放在中间部位的28px28px的灰度图。
总共4个文件:
train-images-idx3-ubyte:
trainingsetimagestrain-labels-idx1-ubyte:
trainingsetlabelst10k-images-idx3-ubyte:
testsetimagest10k-labels-idx1-ubyte:
testsetlabels图片都被转成二进制放到了文件里面,所以,每一个文件头部几个字节都记录着这些图片的信息,然后才是储存的图片信息。
3.2准备要识别的图片准备要识别的图片按照mnist的标准需要格式为2828的灰度图片,因此需要将采集来的图片进行转化。
首先需要将任何一张带有数字的图片,按照长宽1:
1的比例,以单个数字为中心进行裁剪,注意需要保留一个完整的数字;将图片文件按照规则重命名,比如一张为3的图片应该命名为3_4(最后一位可以随意命名,为了区分不同版本的图片,示例中最后一位表示版本号)然后将第一步处理后的所有图片放入目录C:
TensorFlow_traininput中,运行程序mnist_train.py,该程序可以将这些图片自动将该目录中的正方形图片转化为2828的灰度图片,以供测试阶段使用。
程序mnist_train.py如下:
3.3矩阵转化矩阵转化将2828图片转化成2828矩阵,再将矩阵转化为1维矩阵(即把第2,3,4,5.行矩阵依次接入到第一行的后面)通过子程序来完成。
3.4样本标签样本标签在前文2.1中,已经初步介绍了样本的label。
Softmax回归处理后会生成一个110的数组,该数组表示的就是这张图片是哪个数字的概率(已经归一化处理过)因此实际上概率最大的那个数字就是我们预测的值。
标准标签就是表示图片对应数字的概率是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,以此构造一个有效的概率分布。
具体见官网:
http:
/3.6图片识别图片识别训练结束后,即可使用这个模型进行图片识别了。
最后会输出一个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,训练模型对于测试集中的图片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 深度 学习 数字图像 识别 技术设计