APP下载

基于粗细粒度深度学习的脱机手写汉字识别

2018-07-27黄寄洪

梧州学院学报 2018年3期
关键词:细粒度手写识别率

陈 悦 ,黄寄洪

(1.2.梧州学院 信息与电子工程学院,广西 梧州 543002)

0 引言

由于在拍照文档、证件、票据、邮政信封、手稿文书等光学字符识别(Optical character recognition,OCR)系统以及手写文字输入设备中的广泛应用,自上个世纪80年代以来,手写汉字识别一直是模式识别的一个重要研究领域。手写体汉字识别可以分为脱机(Offline)识别和联机(Online)识别两大类,联机识别所处理的手写文字是通过触摸屏或数字手写板等设备获取到的在线实时书写的文字信号,而脱机手写文字识别所处理的手写文字是通过扫描仪或摄像头等图像捕捉设备获取到的手写文字图片。由于识别的对象不同,使得这两类手写识别技术所采用的方法和策略也不尽相同。前者的识别对象是一系列按时间先后排列的采样点信息,而后者则是丢失了书写笔顺信息的二维像素信息,由于没有笔顺信息,加上在不同光照、分辨率、书写纸张等条件下进行图像采集,难免会受到噪声干扰。一般来说,脱机手写文字识别比联机手写文字识别更加困难,本文研究的是脱机手写汉字识别。

尽管经过了多年的研究发展,手写汉字识别目前仍然是一个极具挑战性的模式识别问题[1],主要表现在:第一,汉字个数多,仅1980年制定的国标GB2312-80编码就定义了多达6763类常用汉字,而在2000年发布的国标GB18010-2000则大幅度扩展了字符集,定义了27533类汉字编码标准,因此汉字识别问题属于超大规模数据集的模式识别问题。第二,字形变化多,相比较于印刷体汉字,手写字体的书写缺乏规范性,随意性较大而且变化也多样,如常用的横、竖、撇、捺、点等笔划容易变形为其他笔划,此外不同人的书写风格各有特点也造成手写体的变化多种多样。第三,汉字相似字多,例如:“己-已” “囗-口” “泪-汩-汨”“菜-莱”“睢-雎”“汆-氽”等,这些高度相似的汉字给计算机自动识别带来极大的挑战。

经过研究学者们的不懈努力,近年来手写汉字识别取得了极大的进展,基于鉴别特征提取方法(Discriminative feature learning,DFE)和鉴别学习二次判决函数(Discriminative learning quadratic discriminant function,DLQDF)分类器,在极具挑战的脱机手写汉字数据集CASIA-HWDB[2]的DB1.1上,手写单字识别取得的最高识别率是[3]92.08%;在国际文档分析与识别大会汉字单字识别竞赛(ICDAR 2013 Competition DB)中最高识别率是92.72%。但是近年来基于传统的“预处理+特征提取+分类器”的手写汉字识别框架遇到了瓶颈,识别正确率难以得到较大幅度的提升,随着深度学习的兴起以及不断发展[4-6],特别是深度卷积神经网络(CNN)[7-8]、深度置信网络(Deep belief network,DBN)[4]、深度递归神经网络(Deep recurrent neural network,DRNN)[9]等深度模型在图像识别及计算机视觉各领域大量突破性成果的涌现,相关的方法也被逐步应用到手写体文字识别领域[10-12],并取得了不少突破性发展,例如自2011年起,连续两届的ICDAR(International Conference on Document Analysis and Recognition)手写汉字识别比赛的获胜者都是采用基于深度学习或神经网络的方法[13-14],在2013年的ICDAR手写汉字比赛中,来自富士通公司的团队采用改进的CNN网络,获得了脱机手写汉字识别的第一名,因此基于深度学习的方法所取得的结果大幅度领先传统的方法,显示出深度学习的强大潜力。

基于深度学习的手写汉字识别方法相比传统方法有了质的提高,但离终极目标100%识别正确率还是有一定的差距,而且这只是在给定的标准数据集下得到的最好结果,因此不断提高手写汉字的识别率将是今后很长一段时间内的研究重点和难点。基于深度学习方法识别率的提高通常可以通过优化汉字特征提取、加深深度学习网络的层数、加大深度学习每一层网络的规模以及增加学习样本来实现,本文提出一种方法,可以在不对特征提取方法、深度学习网络结构、学习样本数量做优化的情况下,仅利用相似汉字之间内在的相似性特性来提高识别正确率,实验结果表明该方法能够有效提高识别正确率。

1 深度学习神经网络的基本结构

