基于神经网络的手写蒙古字母识别(小结)

各位博友大家好!我是PennyWu,让大家久等了,这次学习从宏观角度梳理手写蒙古字母识别。

功能结构

手写蒙古文字母识别系统主要通过五个主模块和三个辅助模块来共同实现手写文字识别的功能。主模块分别是处理图像模块(dealimage)、读入图像模块(loadimage)、训练神经网络模块(trainnetwork)、测试神经网络模块(testnetwork)、创建神经网络模块(createnetwork)。辅助模块分别是辅助处理图像模块、辅助训练神经网络模块、辅助读入图像模块。识别算法的模块结构。

模块结构图

创建神经网络模块,相当于主函数,主要作用是统一管理处理图像模块、读入图像模块、训练神经网络模块和测试神经网络模块。

处理图像模块,主要功能是将数据集进行简单的灰度化和二值化处理,使处理后的图像达到可以读入图像的要求。

读入图像模块,此模块将读入整个训练集以及验证集中所有的手写蒙古字母图像,统计图像数目。根据图像像素值进行划分,并将图像数据存储到images二维数组中,将图像的标签存储到labels二维数组中。

训练神经网络模块,主要功能是首先构建CNN神经网络模型,评估模型,定义损失函数,优化函数,激活函数以及dropout层。其次将样本数据按批次用feed方法送入CNN模型中进行训练。 神经网络训练结束后,将验证集送入训练CNN模型中,评估预测准确率。最后,保存训练好的CNN模型参数。

测试神经网络模块,主要功能是先获取训练好的CNN模型框架,将保存好的CNN模型参数读取出来,应用于CNN模型框架之中。从测试集中读取手写蒙古文字母图像进行测试,并采用feed方法将图片数据送入CNN模型中,预测出概率最高的三个测试结果,并随着最佳结果一并输出。

辅助处理图像模块的设置,主要是由于通过裁剪和旋转得到的手写蒙古字母图像并非标准的手写蒙古字母图像,对于一些特殊的手写蒙古字母图像需要进行单个图像处理。作为辅助处理图像的模块,其作用主要是对单个图像进行灰度化和二值化处理,同时保存灰度化和二值化图像。

辅助测试神经网络模块的设置,主要是由于训练神经网络时,定义的卷积核尺寸、卷积层深度、感受野尺寸、池化层深度、全连接层神经元个数以及批次处理个数和迭代次数等参数的影响,使得训练神经网络的过程需要较长的训练时间,进而影响测试神经网络的进程。辅助测试神经网络模块紧随训练神经网络模块之后的,其作用是可以直接读取训练好的神经网络模型,不需要大量地等待时间,直接进行测试。

辅助读入图像模块的设置,主要是由于调试程序和改进代码的过程,需要对手写蒙古字母图像数据进行跟踪。辅助读入图像的模块,其主要作用是输出二值化后图像的每个像素点的值,这些值将来通过主模块的读入图像模块进行处理后,存入相应的numpy数组中。

创建神经网络

创建神经网络本质上是代码的主函数,通过import调用其它模块。通过函数调用,盘活整个手写蒙古字母识别代码,从而实现基于神经网络的手写蒙古字母识别。具体的算法步骤如下:

步骤1:调用读入图像模块loadimage、训练神经网络模块trainnetwork和测试神经网络模块testnetwork。

步骤2:从训练样本库中读取训练集图像个数、训练集图像数据和训练集图像标签。
步骤3:从验证样本库中读取验证集图像个数、验证集图像数据和验证集图像标签。
步骤4:将训练集图像个数、训练集图像数据、训练集图像标签、验证集图像 数据和验证集图像标签送入神经网络中进行训练。
步骤5:将训练好的神经网络用于测试测试集图像数据。

训练神经网络

定义迭代次数为1000次,每五次迭代输出一次准确率。在前100次迭代中,可以看出准确率大幅增加。其中,第45次迭代后准确率达到50%以上,第60次迭代后准确率达到60%以上,第90次迭代后准确率达到70%以上。在第100次迭代到200次迭代中,可以看出准确率缓慢增长,其中,第150次迭代后准确率达到80%以上。在第200次迭代以后直到1000次迭代结束,可以看出准确率增长微乎其微,最终在1000次迭代后,神经网络的识别准确率达到了92.17391%。

训练结果图

测试神经网络

将23个手写蒙古字母用0-22这23个数字进行标注。对测试集中每个手写蒙古字母图像进行测试。每个手写蒙古字母图像都会对应测试出23个概率,也就是测试的手写蒙古字母图像和这23个手写蒙古字母分别的相似程度的概率。将概率最大的前三个手写蒙古字母对应标注的数字以及相对应的概率进行输出,同时将概率最高的手写蒙古字母对应标注的数字输出作为最佳的测试结果。

测试集概率预测及最佳结果图

通过测试结果可以看出,在大量数据集的基础上,通过对CNN神经网络进行训练,能达到非常可观的准确率以及相当不错的测试结果。

