65.9K
CodeProject 正在变化。 阅读更多。
Home

使用多卷积神经网络进行在线手写识别

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (15投票s)

2013 年 1 月 13 日

CPOL

13分钟阅读

viewsIcon

89571

本文在第九届模拟进化与学习国际会议 (SEAL 2012) 上发表。我想将其与我之前的文章一起发布在此,以便大家能更好地理解我的项目。

本文在第九届模拟进化与学习国际会议 (SEAL 2012) 上发表。我想将其与我之前的文章一起发布在此,以便大家能更好地理解我的项目。  

摘要。  

本文介绍了一个使用 C# 语言编写的在线手写识别系统的库,该系统使用 UNIPEN 在线手写训练集。识别引擎基于卷积神经网络,在 MNIST 训练集上识别率达到 99%,在 UNIPEN 数字训练集 (1a) 上达到 97%,在 44022 个大写字母和数字的集合 (1a,1b) 上达到 89%,在小写字母 (1c) 上达到 89%。这些网络被组合起来创建一个更大的系统,可以识别 62 个英文字母和数字。提出了一种手写分割算法,可以从手写文本中提取句子、单词和字符。然后将字符作为输入提供给网络。
关键词:人工智能,卷积,神经网络,UNIPEN,模式识别。 

引言

人工智能神经网络 (ANN) 起源于 20 世纪 50 年代末,直到 20 世纪 80 年代计算机普及时代才获得广泛关注。如今,ANN 主要用于解决复杂的现实世界问题。本文简要介绍了一种非常特殊的神经网络(卷积神经网络),它为特定目的而构建(识别手写数字和字母)。作者还用 C# 语言创建了一个用于该神经网络的库,该库在使用两项基本技术(弹性失真,极大地扩展了训练集的大小,以及卷积神经网络)的手写识别任务(MNIST 和 UNIPEN)上表现出最佳性能。通过使用库中的网络原型,识别系统可以在运行时创建、加载多个不同的神经网络。此外,系统还可以组合多个组件网络来识别更大的模式数据集。 

卷积神经网络 (CNN) 

 多层神经网络通过梯度下降训练,能够学习复杂的、高维的、非线性的映射,这使其成为图像识别任务的明显选择。在传统的模式识别模型中,一个手工设计的特征提取器从输入中提取相关信息并消除不相关的变化。然后,一个训练分类器(通常可以使用标准的、全连接的多层神经网络作为分类器)将生成的特征向量分类到各个类中。然而,这可能会遇到一些影响识别结果的问题。卷积神经网络解决了传统方法在这方面的不足,从而在模式识别任务上取得了最佳性能。

 

图. 1. 典型的卷积神经网络 (LeNET 5)[1]

CNN 是一种特殊的多层神经网络。与其他网络一样,CNN 通过反向传播算法进行训练。区别在于它们的架构。卷积网络结合了三种架构思想,以确保一定程度的移位、缩放和失真不变性:局部感受野、权值共享(或权值复制)空间或时间子采样。它们专门设计用于直接从数字图像中识别模式,而预处理操作最少。预处理和分类模块在一个集成的方案中。CNN 的架构细节在 Yahn LeCun 博士和 Patrice Simard 博士的文章 [1],[3] 中有全面描述。

手写数字识别的典型卷积神经网络如图 1 所示。它由几层组成。输入层大小为 32x32,接收包含要识别的数字的灰度图像。像素强度被归一化在 -1 和 +1 之间。第一个隐藏层 C1 由六个特征图组成,每个特征图有 25 个权值,构成一个 5x5 的可训练卷积核和一个偏置。特征图的值是通过将输入层与相应的卷积核进行卷积并应用激活函数来计算的。特征图的所有值都被约束共享相同的可训练卷积核或相同的权值。由于边界效应,特征图的大小为 28x28,小于输入层。

每个卷积层后跟一个子采样层,该层将相应卷积层特征图的维度减小两倍。因此,隐藏层 S2 的子采样图大小为 14x14。类似地,层 C3 有 16 个大小为 10x10 的卷积图,层 S4 有 16 个大小为 5x5 的子采样图。函数实现方式与层 C1 和 S2 的性能完全相同。S4 层的特征图大小为 5x5,对于第三个卷积层来说太小了。该神经网络的 C1 到 S4 层可以视为一个可训练的特征提取器。然后,在特征提取器中添加了一个可训练分类器,形式为 3 个全连接层(通用分类器)。

 

图. 2. 输入图像后跟一个执行 5 × 5 卷积和 2 × 2 子采样图的特征图 