用于图像识别的深度学习神经网络一般按照输入层、卷积层、数据采样层、全连接层、输出层这样的基本结构进行设计[15],其中输入层接受的是二维图像数据,为了尽可能减少不必要的干扰因素,输入图像首先应该经过噪声去除、归一化、二值化甚至特征提取等预处理操作。卷积层使用多个卷积核对输入的二维图像数据进行卷积操作,每一个卷积核对应一个或者是一类的汉字特征,卷积之后的结果还是二维图像。为了防止过度拟合,对于尺寸较大的二维图像输出结果还需要进行池化和以一定概率随机断开输入神经元的数据采样操作,这部分操作放在数据采样层进行处理。由于卷积和池化操作的输出仍然是二维图像,因此卷积层和数据采样层可以串联多层,把上一层的输出作为下一层的输入。全连接层的输入是一维向量,因此从最后一层卷积层或者数据采样层的输出图像需要重整为一维向量输入到全连接层中,与卷积层类似,全连接层同样可以添加多层。输出层输出分类结果,由于汉字识别属于多分类问题,因此输出层是一个能实现多分类的分类器,如softmax回归、多分类支持向量机等。

2 粗细粒度深度学习神经网络的设计

2.1 粗细粒度深度学习的基本原理

手写汉字识别是一个多分类问题,采用单层多分类器进行汉字识别的优点在于处理过程简单和规整,在训练阶段,每一个类别都被平等地对待,每一个样本都被不加区分地进行学习;在分类阶段,一个输入样本经多分类器处理后的输出就是最终的分类类别。然而不同的类别之间的差异并不是均匀的,特别是对于汉字来说,不同汉字之间有的差别非常大,有的却很小,因此把大量差别不均匀的不同汉字混合在一起进行训练学习,结果将会是对于特征明显的、与其他汉字差别较大的汉字识别效果会很好,但是对于特征不明显的、容易混淆的汉字的分辩能力会因大规模无差别的学习而被削弱,从而导致把相似的两个或者几个汉字相互错误分类。解决问题的一个方法是,对相近的两个或者几个类别设计专门的小类别分类器,这样一来分类器就可以聚焦在不多的两个或几个类别的差异上,从而可以提高识别率。要将一个待分类汉字样本正确输送到所对应的小分类器进行识别需要分两步走,第一步是使用粗粒度的分类器对待分类样本进行初次分类,如果该汉字样本被错误分类也会以较大的大概率被分类到与它相似的其他汉字类别上,因此可以对汉字集进行分析,找出全部的相似字集,然后对每一个相似字集训练专门的细粒度分类器;第二步根据初次分类的结果确定待分类汉字所对应的相似字集,然后使用相应的细粒度分类器进行最终的分类。由于细粒度分类器的分类正确率更高,所以能够纠正相当多一部分原先通过大规模无差别学习得到的分类器进行分类造成的错误,从而提高总体识别正确率。

2.2 粗细粒度深度学习的设计

2.2.1粗细粒度分类器

基于粗细粒度深度学习的手写汉字识别分类器由粗、细粒度两种深度卷积神经网络结合而成,其中粗粒度卷积神经网络由汉字集的全体训练样本学习得到;细粒度卷积神经网络由各个相似字集训练样本分别学习得到,有多少个相似字集就学习得到多少个细粒度分类器;不在任何一个相似字集中的所有汉字构成一个非相似字集,在该字集中的汉字被认为互不相似,该字集的全部训练样本也学习得到一个非相似字集分类器。

2.2.2识别流程

待识别汉字样本进行识别的时候首先经过粗粒度分类器进行识别,如果分类后的结果被判定为落在某个相似字集内(包括正确识别的情况),则使用相应的细粒度分类器进行二次识别,否则如果不落在任何一个相似字集内,则输入到非相似字集分类器进行二次识别,二次识别后的结果就是该汉字最终的识别结果,识别流程如图1所示。

图1 手写汉字识别流程图

2.2.3 相似字集的确定

两个汉字的相似程度可以通过比较两个汉字向量化之后的距离来确定,为了找到能够量化汉字集内汉字两两之间相似程度的相似度矩阵,相应的计算复杂度是全体汉字个数的平方。另一种确定两个汉字相似程度的方法是利用训练好的分类器对两个汉字的测试样本进行识别,相互错误识别的结果越多也就意味着两个汉字的相似程度越高,以至分类器难以区分;同样对全体汉字测试样本进行识别,识别错误结果的分布即构成了相似度矩阵。如表1所示,水平方向的数值是某个汉字通过训练好的分类器识别为其他汉字的数量,将正方形数字区域沿着“左上-右下”方向的对角线叠加后去除对角线上的数值,剩下的三角区域即可作为衡量汉字两两之间相似程度的三角矩阵。

表1 识别结果分布(每种汉字10个测试样本)

