本发明涉及手写字符识别领域,特别涉及一种应用于中日文字符的识别方法。
背景技术:
为了将手写字符准确翻译成数字字符,各种各样的手写字符识别方法已经被研究和使用,快速、高效和准确的手写字符识别己成为未来的发展方向。人们己经开发出了多种手写字符识别技术,其中两类主要的技术分别为在线识别和离线识别。
在线识别通常是基于手写字符的在线信息(还可被称为在线特征),诸如字符的手写轨迹中的笔划的数量/顺序以及轨迹点等。基于在线信息,可获得一组候选字符作为在线识别结果,用户将从该在线识别结果中选择可能适当的一个字符。在线识别通常较快。但是,当于写字符轨迹模糊、不流畅时,笔划顺序以及笔划数量不能被精确地确定,并且在这样的情况下,在线识别的识别结果通常不精确,甚至是错误的。
离线识别方法通常基于从手写字符的图像获得的离线信息(还可被称为离线特征),诸如字符形状(笔划区段的空间分布以及方向)等,并且从离线候选字符源中选择预定数量的候选字符作为识别结果,该离线候选字符源通常根据要被识别的字符的语言被设定,并且通常包含非常大量的字符。更具体而言,离线识别类似于手写字符与非常大的识别候选字符源中的每个字符的图像匹配,这意味着离线识别将对该源中的每个字符进行选择和处理。
在线识别的优点在于识别速度较快,对字符形状变化具有较好的鲁棒性,但是其收集全局字符模型信息较弱。离线识别的优点在于抗噪性较好,但是其识别速度较慢、对字符形状的变化识别较差。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习是被发现的一种最有效力的识别方法,在各个领域都有突破和应用。
为了提高手写字符的识别准确率,本发明提供了一种新手写字符的识别方法,其包括了将深度学习识别与离线识别、在线识别、语言环境上下文关系识别的手写字符识别方法揉合在一起,互相补短,互取优势。目前国内外没有此类的尝试和研究。
技术实现要素:
本发明提供一种手写字符识别方法,其主要步骤包括以下步骤:
步骤200,手写字符输入,包括在输入装置的输入界面通过手写输入相应的字符;
步骤202,在线识别,包括对输入的字符进行在线识别;
步骤204,将手写输入的字符转化为图像;
步骤206,离线识别,包括对转化的图像进行离线识别;
步骤208,深度学习识别,包括对转化的图像进行深度学习识别;
步骤210,语言环境上下文关系识别,包括对离线识别结果再进行语言环境上下文关系识别;
步骤212,筛选出最佳候选识别集,包括从在线识别、离线识别、语言环境上下文关系识别、深度学习识别的候选集中筛选出最佳候选识别集;
步骤214,识别结果输出,包括根据步骤212的候选识别集进行排序并将识别结果输出,
所述步骤214中,还包括对不同候选集中所识别出的相同的候选字符进行合并后再进行最终排序。
或者所述步骤212还可以为:
通过最小分类误差方法对在线识别结果和离线识别结果进行优化识别形成优选候选识别集;
从在线识别与离线识别的优先识别候选集、语言环境上下文关系识别的候选集、深度学习识别的候选集中筛选出最佳候选识别集。
手写识别的装置可以为计算机、手机、平板、移动设备、工业监控设备等任何具有手写输入端的设备,手写字符识别方法存入手写装置的存储模块中并可以通过CPU运行程序。
在线识别方法:
一种产生用于在线字符识别模式的方法可以包括:对第一字符样本执行各种操作。可以对第一字符样本执行一个或多个预处理操作。例如,可以从该第一字符样本中去除噪声点。对该第一字符样本执行线性尺寸规范化。可以对该第一字符样本执行非线性形态规范化,然后进行对规范化的字符进行特征提取,如可以采用ramner方法,将手写的初始点和终结点进行连线,然后找出在图像中住处与连线距离最远的点,将选出点与初始点和终结点进行连线,然后在以此方法找出最近的点。
线性地MRF多路径转化,包括将字符类型表示的状态进行多路径转化;
将输入字符的特征点与字符类的状态标签进行对比,找出最优的匹配;
形成候选识别集;
所生成的候选识别可被存储在存储器中,例如在任何种类的存储介质上。这些模式可以存储为简单的或复杂的数据结构;例如,在一个实施例中,所生成的模式可以存储在模式数据库中。
离线识别方法:
对转化为字符的图片的字符特征进行归一化,归一化的方法具有多种,优选的采用P2DBMN;
方向特征提取。通过将字符分解为8个不同的方向,然后在每个方向上提取8x8向量;
降低方向特征向量的维度。由于提取后字符的方向特征向量维度较多,为8x8x8,因此提高识速度、降低存储容量,采用了FLDA方法进行降低维度。可以将为一个维度或者多个维度;
将降维后的方向向量与离线数据库中的字符模版进行匹配。可以采用QDF、MQDF2等方法,优选的,采用MQDF2方法实现匹配;
根据匹配的得分形成候选集。
深度学习识别方法主要包括以下步骤:
步骤700,构建多层卷积神经网络;所述多层卷积神经网络包括多个卷积层和全连接层;其输入为字符经过离线后转化为图像,输出为预测的多个字符分类结果;
步骤702,采用误差反向传播算法训练所述多层卷积神经网络,从而得到字符识别模型,其中训练过程中使用的目标函数为输入图像的真实标签与所述字符识别模型预测结果的交叉熵;
步骤704,增加卷积层层数得到新的网络结构,用步骤704得到的模型初始化网络权重;
步骤706,重复步骤702与704,即逐渐增加卷积层层数并训练,直到识别正确率不再提高为止,得到最终的字符识别模型;
步骤708,通过维特比(Viterbi)或DP匹配(DynamicProgrammingMatching)或beamsearch(束搜索)等算法,找出匹配识别路径,求出每个词语对应的分数,后根据词语的分数进行排序;
步骤710,将排序的结果作为候选识别集。
或者另外一种深度识别方法:
步骤800,构建多层卷积神经网络;所述多层卷积神经网络包括多个卷积层和全连接层;其输入为图像,输出为预测的多个字符分类结果;
步骤802,采用误差反向传播算法训练所述多层卷积神经网络,从而得到字符识别模型,其中训练过程中使用的目标函数为输入图像的真实标签与所述字符识别模型预测结果的交叉熵;
步骤804,将步骤800中建立的多层卷积神经网络的输出层节点修改为2,并利用训练好的所述字符识别模型的权重初始化修改后的多层卷积神经网络的权重;
步骤806,反向传播算法训练得到字符-非字符分类器。利用字符-非字符数据集对修改后的多层卷积神经网络进行训练,得到字符-非字符二分类模型;
步骤808,将所述字符-非字符二分类模型中的所有全连接层修改成卷积层;
步骤808,利用步骤806中修改后的所述字符-非字符二分类模型对测试图像采用多尺度扫描窗口进行测试,得到文字区域的概率图,并对所述概率图进行非极大值抑制得到。
步骤810,形成候选识别集。
深度学习的方法比较多,除了采用上述方法还可以采用其它现有技术的方法。
语言环境上下文识别:
字符串识别不仅应用于字符识别,而且还需要语言上下文处理。如图9a,通过离线识别或者在线识别的结果,每个待识别的字符串都有一系列的候选字符并且每种字符都具有相应的分数。每一个候选字符识别网格都代表所有字符类型的组合的一种。语言上下文方法用来评估从字符到字符之间的组合。通过维比特(Viterbi)算法,可以搜索出具有最大分数的最优路径,也就是最终的识别结果,形成候选识别集。
最终识别结果:
将在线识别、离线识别方法相结合,根据离线识别、在线识别所占的权重,计算出联合识别的结果的置信度,如可以通过采用最小分类误差(MCE,MinimumClassificationError)方法,优化权重的参数,形成候选识别集。
在在线识别与离线识别的形成的候选集、语言环境上下文识别候选集和深度学习识别候选集的相结合,通过设置相应的权重参数,筛选出与手写输入字符匹配结果并将结果根据打分进行排序,将相同的识别结果进行合并最后将排序的结果进行输出。
或者将在线识别候选集、离线识别的候选集、语言环境上下文识别候选集、深度学习识别候选集的相结合,通过设置相应的权重参数,筛选出与手写输入字符匹配结果并将结果根据打分进行排序,将相同的识别结果进行合并最后将排序的结果进行输出。
附图说明
图1执行手写识别的装置,主要包括手写程序、显示装置、手写输入、处理器。
图2手写识别流程,综合在线识别、离线识别、语言环境上文识别和深度学习识别各个阶段的一个示意图。
图3在线识别流程,涉及在线识别流程各个阶段的一个示意图。
图4在线识别流程步骤图,(a)特征点提取,(b)线性的马尔科夫随机场(MRF)链,(c),将位点S与标签L进行比较,获得识别结果。
图5离线识别流程图,涉及离线识别流程各个阶段的一个示意图。
图6字符特征向量的分解示意图,描述了根据本发明的一个实施例对字符特征向量的分解和提取。
图7深度学习识别流程图,涉及深度学习识别流程各个阶段的一个示意图。
图8深度学习识别流程图,涉及深度学习识别流程各个阶段的另一个示意图。
图9语言环境上下文关系方法示意图,(a)候选字符的评分网格,(b)概率评分。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。
实施例1.
图1是依据一个实施例,执行手写识别的装置的系统图。该装置可以包括手写输入模块,可以用电子笔、人手等进行书写。显示装置,例如屏幕102,其被配置为接收手写输入的字符,例如,在线手写字符。将手写输入字符通过手写装置输入到输入到手写识别程序104,该识别程序可以采用离线识别、在线识别、深度学习识别或者语言环境上下文识别的方式的一种或者几种的模式来对手写字符进行识别。该手写识别程序104可以在处理器106上运行例如来自存储在存储介质108上的程序指令。该写识别程序104也可以利用匹配数据库110和语境上下文关系数据库112进行匹配识别。该手写识别程序104可以为在线手写字符返回结果114,比如对应于该在线手写字符的数字字符。该结果114(例如,该数字字符)随后可以显示在屏幕200上;例如,产生的数字字符的图像可以代替该数字字符所基于的在线手写字符的图像。
所生成的候选识别集可被存储在存储器中,例如在任何种类的存储介质上。这些模式可以存储为简单的或复杂的数据结构;例如,在一个实施例中,所生成的模式可以存储在模式数据库中。
识别程序可以采用离线识别、在线识别、深度学习识别或者语言环境上下文识别的方式的一种或者几种,参见图2。
图2为识别识别所采用的方法,其主要步骤包括:
所述步骤212可以替换为:
所述步骤202为对输入的字符进行在线识别方法,参见图3,其主要包括以下步骤:
步骤300,预处理。对第一字符样本执行各种操作,可以对第一字符样本执行一个或多个预处理操作。
步骤302,对预处理后的字符样本去除噪声点。可以从该第一字符样本中去除噪声点,噪声点可包括具有一个、两个或少量点的笔。移除噪声笔划和噪声点可以减少来自用户的疏忽或意外输入的干扰。
步骤304,规范化字符至特定的尺寸。可以对该第一字符样本执行非线性形态规范化,字符可以被规范化到特定的尺度,这种规范化可以利用保留纵横比的线性映射。也就是说,字符的尺寸可以被重新调整为标准的图片尺寸,而不改变原始的纵横比。字符映射到的特定尺度可以例如是64x64的位图,别的尺度也是可以的。
步骤306,对规范化的字符进行特征提取,如可以采用ramner方法,将手写的初始点和终结点进行连线,然后找出在图像中与连线距离最远的点,如图4a中的a图,将选出点与初始点和终结点进行连线,如图4a中的b图,然后在以此方法找出最近的点,如图4a所示,重复上述步骤直至获取所需的特征点数,如图4a中的有“开始”至“结束”所示。
步骤308,线性地MRF多路径转化,括将字符类型表示的状态进行多路径转化。具体的S={s1,s2,…,sl}作为输入字符的位点,字符类型C的状态作为标签L={l1,l2,…,ll}。参见图4b,采用了直线MRF(MarkovRandomField)链作为每一个字符类型,每个字符类型都有一个状态,每个状态都有3种转化形式,如图4b中l1,l2,l3,l4,其中每个带有箭头的线代表一种转化形式,通过MRF找出一系列的路径候选。
步骤310,将MRF找出的字符类状态标签与输入字符的特征的位点进行对比,获得识别结果。具体的可以通过Viterbi算法找出匹配路径。具体的,设S代表输入字符的特征点的位点,L代表采用马尔科夫随机场(MRF)方法算出的候选路径。F代表S与L的匹配程度,设F={s1=li,s2=lj,…,sl=lk},通过求出S与L的联合概率密度,F数值越大,匹配程度越好,如图4c所示,将将位点S与标签L进行比较,获得识别结果。
步骤312,形成候选识别集。
所述步骤206为对输入的字符进行离线识别方法,参见图5,其主要包括以下步骤:
步骤502,字符特征归一化。对转化为字符的图片的字符特征进行归一化,归一化的方法具有多种,优选的采用伪二维双矩正规化(pseudo2Dbi-momentnormalization,P2DBMN);
步骤506,降低方向特征向量的维度。由于提取后字符的方向特征向量维度较多,每个字符为具有512尺寸的特征向量,因此为了提高识速度、降低存储容量,采用了FLDA方法进行降低维度,将维度降低为一个维度或者几个维度。具体的,假设字符类型C表示ω1,ω2,ω3,……,ωc。Ni为N的训练样本空间的一个样本。X为具有n维向量的第j个样本。每个字符的平均矢量和所有字符的平均矢量可以分别表示字符类型之间的和字符内部的分散矩阵分别用Sb和Sw表示,可以分别定义为
其降为矩阵Wopt可以写为:
通过方程(3)将方向特征向量从n为降低为m维(n>m>0)
步骤508,将降维后的方向向量与离线数据库中的字符模版进行匹配。可以采用QDF、MQDF、MQDF2等方法,优选的,采用MQDF2方法实现匹配;
深度学习是被发现的一种最有效力的识别方法,在各个领域都有突破和应用。深度学习用于文字识别也不算新,已有人在用。本方法,用深度学习和既存的文字识别方法揉合在一起,互相补短,互取优势。
所述步骤208为对转成图像的字符进行深度学习识别方法,参见图7,其主要包括以下步骤:
步骤704,增加卷积层层数得到新的网络结构,用步骤704得到的模型初始化网络权重。
步骤706,重复步骤702与704,即逐渐增加卷积层层数并训练,直到识别正确率不再提高为止,得到最终的字符识别模型。
步骤708,通过维特比(Viterbi)或DP匹配(DynamicProgrammingMatching)或beamsearch(束搜索)等算法,找出匹配识别路径,求出每个词语对应的分数,后根据词语的分数进行排序。
另一深度学习识别方法的实施例2为:
参见图8,其主要包括以下步骤:
步骤800,构建多层卷积神经网络,包括包括定义构成网络的层数、卷积窗大小和节点数等。一般来说,网络越深效果越好,但同时计算量增加。如包含2层卷积层+3层全连接层,输入为28×28减去均值的灰度图像的像素值,输出层的每个输出节点代表一类字符,对于英文来说共62类(26个大写字母+26个小写字母+10个数字);所述多层卷积神经网络包括多个卷积层和全连接层;其输入为图像,输出为预测的多个字符分类结果;
步骤808,将所述字符-非字符二分类模型中的所有全连接层修改成卷积层,包括,二分类模型训练好后,将所述二分类模型中的全连接层改为卷积层,但权重值保持不变。这是因为训练时固定了输入为28×28的图像,而测试时的图像大小不固定。直接用扫描窗口法对测试图像的每一个28×28的图像块进行测试,会有很多重叠部分,浪费了计算量。利用卷积操作的平移不变性,将全连接层改为卷积层,可以对任意大小的图像进行一次测试,大大节省了计算量;
步骤808,利用步骤806中修改后的所述字符-非字符二分类模型对测试图像采用多尺度扫描窗口进行测试,得到文字区域的概率图,并对所述概率图进行非极大值抑制得到;
所述步骤210为对离线识别结果进行语言环境上下文关系识别,参见图9。字符串识别不仅应用于字符识别,而且还需要根据语言环境对上下文进行处理。如图9(a),包括候选字符和相应字符的评分,输入仲字,显示仲为900分,件为874分等。通过离线识别或者在线识别的结果,每个待识别的字符串都有一系列的候选字符并且每种字符都具有相应的分数。每一个候选字符识别网格都代表所有字符类型的组合的一种。语言上下文方法用来评估从字符到字符之间的组合。通过Viterbi算法,可以搜索出具有最大分数的最优路径,也就是最终的识别结果。
语言内容处理方法可大致分为两类:使用单词的组合和词组的组合。如图9(b)所示,语言环境上下文关系内容处理估计概率P(C)包括一序列的字符组合{C1,C2,...}或一序列词组的{W1,W2,...}。使用字符组合的方法评估每个候选字符的组合的概率。我们可以只用一个字符(单gram)、两个字符(2-gram)、三个字符(3-gram)、一直到n个字符一般称为n-gram。使用词组组合的方法首先根据形态学分析将字符串分成词组,然后评估每个候选词组的组合概率。我们也可以只用一个词组(单字)、两个词组,三个词组和n个词组的出现概率。有限的词汇的识别,如地址,人名,日期和部门等是字符串识别是非常重要。
使用字符语言环境上下文关系的评估概率公式为:
P(C)=P(c1)P(c2|c1)P(c3|c2)P(c4|c3)P(c5|c4)P(c6|c5)式(4)
式中,C1,C2,C3,C4,C5,C5分别表示候选字符集相应的评分,P(C1),P(C2│C1),P(C3│C2),P(C4│C3),P(C5│C4),P(C6│C5)分别为对应的条件概率,参见图9(b)。
使用词组语言环境上下文关系的评估概率公式为:
P(C)=P(w1)P(w2|w1)P(w3|w2)式(5)
式中,W1,W2,W3,分别表示候选词组相应的评分,P(W1),P(W2│W1),P(W3│W2)分别为对应词组的条件概率,参见图9(b)。
将离线识别的候选字符与语言环境上下文关系数据库进行匹配,根据上式方程(4)和(5)计算出相应的置信度,形成候选识别集。
所述步骤212,筛选最佳候选识别集,包括在线识别、离线识别、语言环境上下文关系识别、深度学习识别所形成的四个候选集中筛选出最佳的候选集。
首先将在线识别与离线识别方法相结合,根据离线识别、在线识别所占的权重,计算出联合识别结果的置信度。通过采用MCE(MinimumClassificationError)方法,优化权重的参数(参见公式6),形成候选结果并输出。
其中,表示经过在线识别和离线识别后的手写字符的评分,和分别表示线识别和离线识别方法对手写字符的评分,λ1和λ2分别表示在线识别和离线识别所占的权重参数。
然后依据在线识别与离线识别结果形成的候选集、语言环境上下文识别候选集和深度学习识别候选集的相结合,通过设置相应的权重参数,筛选出与手写输入字符匹配结果并将结果根据打分进行排序,将不同候选集中所识别出的相同的候选字符进行合并后在进行最终排序将最终排序后的结果进行输出。
不同候选集中所识别出的相同的候选字符进行合并,具体为是指对不同识别方法的产生的候选集,如果多个识别结果的候选集中出现相同的字符,那么将相同的字符进行合并,取评分最大的参与排序,如表1所示:
表1识别候选集表
假设每种识别方法对每个输入字符选取三个不同的字符作为候选集,从表1可以看出,“在”出现了四次,因此需要“在”进行合并,由于每种模式对应“在”的评分不相同,因此我们取评分最大参与其余候选集的排序。“龙”字在表1中不同的候选集中并没有相同的识别字符,因此无须合并而直接参与排序。
另一种实施例3为:
将在线识别的候选集、离线识别的候选集、语言环境上下文识别的候选集、深度学习识别的候选集相结合,通过设置相应的权重参数,筛选出与手写输入字符匹配结果并将结果根据打分进行排序,将不同候选集中所识别出的相同的候选字符进行合并后在进行最终排序将最终排序后的结果进行输出
此处的权重参数可以为选取候选字符的个数,如可以从四种不同模式中各选4个参与排序或者个数不等的候选字符。
或权重参数可以按照一定的权重比例,将权重参数乘以不同候选集中的候选字符的评分,最后计算出相应的评分。权重参数可以根据经验确定,也可以根据所输语言种类进行调整权重参数,还可以根据其它方法确定。
采用了intel的CPU型号为Intel(R)Xeom(R)CPUW5590@3.36GHz3.36GHz(2processers),12GB的内存。对于日本的识别,采用了VQ(vectorquantization(VQ)techniques)方法对识别内容进行了压缩,对于中的日本,并未使用VQ压缩方法。其识别的结果为表2所示。