Patrice Simard 博士在他的文章“用于视觉文档分析的卷积神经网络最佳实践”[3] 中提出了一种不同的 CNN 模型,用于手写数字识别,该模型将卷积和子采样过程集成到单个层中。该模型以更高的分辨率提取简单特征图,然后通过将层子采样两倍将其转换为更复杂但分辨率较低的特征图。可训练卷积核的宽度选择为以单元为中心(奇数大小),以具有足够重叠而不丢失信息(3 可能太小,只有一个单元重叠),但又不会产生冗余计算(7 可能太大,有 5 个单元或超过 70% 的重叠)。对输入进行填充(使其变大,以便在边界上有一个以单元为中心的特征单元)不会显著提高性能。在不进行填充、子采样为 2、可训练卷积核大小为 5x5 的情况下,每个卷积层将特征图大小从 n 减小到 (n-3)/2。由于此模型使用的初始 MNIST 输入大小为 28x28,因此在 2 层卷积后生成整数大小的最接近值是 29x29。在 2 层卷积后,大小为 5x5 的特征对于第三层卷积来说太小了。该神经网络的前两层可以视为可训练特征提取器。然后,在特征提取器中添加了一个可训练分类器,形式为 2 个全连接层(通用分类器)。

图. 3. 基于 Patrice Simard 博士模型的卷积网络

反向传播 

反向传播是更新每一层的权值变化的过程,从最后一层开始,向后遍历各层直到到达第一层。标准反向传播在网络库中不需要使用,因为收敛速度慢。相反,采用了 Dr. LeCun 在其文章“Efficient BackProp”[2] 中提出的“随机对角 Levenberg-Marquardt 方法”。

UNIPEN 训练集 



在一项大规模的协作努力中,众多研究机构和行业创建了 UNIPEN 标准和数据库[5]。该数据最初由 NIST 主持,分为两个分发版本,称为训练集(train_r01_v07 set)和开发集。自 1999 年以来,国际 UNIPEN 基金会 (iUF) 主持该数据,目标是保障训练集的发布并促进在线手写在研究和应用中的使用。

由于 UNIPEN 训练集是来自不同研究机构的特定数据集的集合,这些数据集是通过一些特定的过程进行分解的。为了能够将我的系统的识别结果与已发表的研究进行比较,UNIPEN 训练集被用作我的识别器的训练输入。然而,我的方法略有不同;我们发现了一些关于这些数据集结构的一般性要点,创建了一个过程,该过程在大多数情况下能够正确地分解训练集中的所有数据集。

UNIPEN 格式在 [5],[6],[15] 中有描述。UNIPEN 数据文件的格式包含 KEYWORDS,这些 KEYWORDS 分为几组,例如:强制声明、数据文档、字母表、词汇表、数据布局、单元系统、笔迹轨迹、数据注解。为了获取信息和对这些关键词进行分类,我们创建了一个基于上述组的类集合,这可以帮助系统从数据文件中获取和分类所有必要的信息。

图像预处理和分割 

分割是一个重要的模式识别系统步骤。通常,使用投影技术来分离文本图像中的线条、单词和字符。然而,如果字符组织混乱,将很难处理。因此,我们开发了一种新算法来解决这个问题。

 

图. 4. 获取单个字符矩形边界的新算法。 

图. 5. 单个字符分割步骤 

图 5 展示了上述算法应用于手写字符的样本。获取字符的矩形边界是从字符的第一个左侧像素开始的。边界从左到右、从上到下逐像素扩展,直到边界能够包裹字符。类似算法可以用于从最顶部的像素获取字符边界。

通过改变水平和垂直步长,系统可以在不改变算法的情况下,不仅获得单个字符,还可以获得单词或句子。

图. 6. 单词分割和单个字符分割样本 

将此技术与其他众所周知的分割方法结合使用,有助于系统更好地识别复杂文本图像中的字符。

使用多神经网络的识别系统 

对于数字、大写字母或小写字母等小模式集合,卷积网络的识别结果非常好。然而,当我们想创建一个能够识别更大集合(例如数字和英文字母(62 个字符))的神经网络时,问题就开始出现了。找到一个优化且足够大的网络变得更加困难,用大型输入模式训练网络需要更长的时间。网络的收敛速度变慢,特别是,准确率显著下降,因为更大的手写字符、许多相似且易混淆的字符等。此外,假设我们可以创建一个足够好的网络来准确识别英文字符,但它肯定无法正确识别其输出集之外的特殊字符(如俄语或中文),因为它不具备扩展能力。因此,为非常大的模式分类器创建一个唯一的网络非常困难,甚至可能是不可能的。

 

图. 7. 使用多神经网络的手写识别系统 

解决上述问题的方案是,与其使用一个大型的单一网络,不如使用多个小型网络,这些网络对各自的输出集具有很高的识别率。除了官方输出集(数字、字母…)之外,这些网络还有一个额外的未知输出(未知字符)。这意味着,如果输入模式未被识别为官方输出中的字符,则将被理解为未知字符(图 3)。对于手写字符这样的大型模式集合,存在许多相似的字符,这不仅会使机器,也会使人有时感到困惑,例如:O,0 和 o;9,4,g,q 等。这些字符可能导致网络识别错误。通过在输出端使用附加的拼写检查器/投票模块,系统可以显著提高识别率。输入模式由所有组件网络进行识别。然后,这些输出(未知输出除外)将作为拼写检查器/投票模块的输入。该模块将根据先前识别的字符、内部词典和其他因素来决定哪个是准确率最高的识别字符。