通过一定的算法,可以把互为相似的一系列汉字找到,这些汉字构成一个相似字集,重复这个过程,直到把所有相似字集都找到为止。

2.2.4 识别率提高的条件

一个待识别的汉字样本使用传统分类器进行识别的结果可以分成三种情况,一是正确识别;二是错误识别但识别为相似字集中的某个汉字;三是错误识别并且识别为相似字集外的某个汉字。对于没有相似字的汉字只需要把第二和第三种情况的相似字集改为非相似字集即可。在原分类器的基础上结合细粒度分类器的手写汉字识别方法对上述三种情况的影响是:对于原正确识别的样本依旧被正确识别;原错误识别但识别为相似字集中某个汉字的样本有相当多一部分能够被纠正;原错误识别并且识别为相似字集外某个汉字的样本无法纠正,但也不影响识别率。尽管该方法也可能把原来正确识别的样本变成错误识别,但由于这种可能性较低,基本不会降低第一种情况的识别率,加上对第二种情况纠正的样本数量比纠错数量要多,因此该方法能够有效地提高识别正确率。以下给出识别率能够提高的条件以及提高的数值。

假设使用某分类器对某汉字手写测试样本进行识别的正确率为p1,识别错误但识别为其他(非)相似字集内汉字的错误率为n1,识别错误且不识别为(非)相似字集内汉字的错误率为n2,则

p1+n1+n2=1

(1)

以该分类器作为粗粒度分类器。在待识别汉字所在的相似字集上训练得到的细粒度分类器对该汉字的测试样本进行识别的正确率为p2,则粗细粒度分类器结合之后的最终识别正确率为

(p1+n1)×p2

(2)

由(1)、(2)两式可得

(1-n2)×p2

(3)

令(1-n2) ×p2>p1,可得p2-p1>p2×n2,由此可知,对某汉字识别正确率提高的条件是:细粒度分类器的识别正确率p2要比粗粒度分类器的识别正确率p1大p2×n2。因为p2<1,所以如果p2-p1>n2也可以推出p2-p1>p2×n2。

假设总字集中共有N个不同的汉字,对于这N个不同汉字的测试样本,其中第i个汉字的样本在粗、细粒度分类器(对于无相似字的样本则对应非相似字集分类器)上的识别正确率分别为p1i、p2i,由(3)式可得使用粗细粒度分类器识别的正确率为(1-n2i) ×p2i, 假设不同汉字的测试样本数量都一样,则总的识别正确率提高的百分比为

(4)

(5)

3 实验结果

3.1 实验数据的来源

实验训练及测试数据来源于中科院自动化研究所的脱机手写汉字CASIA-HWDB1.1(DB1.1)数据集[2],DB1.1总共包含GB2312-80标准level-1的3755个汉字,因为本实验需要验证的效果和字集规模大小无关,为了节省实验时间仅选择部分汉字(140个)进行实验,选择的140个汉字为“的一是了我不人在他有这个上们来到时大地为子中你说生国年着就那和要她出也得里后自以会家可下而过天去能对小多然于心学么之都好看起发当没成只如事把还用第样道想作种开美总从无情己面最女但现前些所同日手又行意动方期它头经长儿回位分爱老因很给名法间斯知世什两次使身者被高已亲其进此话常与活正感”。每个汉字有240个训练样本以及60个测试样本,这些训练样本以及测试样本来自300位志愿者的手写汉字。

3.2 深度学习网络的参数

实验使用的工具是Keras[16], Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。

3.2.1 粗粒度深度卷积神经网络

粗粒度分类器设计为依次由输入层、32个3×3大小的卷积核构成的卷积层、2×2大小的池化层、64个3×3大小的卷积核构成的卷积层、2×2大小的池化层、以25%概率随机断开输入神经元的随机采样层、128个神经元构成的全连接层、以50%概率随机断开输入神经元的随机采样层、以softmax作为激活函数的140个神经元构成的全连接输出层所组成,除了输出层以softmax作为激活函数以外,其余所有的卷积层和全连接层均使用relu函数作为激活函数,网络结构及参数如图2所示。

图2 粗粒度深度卷积神经网络

3.2.2 细粒度深度卷积神经网络

细粒度分类器设计为依次由输入层、5×5大小的卷积核构成的三层卷积层(卷积核数量分别为:32、64、64,每个卷积层后面都跟有2×2大小的池化层、以20%概率随机断开输入神经元的随机采样层)、128个神经元构成的全连接层、以50%概率随机断开输入神经元的随机采样层、以softmax作为激活函数的全连接输出层所组成,除了输出层以softmax作为激活函数以外,其余所有的卷积层和全连接层均使用relu函数作为激活函数,网络结构及参数如图3所示。

