【《手写汉字识别系统设计案例分析》5100字】_第1页
【《手写汉字识别系统设计案例分析》5100字】_第2页
【《手写汉字识别系统设计案例分析》5100字】_第3页
【《手写汉字识别系统设计案例分析》5100字】_第4页
【《手写汉字识别系统设计案例分析》5100字】_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手写汉字识别系统设计案例分析目录TOC\o"1-3"\h\u16803手写汉字识别系统设计案例分析 1322821.1设计目标 1301541.2开发语言选择 223491.3系统结构 568141.4软硬件环境 747821.4.1软件运行环境 7142801.4.2硬件运行环境 71.1设计目标本次实验的最终目标是实现较为完善的基于深度神经网络的脱机手写汉字识别系统。其整体编程语言采用Python实现,核心技术为卷积神经网络。首先,一个完整的脱机手写汉字识别系统必须具备正确性。本毕业设计的原理是卷积神经网络模型,依靠神经网络的训练得到识别率尽可能高的模型是本毕业设计的最高原则。在毕业设计的过程中,应不断比对已有的参数,调整卷积神经网络的参数,最终实现百分之七十以上的正确识别率。同时,程序设计的过程中,应及时发现存在的问题,首先避免语法错误,绝大多数语法错误都能通过Anaconda的Spyder编译器发现,而更为复杂的逻辑错误则需要经过一步一步的调试来发现问题等。第二,代码的鲁棒性也是程序设计中不可缺少的一环。考虑到硬件原因,本次毕业设计完成的手写汉字识别系统的测试集在进行测试前都必须经过一定程度上的图片转换操作,并且对于输入的图片数据有一定的约束,才能得到较好地识别效果。同时,毕业设计支持大约两千中字符与汉字类别,对于超过两千种常用汉字的部分,应给予系统不支持的提示,从而提高系统的鲁棒性。其次,必须保证系统的灵活性,使得后续对神经网络或是其他模块的修改和完善更加便捷。本毕业设计将代码整体分为三大模块。第一个模块是数据集处理模块。数据集的来源是CASIA脱机中文手写数据库。该数据库搜集了风格不同的手写汉字信息,数据量庞大,非常适合深度神经网络的训练和测试。该数据集原格式为gnt,需要进行一定程度上的解压缩处理操作,使得其转换为png图片格式。第二个模块就是深度神经网络模块。本模块为本毕业设计的核心模块,核心内容和设计关键都在该模块中得到实现。其中supercnn类实现的是CNN的整体搭建过程,可以通过调整输入的各种不同的参数,如输入通道、卷积核大小、输出通道等信息,实现卷积神经网络的不断优化,利用继承的方法实现卷积、池化等操作。trainging_CNN()函数完成的是训练操作,通过调用上述类的深度神经网络模型来完成训练操作,同时要注意保存训练好的模型和数据信息。show_accuracy()函数完成的是对于正确率的统计,通过选取部分测试集数据进行识别,与正确结果比较,计算出识别率并打印在屏幕上。random_inference()函数实现对随机一个测试集样本的预测,将正确结果和预测结果打印在标签上。result()函数可以对单个指定的文件夹汉字进行识别,同样打印出正确标签和预测标签。image_label_txt()函数将训练集和测试集的大量图片数据路径存放在一起,便于获取正确的标签。最后一个模块是图形设计界面模块,该程序形成具体的图形界面,可以根据图形界面的提示操作,去实现对单个汉字的识别操作。总体来说,满足了程序设计的灵活性,对于代码的后续完善和修改,可以去相应模块进行一系列的操作,简便灵活。重用性也在本次手写汉字识别系统中体现。各个对象、函数、方法之间存在着一定的联系,supercnn类实现的深度神经网络模型将在后续的训练函数,测试函数,预测函数中都有用到。而第二个模块也被应用到图形界面设计模块中,可以直接重用第二模块的方法来实现对单个汉字的识别。总而言之,本设计系统满足软件的重用性,使得整个系统之间存在着藕断丝连的联系,互相之间的高效使用,大大简化了代码,不仅提高了代码的可读性,也便于代码的后续完善。最后一点是程序的高效性。由于深度神经网络的计算量庞大,因此在电脑代码的运行上需要尽可能的提高效率。本人从硬件和软件两个方面入手,来进行系统效率的优化。硬件部分,设计的一开始是利用CPU进行整个手写汉字训练集的训练过程,训练所耗时间非常久,随着分类数量的增加,完全无法满足计算需求,因此我想方法将本人笔记本电脑上的独立显卡NVIDIAGetForceGTX1050Ti应用到本毕业设计中,以提高效率。软件部分,要想调用GPU显卡,必须安装相关驱动,通过下载安装

