基于卷积神经网络的脱机单个手写汉字识别
   来源:智能计算机与应用     2019年01月02日 14:13

基于卷积神经网络的手写汉字识别

李俊阳 雷鑫 宋宇 赛琳伟

摘 要: 本文在GoogLeNet网络基础上搭建了一个适合手写汉字识别的卷积神经网络。研究建立了新的手写汉字训练集,新训练集综合了现有的训练集并剔除了其中的错误,同时加入印刷体训练集,增加书写风格的多样性。训练神经网络时采用随机梯度下降算法,并加入动量项加速网络参数的收敛,使用正则项防止过度拟合,最终训练出的神经网络在训练集上的正确率为99.56%,在验证集上的正确率达到96%,并具有很好的泛化能力。

关键词: 手写汉字识别;卷积神经网络;深度学习

Abstract:This paper builds a Convolution Neural Network suitable for handwritten Chinese character recognition based on GoogLeNet network. The research has set up a new training set of handwritten Chinese characters. The new training set integrates the existing training set and removes the errors in them. At the same time the research has added a printed training set to increase the variety of handwriting styles. In the training of neural network a stochastic gradient descent algorithm is used and the momentum term is added to accelerate the convergence of the network parameters. The regular item is used to prevent overfitting. The final neural network reaches an accuracy rate of 99.56% on the training set and 96% on the validation set which has a good generalization.

Key words: handwritten Chinese character recognition;Convolution Neural Networks;deep learning

引言

漢字录入是中文信息处理的首要条件,当前,大量的中文文献是以扫描件形式整理存放的,这给后续处理制造了困扰,因而亟需汉字识别软件将其转化成文本信息[1]。汉字识别分为印刷体识别和手写体识别。早在上世纪60年代,即已开启了汉字印刷体识别的研究。目前,对印刷体的识别研究已经较为成熟[2]。相对来说,手写汉字的随意性大,比印刷体识别要困难许多。手写汉字识别根据数据采集的方式又可分为联机识别和脱机识别。具体地,在联机识别中,计算机能获得输入字符的笔画顺序,因此比脱机识别获得的信息更多,更容易做到辨识甄别[3]。再加上拍照或扫描的过程中,不同的光照、分辨率、纸张等都会带来干扰。由此可知,脱机手写汉字识别远比联机识别要呈现出更多的限制要求。而时下的联机识别已经得到了有效解决[4]。手写汉字文本的识别需要先将文本切分成单个的汉字,而后再进行识别。本文将只是考虑研究单个手写汉字的识别问题。

迄今为止,脱机手写识别虽然可见到许多研究,但实际识别过程中,其精度却很难达到研究提供的数值效果。当遇到真实、无限制的手写样本时,很多算法的识别率便会出现明显的降低。究其原因即在于汉字的独特性和手写体汉字风格的多样性,这些因素给手写体汉字识别增加了攻关难度。在实际应用中将尤显突出,且可重点表现如下方面:

(1)汉字数量多。参照中国汉字基本集GB2312-80的标准可知,常用的第一级汉字类别有3 755个,第二级汉字类别有3 008个,总计为6 763个。因此,对于汉字识别系统来说,要能够正确识别如此多种类的汉字将颇具现实挑战性。

(2)结构复杂。汉字有各种笔划,笔划又组成各种字根,字根按照一定规律分布在各个子空间中,形成不同的字形。可以看出,这种构字方式相当复杂,笔划相互交错,给汉字识别在一定程度上设定了研究阻碍。

(3)相似字多。汉字中有很多相似字,有的只差一“点”或一“捺”,这些相似字容易混淆,因此在汉字特征提取和分类器设计上,对这些相似字必须给予特别的注意。

(4)书写风格多变。每个人的书写风格千差万别,即便是同一个汉字,由不同的人书写出来,差异也是显而易见的,要从成百上千种风格中提取出本质不变的特征则并非易事。此外,书写纸张的好坏,字形的大小,扫描设备的优劣,噪声的干扰等,都会给汉字识别研究工作产生影响、带来困难。因此手写汉字识别仍是一个有待研发完善的热点项目课题。