图3 细粒度深度卷积神经网络

3.3 实验结果

3.3.1 粗粒度分类器的识别率

粗粒度深度卷积神经网络经过多次迭代以及反复精细化调节的训练之后,在测试样本集上的识别正确率稳定在85.8%左右,如图4所示,当继续增加迭代次数以及精细化调节之后已经不能对识别率有进一步的提高了,因此85.8%的识别正确率是在该网络结构下能达到的最高或者接近最高的识别正确率。

图4 识别率随迭代次数增加的变化

3.3.2相似度矩阵以及相似字集

基于粗粒度深度卷积神经网络的结构,对140个汉字总共33600个训练样本的数据集采用五折交叉验证的方式进行训练以及识别,找到识别结果分布矩阵,去掉“左上-右下”对角线上的值之后再把上三角矩阵的值叠加到下三角矩阵,得到了140个汉字的相互错误识别三角矩阵,用图像把三角矩阵显示出来,如图5所示,每一个黑点代表两个汉字之间相互错误识别的数量,颜色越深代表错误识别的数量越多,也就意味着这两个汉字的相似程度越高。

图5 140个汉字的相互错分类分布图

最终在从140个汉字组成的汉字集中找到前18组最相似的字集,分别为:子-了,她-地,下-不,过-这-进,去-会,对-时,看-着-者,从-以,无-天,手-于,头-大-长,回-国,给-经,间-同,知-和-如,世-也,已-己,活-话。

3.3.3 细粒度分类器的识别率

细粒度深度卷积神经网络经过多次迭代以及反复精细化调节的训练之后,在18组相似字集的测试样本集上能够达到的识别正确率分别为:子-了97.5%,她-地90.8%,下-不95.8%,过-这-进96.1%,去-会95.8%,对-时91.7%,看-着-者87.3%,从-以96.7%,无-天96.6%,手-于96.7%,头-大-长98.3%,回-国94.2%,给-经94.9%,间-同96.6%,知-和-如94.5%,世-也95.8%,已-己76.7%,活-话75.8%。

18个相似字集总共40个汉字,余下的100个汉字组成非相似字集,非相似字集分类器选用和粗粒度深度卷积神经网络相同的结构,经过多次迭代以及反复精细化调节的训练之后,在测试样本集上能够达到的识别正确率为90.8%。

3.3.4 联合分类器的识别率

把粗细粒度深度卷积神经网络联合起来进行手写汉字识别,识别正确率由原来的85.8%提高至87.4%,尽管识别率已有了显著提高,但距离传统方法在DB1.1数据集上得到最好结果的92.08%仍有不小差距,这是由于构成联合分类器的粗粒度以及细粒度分类器本身的识别率不高所导致的,接下来要验证粗细粒度深度学习识别方法在基于更高识别率的粗、细粒度分类器上的更好表现。

3.3.5 联合分类器识别率的进一步提高

(1)粗粒度分类器和细粒度分类器保持使用原来的结构,而非相似字集分类器则在原结构基础上加多一层卷积层,从而使得深度神经网络的深度加深,此时的联合分类器的识别率由原来的87.4%提高至90.1%,而相比于粗粒度分类器的85.8%更是提高了不少。

(2)在上述(1)的基础上,粗粒度分类器加多一层卷积层,粗粒度分类器的识别率从85.8%提高至92.3%,已经高于传统识别方法的最高识别率,联合分类器的识别率则提高至92.4%,提升幅度较(1)的情形要小很多,原因在于此时的粗、细粒度分类器的结构已经大致相同,因此要获得比粗粒度分类器高出更多的识别率就需要对细粒度分类器的结构进行进一步的改进,比如增加深度或者使用更多的训练样本,这也意味着更高的学习代价——训练时间更长、需要的计算资源也更多,但基于粗细粒度的深度学习方法较其他方法更有优势的地方在于构成联合分类器的粗、细粒度分类器是互不相干可以独立训练的个体,细粒度分类器只需要在少数的几个类别中训练,即便需要把深度卷积网络的复杂度提高,把训练样本的数量加大,也不会造成过高的时间开销。

4 结论

实验结果表明,基于粗细粒度的深度卷积神经网络用于手写汉字识别的实验结果符合理论预期,能够达到提高识别正确率的目的。

猜你喜欢

细粒度手写识别率
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
我手写我心
抓住身边事吾手写吾心
基于SVM多分类的超分辨图像细粒度分类方法
基于类图像处理与向量化的大数据脚本攻击智能检测
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
基于集成学习的MINIST手写数字识别
提升高速公路MTC二次抓拍车牌识别率方案研究
基于web粒度可配的编辑锁设计
支持细粒度权限控制且可搜索的PHR云服务系统