CUDA以及cuDNN,使得我的电脑上的GPU能够应用到深度神经网络的训练中去。经过测试,确实利用GPU能够大大提高程序运行效率,能够支持更多的汉字类别,进一步完善手写汉字识别系统。1.2开发语言选择Python是一种高级语言,早在上个世纪八十年代就被荷兰科学家提出,该语言具备函数式编程性、面向对象、强互动性以及可解释性的特点[11]。Python语言可以说是当下最契合计算机功能的一种语言,它将编程语言所必备的函数式编程,面向对象特性等,和当今计算机科学技术最热门的领域,比如大数据,机器学习,网络编程等领域相结合,这些最新科研技术都能利用Python语言便捷的实现,使得Python所涵盖的内容更加的丰富,在各种各样的领域中发挥着不可替代的作用,充分体现了计算机系统应有的高速计算能力,数据存储能力,网络通信能力等[12]。Python不但能够对大量数据进行整合归并,更能实现对于数据的分析转换。除此之外,Python近乎包含现有编程语言的各种优良特性,也被良好的用于软件开发工作。近年来,伴随着新兴技术如人工智能,云计算,大数据等技术得到了迅速的发展,互联网从业者逐步发现了Python语言的优良特性,并将之广泛应用于上述的多种领域。相较于传统的程序设计语言,他所具备的优点更是被全面放大,不仅使得必备的程序设计功能更加完备,更是利用自身特性,在前沿领域大展身手。首先,在人工智能领域中,Python凭借其独有的强大计算机数据处理能力,组成了人工智能算法中最重要的计算部分,为人工智能的学习和发展提供了便捷的平台,取得了非凡的成绩,也拥有着极高的地位。从最初的简单脚本设计到大型项目软件的开发,再到现在的大数据计算等,Python语言可谓是时代的弄潮儿。Python以及它所拥有的繁多的开源库使得它的功能具备着无限的可能,几乎包含了所有常见的计算机功能,从最基本的计算机应用开发,到数据图表制作及数学运算分析,再到网络编程,数据爬虫,人工智能等多个方面。Python最为突出的优点就是它仍有着无穷的潜力,每分每秒都在由全国各地的计算机从业者不停地完善和创新,不仅使得它的优越性更加突出,而且也扩大了它的知名度,形成一个良性循环。而在大数据方面,伴随着信息化的加速发展和计算机的全面普及,数据正在以几何数级爆炸增长,这些大量的数据蕴含着宝贵的财富,如何得到数量丰富且有价值的数据,并进行一系列的运筹帷幄,都需要付出巨大的努力。而Python语言在大数据信息的搜集和大数据分类处理中有着无可比拟的优势,网络爬虫使得信息搜集变得简便,图像识别技术,机器学习技术等使得海量的信息分析成为可能,Python在大数据的应用中扮演着重要的角色。如今Python已经是全国编程爱好者热衷的程序设计语言之一。Python的前身是一种脚本编程语言,在后续的发展中才逐渐完善功能。它不但能够胜任不同的脚本需求,而且也能实现面向对象的大型项目编程[13]。Python语言具有丰富的优点,下面将从几个方面进行介绍。首先,它开源且简介,适合计算机初学者的使用,它没有过多的关键字,防止初学者在变量的命名以及关键字的使用上遇到困难,整个语言的结构清晰明了,语法方面符合自然语言的思维逻辑,对传统的编程语言取其精华,去其糟粕,Python语言无疑是零基础接触编程语言的人的福音,免去了繁杂的语法学习过程,Python代码的可读性极高,不同于Perl语法的条条框框,极简的说明文档使得使用者们能够充分发挥自己的创造力去推动计算机技术的发展,解决实际问题。Python的库系统可以说是最有特色的一个组成部分。它的标准库已经涵盖了传统编程语言的绝大多数功能,如数学方面的计算,正则表达式的生成,网络编程的编写,数据库的处理,音视频文件处理,文件操作,图形界面等。其次,他的一系列具有特色的库,都是开源并且被科研人员不断更新的,这些特色工具使得科研人员们能够利用世界各地开发者的智慧,满足自己的技术指标和需求。除了这些,可移植的具备使得Python的应用范围更加广阔,这主要归功于它是开放源码的语言,在各种系统中,都具有良好的兼容性。在计算机对于Python语言的翻译过程中,Python强大的解释器就发挥它的作用,将Python源代码在不同的操作系统环境下翻译成机器语言执行,所以在程序的移植过程中会避免编译问题,库函数报错等问题。与此同时,可移植性结合可扩展性,Python的优势更上一层楼,对于已熟练掌握已有编程语言的研究人员来说,自然是熟悉的语言使用起来更加得心应手,Python的可扩展性使得程序的部分利用其它语言编写是具有可行性的,除了研究人员工作效率的提升,更是解决了Python在部分情况下,代码运行速度相对较慢的问题——对于高速度要求的代码块,完全可以用C语言等来实现而不影响整体Python的编程。面向对象也是当今社会编程语言的热门需求。面向对象的特点并不是Python与生俱来的,而是在后续的发展中,因为需要而产生的。因此,Python既可以是以对象构建的数据功能二元组为基础的面向对象的“JAVA”,也可以是由各种函数形成的面向过程的“C语言”,这完全取决于开发者的需求。脱机手写汉字识别系统训练数据集手写汉字识别模型手写汉字预测识别数据集处理卷积神经网络脱机手写汉字识别系统训练数据集手写汉字识别模型手写汉字预测识别数据集处理卷积神经网络图形界面原始数据集可用数据集数据字典识别结果图4系统结构图本毕业设计名为基于深度神经网络的脱机手写汉字识别系统。整体设计如图所示,系统主要结构为三大模块——数据集处理、卷积神经网络、图形界面。数据集处理模块位居第一模块,他将对所需识别的数据进行一定程度上的转换操作,便于采样输入到神经网络中去,也为了有更好的识别率。源自CASIA的数据集包含3926个类别的常用汉字和字符,训练集数据中每个类别有大约240个不同风格的手写体汉字和字符,测试集数据中每个类别有大约60个不同风格的手写体汉字和字符。在数据处理的过程中,训练集数据存放入train文件夹,在train文件夹下面,将每个类别的数据放入相同的文件夹,文件夹名按照五位数字和自身的类别序号组成。这样的分类方式,不仅便于后续根据文件路径存入txt文本中,也便于在数据字典中,依照标签查询对应的汉字。数据字典文件包括的就是每个汉字和字符序号以及对应的汉字和字符,所形成的是Python数据结构中的字典格式,其中字典的“键”代表的是汉字或字符,字典的“值”代表的是汉字或字符的标签。第二个模块就是深度神经网络模块。作为手写汉字识别系统的核心模块,卷积神经网络模型的搭建,训练函数的生成,测试单个制定样本,多个随机样本,单个随机样本,文件标签整合,这些内容都位于该核心模块中。首先实现了CNN的整体搭建过程,所生成的模型包括两次卷积操作,三组全连接操作,实现了比较简易的卷积神经网络模型。而在这些操作当中,可以不断修改调整每个操作方法的输入参数,如输入通道、卷积核大小、输出通道等信息,不断优化卷积神经网络,而这仅仅是一轮操作,总的迭代次数要根据最初参数的设置来决定,一般而言,训练的次数越多,最终形成的模型识别率越高。在这之后是对于训练集的训练操作,在训练函数中,通过调用上述搭建的深度神经网络模型并循环迭代来完成对整个训练集的训练,在训练的过程中,将完成所有的训练集的训练次数赋予一个变量times,也就是次数,每进行十次完全训练,就对神经网络模型进行一个保存,保存的结果可以用于后续的继续训练,也可直接用于测试已生成模型的精度。后续对整体精度的预测,也是通过选取测试集中的样本,输入已有的识别模型,对输出结果的正确率进行分析。随机测试单个样本也是完成类似的效果,相较于大量的识别率统计,能够更加直观的反应不同标签的预测效果,在这部分函数中,将会显示预测的汉字的正确标签以及经由预测后的标签,随机的范围是在全部测试集当中。而根据文件路径预测单个样本也和随机预测单个样本类似,主要的区别在于不需要将待预测的样本放在指定的文件夹中,为后续图层界面的调用做铺垫。最后是有一个分类统计文件的功能,目的是使得train文件夹和test文件夹中的标签能够方便的引用,从而便于在预测的过程中实现正确标签和预测标签的比较。最后的一个模块是形成图形界面,本毕业设计完成的是一个脱机汉字识别系统,应当具备清晰明了的图形界面以便于用户的使用,因此采用了Python的PySimpleGUI库实现了简单但是便捷的程序图形界面。该图形界面包括了核心的汉字识别功能,通过上传待预测的样本的文件路径,调用前一个模块预测单个制定样本函数,从而得到预测的标签信息。同时,仅仅只有标签信息并不能使得用户知道所要识别的汉字是什么,因此还必须添加一个附加功能,即通过标签查询到具体的汉字信息。因此在汉字识别栏下面,还添加了查询标签部分,能够对输入的标签信息,查询数据字典对应的汉字信息,弹窗显示查询的标签所对应的具体汉字。整个图形界面具备相应的文字引导,用户使用便捷。以上就是本毕业设计完成的脱机手写汉字识别系统的整体设计,设计过程中尽管存在一些疏漏,但是完成了核心原理的卷积神经网络搭建以及最终目标——手写汉字识别系统。总而言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论