------------------------------------------

经过这一段时间的学习,相信大家都学到了很多。这一期的教学就到此结束,以后还有更精彩的内容与大家学习分享。感谢大家的支持。

基于神经网络的蒙文手写字母识别的一些研究(综述)相关推荐

  1. 基于神经网络的蒙文手写字母识别的一些研究(数据集处理)

    基于神经网络的手写蒙古字母识别(二) 各位博友大家好!我是PennyWu,又和大家见面了,这期的学习内容也是重头戏,讲究一种方法,希望大家都能学以致用.话不多说,我们就开始吧. 1. 意义 据不完全统 ...

  2. 使用MATLAB实现基于BP神经网络训练的手写字母识别程序

    前言 大三的时候利用MATLAB搭建了一个基于BP神经网络框架的手写字母识别程序,其中使用了EMNIST数据集进行训练和测试,可实时对手写输入样本进行识别,并返回两个最可能的结果,过程中可继续添加样本 ...

  3. 【手写数字识别】基于matlab GUI BP神经网络单个或连续手写数字识别系统【含Matlab源码 2296期】

    ⛄一.手写数字识别技术简介 1 案例背景 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性.由于手写体数字的随意性很大,如笔画粗细.字体大小. ...

  4. 基于随机梯度下降法的手写数字识别、epoch是什么、python实现

    基于随机梯度下降法的手写数字识别.epoch是什么.python实现 一.普通的随机梯度下降法的手写数字识别 1.1 学习流程 1.2 二层神经网络类 1.3 使用MNIST数据集进行学习 注:关于什 ...

  5. python手写英文识别_pytorch三层全连接层实现手写字母识别方式

    先用最简单的三层全连接神经网络,然后添加激活层查看实验结果,最后加上批标准化验证是否有效 首先根据已有的模板定义网络结构SimpleNet,命名为net.py import torch from to ...

  6. 前馈神经网络与支持向量机实战 --- 手写数字识别

    前馈神经网络与支持向量机实战 - 手写数字识别 文章目录 前馈神经网络与支持向量机实战 --- 手写数字识别 一.前馈神经网络介绍 二.支持向量机介绍 三.数据集说明 四.环境准备 五.实验要求 六. ...

  7. 基于朴素贝叶斯的手写数字识别

    基于朴素贝叶斯的手写数字识别 关于数据集 关于SIMD 关于python 数据预处理 总结 关于数据集 MNIST数据库(http://www.cs.nyu.edu/~roweis/data.html ...

  8. matlab手写字母识别,一种基于MATLAB的手写字母的神经网络识别方法

    文章编号 :1009 - 671X(2001) 10 - 0028 - 03 一种基于 MATLAB 的手写字母的神经网络识别方法 邓铭辉 ,孙 枫 ,张 志(哈尔滨工程大学 自动化学院 ,黑龙江 哈 ...

  9. 基于tensorflow、keras利用emnist数据集构建CNN卷积神经网络进行手写字母识别

    EMNIST 数据集是一个包含手写字母,数字的数据集,它具有和MNIST相同的数据格式.The EMNIST Dataset | NIST 引用模块介绍: import tensorflow as t ...

最新文章

  1. HDU 4035 Maze(树形概率DP)
  2. 【极客学院每日1课 】Java入门与常用技巧
  3. 删除一个目录及其子目录下的所有.svn文件
  4. python排名分析_用Python分析了近几年胡润排行榜,我酸了……
  5. 该虚拟机似乎正在使用
  6. 粒度过粗_这些书帮助我度过了第一次成为技术主管的经历
  7. 如何创建和自定义SQL Server模板
  8. 由 Apache 说开,中国开源项目已经走向世界!
  9. java线程future_Java中多线程对运行结果怎么利用future获取
  10. spark-sql(spark sql cli)客户端集成hive
  11. 解析docx C语言,c语言习题解析【含基础知识讲解】.docx
  12. BeX5安装遇到问题
  13. openssl error while loading serial number
  14. 英特尔cpu发布时间表_2014英特尔处理器发布时间表
  15. 网页背景颜色怎么设置css,css怎么设置网页背景颜色
  16. php 使用手机扫条码,关于扫条码的问题
  17. 支付宝小程序与生活号可互相关联啦!
  18. 为什么热咖啡保温几小时后的变化比冰咖啡大?
  19. VR虚拟现实培训解决方案
  20. android内存显示大小不一样,对Android很重要!手机运行内存真的越大越好吗?

热门文章

  1. 三硬币问题建模及Gibbs采样求解(Python实现)
  2. webGl应用场景有哪些
  3. Google浏览器限制网速调试加载速度
  4. 【雷达通信】雷达脉冲压缩含Matlab源码
  5. 系统分析与设计团队项目第二次
  6. I9000 GPS 优化设置
  7. 黑客攻防技术宝典(十二)
  8. 分布式技术引爆人工智能
  9. window.showModalDialog() 过时替代方案
  10. flickr api