传统的手写汉字识别先提取汉字的特征,例如采用Gabor、Gradient和HoG滤波。而后再调用分类器进行分类。常用的分类器有二次判别函数(MQDF)、支持向量机(SVM)、隐马尔科夫模型(HMM)等。手写汉字识别的一个新的研究热潮源起于2006年,同时伴随着一些新的手写数据库的发布,研究方向也逐渐从孤立的汉字识别过渡到更加真实、无限制的文本识别。同时,由于深度学习技术的发展[5],深度神经网络则运用到手写汉字识别上,其良好的表达能力能够包容汉字的复杂结构和书写风格的多样性,因此也取得了相当不错的应用效果。在最近几年中,手写体字符的识别率在逐渐提升。

在研究过程中,网罗搜集了各种手写体汉字数据库,调整数据库中图片亮度,剔除错误标签和图片,还自行生成了一个印刷体字库,然后设计合并了这些数据库,形成研究需要的训练集。接着,又搭建了卷积神经网络模型,使用训练集对其进行训练,提高了单个手写体汉字的识别正确率,并探讨分析了卷积神经网络的识别机理。

1 训练集

本项目的识别目标是全部一级汉字,共3 755个。一级汉字约占全部汉字使用量的99%。训练集为一个n×64×64×1的图像数组和一个n×1的标签数组,其中n=(300+300+138)份×3 755个,为汉字个数。标签数组的取值范围为[0,3 755]。具体来说,0表示非汉字,1~3 755与汉字的国标码顺序对应。

训练集的来源分为3部分。第一个来源是中科院自动化所发布的HWDB1.1数据集,如图1(a)所示。该数据集包含300份一级汉字。图像为8位,书写较为疏放偏草。该数据集字迹较暗,对其亮度进行了调整。将每个像素开方,由于像素取值为[0,1],开方之后取值范围不变,但数值却有所增加。这就完成了數据集的变量操作。该训练集中还夹杂有一些错误,将会对训练造成干扰,因此需要剔除。这些错误约占1.5%,大部分为标签错误,有少量的涂抹图片。此外,剔除了一些根本无法识别的图像。

第二部分是HCL2000数据集,如图1(b)所示。该数据集由北京邮电大学模式识别实验室发布,包含1 000份一级汉字,是目前规模最大的脱机手写汉字库。数据为二值化模式,书写较为工整。该数据集更加利于识别,为了突出不易识别的HWDB1.1训练集,增强模型识别能力,HCL2000只撷取了其中的300份。HCL2000数据集中的错误主要为生成训练集时汉字的切割错误造成的空白。

第三部分为网络上收集的印刷体,来源网站为http://www.diyiziti.com/List,如图1(c)所示。采集了138份字库。有些字库包含繁体字,对其进行了过滤剔除。最后对这3个训练集合并展开研究训练。

1.1训练集 (b) HLC2000训练集 (c)印刷体训练集

2 卷积神经网络训练

本次研究中,将给出神经网络模型设计如图2所示。

3 手写汉字识别

3.1 神经网络模型

研究中的神经网络由GoogLeNet改进而来,网络结构如图2所示。网络走向为从上往下,每一层的输入为上一层的输出。输入层大小为64×64×1。首先,使用64个7×7的卷积核对输入图像做卷积;然后做大小为5×5、步幅为3的池化,此时输出数组大小为22×22×64;接下来,是9个inception单元,每个单元后图像的特征数逐渐增加,直至累加为1 440个3×3的图像;最后,将3×3×1 440的图像展开为一维,又续接一个大小为4 000的全连接层,再接一个大小为3 756的softmax层作为输出层。