该解决方案克服了传统模型的几乎所有限制。新系统包括几个小型网络,这些网络易于优化以获得最佳识别结果。训练这些小型网络比训练一个巨大的网络所需时间更少。特别是,新模型非常灵活且可扩展。根据要求,我们可以加载一个或多个网络;我们也可以向系统中添加新网络来识别新模式,而无需更改或重建模型。所有这些小型网络都具有可重用性,可以用于其他多神经网络系统。

识别结果。 

为了评估该库在手写识别系统中的应用,作者在两个不同的手写训练集 MNIST 和 UNIPEN 上进行了实验。在 MNIST 训练集 [10] 上,准确率可达 99%;在 UNIPEN 数字上,准确率可达 97%;在 UNIPEN 数字和大写字母 (1a,1b) 上,准确率可达 89%;在 UNIPEN 小写字母 (1c) 上,准确率可达 89%[13]。

  

图. 8. 使用 UNIPEN 训练集进行网络训练界面(在 1c 中实验) 

 图 8 是演示程序的网络训练界面。在小写字母集 1c 上训练 48 个周期后,准确率可达 89%(第一次训练 30 个周期,第二次训练 18 个周期)。在前 30 个周期后,etaTrainingRate 太小,影响了网络训练性能。因此,网络第二次训练,设置了更大的初始 etaTrainingRate = 0.00045。

图. 9. 62 个周期后网络训练参数统计 

图 9 是数字和大写字母识别网络(36 输出网络)的网络训练参数统计。通过在反向传播过程中使用随机对角 Levenberg-Marquardt 方法,网络的收敛速度比标准反向传播快得多。经过 65 个周期后,网络的准确率可以达到 89%。

为了识别更大的字符集,例如英文字符(62 个字符),我们创建了一个基于图 5 所示模型的识别系统。该系统结合了三个高识别率的神经网络:数字(97%),大写字母(89%)和小写字母(89%)。该系统通过使用额外的拼写检查器模块证明了其有效的识别能力。

 

图. 10. 使用多网络绘制的鼠标字符识别 [13] 

所有库、演示程序、源代码和训练结果都可以在 [13] 下载。

结论 

本文介绍了一种使用人工卷积神经网络进行手写识别的方法。通过卷积神经网络、弹性失真技术和随机对角 Levenberg-Marquardt 方法的结合,实验神经网络取得了积极的结果。此外,提出的使用多组件神经网络的模型还展示了为大型模式集(如英文字符集等)创建高效且灵活的识别系统的能力。通过在输出端使用拼写检查器和投票模块,该系统可以从高识别率的组件网络中选择准确率最高的字符。因此,它比传统方法获得了更好的识别结果。

 参考文献 



Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, "Gradient-Based Learning Applied to Document Recognition", Proceedings of the IEEE, vol. 86, no. 11, pp. 2278-2324, Nov. 1998. [46 pages].

2. Y. LeCun, L. Bottou, G. Orr, and K. Muller, "Efficient BackProp", in Neural Networks: Tricks of the trade, (G. Orr and Muller K., eds.), 1998. [44 pages]

3. Patrice Y. Simard, Dave Steinkraus, John Platt, "Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis," International Conference on Document Analysis and Recognition (ICDAR), IEEE Computer Society, Los Alamitos, pp. 958-962, 2003.

4. Fabien Lauer, Ching Y. Suen and Gerard Bloch, "A Trainable Feature Extractor for Handwritten Digit Recognition", Elsevier Science, February 2006

5. I. Guyon, L. Schomaker, R. Plamondon, R. Liberman, and S. Janet, “Unipen project of on-line data exchange and recognizer benchmarks”. In Proceedings of the 12th International Conference on Pattern Recognition, ICPR’94, pages 29–33, Jerusalem, Israel, October 1994. IAPRIEEE.

6. Louis Vuurpijl, Ralph Niels, Merijn van Erp Nijmegen, “Verifying the UNIPEN devset”.

7. Marc Parizeau, Alexandre Lemieux, and Christian Gagné, “Character Recognition Experiments using Unipen Data”. Parizeau & al., Proc. of ICDAR 2001, September 10-13, Seatle.

8. List of publications by Dr. Yann LeCun. http://yann.lecun.com/exdb/publis/index.html

9. Mike O'Neill, “Neural Network for Recognition of Handwritten Digits”. https://codeproject.org.cn/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

10. Pham Viet Dung, “Neural Network for Recognition of Handwritten Digits in C#”. https://codeproject.org.cn/Articles/143059/Neural-Network-for-Recognition-of-Handwritten-Digi

11. Pham Viet Dung, “Library for online handwriting recognition system using UNIPEN database”. https://codeproject.org.cn/Articles/363596/Library-for-online-handwriting-recognition-system

12. Pham Viet Dung, “UPV – UNIPEN online handwriting recognition database viewer control”. https://codeproject.org.cn/Articles/346244/UPV-UNIPEN-online-handwriting-recognition-database

13. Pham Viet Dung,” Large pattern recognition system using multi neural networks ”. https://codeproject.org.cn/Articles/376798/Large-pattern-recognition-system-using-multi-neura

14. Modified NIST ("MNIST") database (11,594 KB total). 



© . All rights reserved.