《基于机器学习算法的数字识别app开发.docx》由会员分享,可在线阅读,更多相关《基于机器学习算法的数字识别app开发.docx(31页珍藏版)》请在第一文库网上搜索。
1、1绪论111研究背景与意义11.2 国内外研究现状11.3 本文结构安排32手写数字识别技术分析32.1 手写数字识别过程32.1.1 图片预处理42.1.2 特征提取42.1.3 分类器42.2 激活函数52.2.1 什么是激活函数52.2.2 Sigmoid函数52.2.3 Re1u函数62.3 输出层的设计62.3.1 softmax函数62.3.2 输出层神经元个数72.4 损失函数72.4.1 损失函数的作用72.4.2 均方误差损失函数72.4.3 交叉端误差损失函数73卷积神经网络的结构和模型设计83.1 卷积神经网络概述83.2 卷积层83.2.1 卷积运算83.2.2 填充和
2、步幅93.3 池化层103.3.1 最大池化113.3.2 平均池化113.4 误差反向传播算法113.5 本文所采用的网络模型结构144卷积神经网络的训练与优化144.1 全连接神经网络和卷积神经网络对比144.2 卷积神经网络的训练过程154.3 本文对卷积神经网络的优化164.3.1 使用Adam方法更新参数164.3.2 应用Dropout抑制过拟合174.3.3 对超参数进行优化185手写数字识别实验结果与分析185.1 基于卷积神经网络的数字识别实验结果185.2 项目打包与运行效果展示206总结与展望236.1 工作总结236.2 展望23基于机器学习算法的数字识别APP开发摘要
3、:手写字符识别技术作为OCR的一个重要分支,其综合了数学图像处理和机器学习等多方面的知识,已经逐渐成为计算机智能化的重要技术。由于PythOn在对机器学习处理有着先天优势,所以市面上大多是用Python实现的。本文将使用JaVaSCriPt语言,采用卷积神经网络算法,从其原理和结构开始一步步实现对手写数字的识别。通过MNIST数据集对模型进行训练,经过对待训练(识别)的图片预处理,特征提取,分类等操作,实现对手写数字测试集的识别并有着95%以上的识别准确率。最终打包成APK,作为APP在手机上运行。关键词:机器学习;卷积神经网络;手写数字1绪论1.1 研究背景与意义在如今快速发展的数字时代,目
4、前市面上大多是针对印刷字符识别的软件和应用,目前还没有一种商业上的应用或软件可以用于手写字符识别。该方面处理信息主要有两种,一种是文字类,这里指的是人类社会做使用的文字及由其所构成的文本信息,通常是印刷体,如英文字母组成的文本信息等,现阶段印刷体识别技术发展较为完善,相关理论及技术快速迭代,已经出现多种商业识别软件,且识别效果都较好。一种是数据类,其构成主要是阿拉伯数字及其他多种不同形态及用途的特殊符号所构成的数字和统计数据,对手写数字的识别就是处理这些信息的核心。手写数字识别研究的难点在于:第一,数字字形区分度不高,使得部分数字难以快速而简单区分;第二,书写风格差异性非常突出,导致相同数字形
5、态排布存在较大差异。在实际使用过程中,由于各种因素的影响,手写输入的识别准确率往往会低于印刷体字符。因此,手写数字识别及相关研究问题具有很大实用价值,一旦研发成功创造较大效益。1.2 国内外研究现状由于神经网络在图片分类上具有较大优势,国内研究者对于手写体识别问题的讨论多集中关注在神经网络方向。刘辰雨(2018)在对卷积神经网络1eNet-5模型的研究之上,提出了添加DrOPOUt层来抑制过拟合,同时也能够一定程度强化泛化性。另外也进行了模型激活函数的探讨,并启用原有的Tanh函数,而探索性利用Re1u函数,最终使得优化后的模型识别率从93.61%提高到了97.30%,误识率从0.96%下降到
6、T0.75%。陈鸿宇(2023)基于对K最邻近法(KNN)的研究过后,在对图像进行预处理后,通过KNN算法实现对手写数字的识别,对946个数据展开分析与测试,并获得相关相应结果,最终偏差率显示为1.05%,获得满意效果。杨栩(2023)在其论著中也针对手写数字图形进行识别研究,并在过程中主要利用卷积神经算法,也就是一定规模卷积层获得相应的特征向量,之后经过函数处理,在实现向量将为,最终实现结果输出,其中利用到的训练数据数量超过了八千个,同时进行迭代计算也超过了八次,最终获取达到预期的识别结果,超过96%能被识别。汪愿(2023)基于BP神经网络,采用动量因子和自适应学习的手写数字图片模式识别,
7、并利用MAT1AB仿真软件对大量手写数字识别进行测试后发现该方法对手写数字识别具有精度高、误差小、识别速度快、可靠性高的特点久当前,国内对手写数字的研究主要使用BP神经网络,KNN算法(K-NeareStNeighOrA1gorithm),CNN卷积神经网络(COnVo1UtionaINeura1Networks)O对于手写体数字识别技术,国外专家学者们也做出了大量的努力与探索。HongmeiWang(2023)等人针对卷积深度信任网络(COnVoIUtiOna1DeepBe1iefNetwork,CDBN)中卷积核的同质性,提出了一种适用于卷积受限玻尔兹曼机(Convo1u1iona1Res
8、trictedBo1tzmannMachine,CRBM)模型的基于交叉煽的稀疏惩罚机制,在此基础上,采用参数学习算法对梯度进行补偿,实现了监督学习和无监督学习的交替,最终使模拟数据集识别率达到97.45%。SaVitaAhIaWat(2023)等人研究基于cnn的手写数字识别的各种设计选项,以评估各种SGD优化算法在提高手写数字识别的性能,他们提出了一种CNN体系结构,以达到比集成体系结构更好的精度,同时降低操作复杂性和成本。此外,在设计CNN时,他们还提出了一个适当的学习参数组合,使得在分类MN1ST手写数字时获得一个新的绝对记录。最终经过大量的实验,在MN1ST数据集上实现了99.87%
9、的识别精度叫A1iSaqib(2023)在对卷积神经网络(CNN)模型研究后,为解决CNN模型在特征提取方面效率低下设计了一种新的CNN模型与极限学习机(E1M)算法相结合。该模型将sigmoid激活函数升级为整流线性单元(Re1U)激活函数,并将CNN单元和Re1U激活函数作为特征提取器。基于deep1earning4j(D14J)框架的CNN-E1M模型是使用修改的国家标准与技术研究所(MN1ST)数据库开发和训练。最终通过自建手写数字和USPS测试数据集对模型进行验证,CNN-e1m-d14j方法在准确性和计算时间方面优于传统的CNN模型。1.3 本文结构安排本文一共分为六章,分别就其中
10、内容进行概述。第一章为绪论,主要针对本文研究论题即手写数字识别进行背景及国内外研究现状等方面的介绍,并安排论文整体框架。第二章则是通过对手写数字识别技术进行分析,首先将图片进行预处理后进入输入层,引出激活函数的概念,再到输出层的设计,最后提出损失函数的作用,通过损失函数将输出层的结果和标签值联系起来。第三章详细介绍了卷积神经网络的结构和模型设计,先进行了相关算法介绍,由整体到局部,介绍网络模型中的卷积层和池化层,经过一次正向传播之后,提出误差反向传播算法的实现原理和作用,最终再给出本文所采用的卷积神经网络模型结构。第四章在第三章提出网络模型结构的基础上,首先通过全连接神经网络和卷积神经网络对比
11、,阐明卷积神经网络在图像识别领域的优势。随后详细介绍网络模型的训练学习过程,发现其中有许多值得优化的地方,于是自然过渡到本文对卷积神经网络模型采用的一系列优化方式,从而加快网络收敛速度和抑制过拟合的产生。第五章即对本文所采用的基于卷积神经网络的手写数字识别的结果进行分析,并介绍了项目的打包流程,最终在真机上展示运行效果。经过实验验证后,本文所采用的实现方式最终效果较好,基本达到了作者预期效果。第六章是对全文和对本次工作的总结,发现网络模型对用户手写数字相比于MNIST数据集存在识别准确率低的问题,仍需进一步改进和完善。最后做出展望并进一步强调如今手写数字识别的重要性。2手写数字识别技术分析2.
12、1 手写数字识别过程通常情况下,在让图片正式进入模型的输入层之前,我们会先将图片经过一些方式进行预处理。经过预处理之后,代表图片的矩阵数据便进入输入层,输入的数据会和相应的卷积核进行运算并加上一定量的偏置,卷积层的卷积核会提取图片的边缘等原始信息,然后经过激活函数处理再经由池化后便流入下一层。除去输入层和输出层,中间的所有层我们称之为隐藏层。隐藏层的数量并不固定,需要根据实际情况进行选择才能达到理想效果。通常其与输出层之间关联形态是采用全连接,结果输出在本文设计方案中利用的分类器。针对输出结果及与之对应的标准值,需要利用损失函数得到部分信息,并利用误差反向传播法,不断对其中的权重和偏置进行持续
13、性且动态化的更新,从而让模型不断地学习。这个过程称之为训练,一个好的模型需要经过大量数据训练后才能够达到理想效果。当然这其中还有学习率,参数更新方法,权重初始值等参数需要进行设置,本文会慢慢逐一进行说明。2.1.1 图片预处理由于不同人的手写体风格迥异,大小不一,以及在图像获取中受外界环境影响,最终使图像的清晰度和完整性降低,这会极大影响识别的准确度。所以通常会将图像经过一系列的预处理之后再将图像输入。图片预处理的首要目的是消除图像中一些无关紧要的信息,保留有效信息,从而提高后面特征提取和识别的可靠性。这其中包括噪声消除,图像二值化,倾斜校正等一系列图像预处理方法。2.1.2 特征提取(1)特
14、征是一个物体与其它物体相区分的特征或特征,或者它们的集合。特征是指对可以提取的数据进行处理,并具有一定的属性。就图像而言,任何一张图片都可以与其它类别的图片相区分,在这些图像的亮度、边缘、纹理、色彩等方面,都是视觉上的。有的特征是由矩阵、直方图等进行转换和处理来获得的。(2)要让电脑“理解”图像,就必须从影像中抽取出一些“非图像”的信息,如数值、矢量等。这个步骤被称为“特征抽取”,而这种“非图像表达”就是“特征”。利用这种特性,我们可以让电脑学会如何去提取和辨认它们,获得图片辨识能力。(3)由于图像识别本质上可以视作一个分类进程,换言之就是明确图像类别,并将之与其他图像类别进行差异性识别从而能
15、够有效区分,此时识别中所确定特征值,就必须能够非常好的反映图像,同时能够具有类别区分度。因此在本文中,我们提出了一种基于卷积神经网络(CNN)的多类图像识别方法。卷积神经网络其简单的提取方法和同时进行特征提取与分类器的优点,在图像识别领域中得到了广泛的应用。2.1.3分类器手写数字识别最后一步是分类器识别,根据之前对图像的特征提取,将图像划分到已有类别中。由于数字只有09十种,因此只需要划分十个类别。卷积神经网络的常用分类算法有逻辑回归和softmax回归。前者常用于处理二分类问题,对处理非线性数据较为麻烦。由1eCun等人于1998年提出的经典神经网络模型1eNet-5就采用了后者来进行分类
16、,使得在手写数字识别这种多分类问题取得了较好的识别效果和更优性能。2.2 激活函数2.2.1 什么是激活函数所谓激活函数,在这里主要指的是在人工神经网络条件下,其中存在的神经元映射函数,通常情况下是值得输入端向着输出端的映射要求。其功能优点在于能够提高模型非线性,如果不提供激活函数情况下,这意味着其中的每个神经元层,实质上都是一些输入端线性函数,换言之不管网络层数情况,输出结果都只会得到输入线性组合,导致当前模型无法提供实际仿真效果,但是提供激活函数,此时神经元就能够指向并接近所有非线性函数,并基于此才使得神经网络才会扩大使用范围,能够在许多非线性模型中加以利用。2.2.2 Sigmoid函数Si