每个inception单元组合不同卷积核的卷积结果,并以此为基础再做批规范化。第一个inception单元先接一个BatchNormalization层,将上一层的结果批规范化;然后BatchNormalization的输出作为输入,分别延伸出3个分支。第一个分支是32个1×1的卷积、第二个分支为48个1×1的卷积,又接96个3×3的卷积、最后一个分支是3×3的池化,又接16个1×1的卷积;最后将3个分支的输出用concatenate层组合,由此得到的输出数组大小为22×22×(32+96+16)=22×22×144。总地说来,每个inception单元都是将数个大小不同的卷积结果和一个池化组合,每种卷积之前先接一个1×1的卷积,有一个单独的1×1卷积,池化则是在后面续接一个1×1的卷积。

第二个inception单元先将上一个inception的输出批规范化,然后分别引申出5个分支:包含48个1×1的卷积核,还包含3×3、3×9、9×3的卷积,都是先接数个1×1的卷积,卷积核数分别为120、4、4。此外,还包含一个池化层接16个1×1的卷积。这5个分支组合之后的特征数为48+120+4+4+16=192。

第三个inception单元有3个分支,前2个分支都是卷积。与前述不同的是,这2个卷积的步长都为2,因此卷积之后的图像大小变为11×11,池化的步长也随即变换为2,最后3个分支得到的图像大小相同,将其合并之后图像大小缩变为11×11。共有3个这样的图像大小改变的inception,3次缩小之后最终图像大小为3×3。每个inception单元处理后,图像的特征数逐渐增加,最终为1 440个。所以,经过9个inception单元后,输出数组大小为3×3×1 440;而后接一个概率为0.2的dropout层;再接一个大小为4 096的全连接层;此后,又接一个概率为0.5的dropout,最后接大小为3 756的softmax层作为输出。输出向量表示该汉字属于每个类的概率。

3.2 训练

随机初始化后,可得到网络初始权重。训练采用随机梯度下降算法,学习率为0.1,动量项为0.9,正则项中权值衰减系数为10-6。为了验证识别正确率的真实性并且提高网络模型的泛化能力,研究中将自行建立的汉字数据库划分为训练集和验证集。

图3为训练集和验证集的误差结果曲线。由图3可知,随着迭代次数的增加,训练集误差不断减小,而验证集误差也随之减小;当迭代次数超过10次后,验证集的识别误差小于4%,不再降低,至此便可以停止训练,网络参数达到了最优化。此时的训练集正确率为99.56%。

4 优化和分析

网络运行最初采用了64个7×7的卷积。分析这64个卷积核发现,这些并不是笔画的局部特征,而是类似二维码的图像,如图4所示。由此看来,卷积神经网络的设计即在试图运用这64个卷积核作为一组基,去线性组合局部图像。而这一点也突显了与人的思维在根本上的差异与不同。

5 结束语

本文基于GoogLeNet网络设计提出了一个手写汉字识别的卷积神经网络。原始手写体汉字数据库中存在较多错误,这些错误会导致各种汉字识别模型的正确率陷于瓶颈将难于提高,而剔除这些错误形成新的训练集,再对模型进行训练,对于识别正确率的提高具有良好积极作用。

卷积神经网络在手写汉字识别领域具有较大优势,就是利用不同于人的思维方式去提取汉字特征,通过层层抽象提取,得到类似于二维码的更适合机器识别的图像,由此来实现进一步的有效汉字识别。

参考文献

[1] 王正群. 手写体汉字识别研究[D]. 南京:南京理工大学,2001.

[2] 江波,史凤波. 文字识别领域中模式识别技术的应用[J]. 科技资讯,2015(27):6-7.

[3] 金连文. 手写体汉字识别的研究[D]. 广州:华南理工大学,1996.

[4] 张辉. 大规模联机手写汉字识别数据库整理、统计与实验分析[D]. 广州:华南理工大学,2012.

[5] 尹宝才,王文通,王立春. 深度学习研究综述[J]. 北京工业大学学报,2015,41(1):48-59.

汉字 卷积 神经网络