一种基于Self-Attention的离线数学公式符号识别方法与流程

文档序号:20755714发布日期:2020-05-15 17:24阅读:2136来源:国知局
一种基于Self-Attention的离线数学公式符号识别方法与流程

本发明涉及计算机领域中的图像识别领域,尤其涉及一种基于self-attention的离线数学公式符号识别方法。



背景技术:

现存科技文献中的大量数学公式,保存为不容易被再次利用的形式(例如,各种公式手稿的图片),导致了很多繁杂且容易出错的重复输入工作,为了整合数学公式资源,有必要建立一种有效的机制把现存的数学公式转化成一种通用的形式,这样既可以节省重复输入数学公式的繁琐人工劳动,也能为数学公式的搜索与处理提供进一步的可能。在输入方面,纸质文档和电子文档一般可以分别通过扫描和格式转换方法转换为图片,不失一般性,通常考虑识别以图片为载体的数学公式。在输出方面,识别结果应为简单、规范且通用的数学公式表示。

ocr(opticalcharacterrecognition,光学符号识别)技术,是通过扫描等光学方式将各种报刊、书籍、文稿及其他印刷品的文字进行输入,再利用文字识别技术将图像信息转化成可以使用的计算机输入技术。ocr技术可以广泛地运用于银行票据、大量文字资料、档案卷宗、文案的录入、处理和检索等领域。

数学公式识别一直是ocr中的一项重要研究内容,目的是将印刷体数学公式转换成可编辑的形式,进而实现数学公式的重用,减少工作者的编辑负担。然而,目前ocr虽然在一般文字识别上达到了较高的水平,但对数学公式的识别效果仍然不好,其主要原因在于数学公式本身结构复杂,符号也有多种变化。例如,数学表达式有上下结构、半包围结构等,公式中不仅包含阿拉伯数字、大小写英文字母和希腊字母,还包括根式、分式、上下标、极限以及矩阵等许多特殊的符号。传统的数学符号识别多采用人工提取符号特征方法,这种方法存在着以下缺点:特征提取不够准确,不能将符号很好的分类;每一次提取的特征往往只能适用于一种字体,针对性较弱,这使得能测试正确的样本的范围小,鲁棒性较差。因此迫切需要一种从多样本的学习中能够实现对图像的高层次抽象,得到数学符号更本质的形状特征,克服人为设计特征造成的不完备性,从而进一步提高公式符号识别率的方法。此外,由于各种原因,数学公式中难免存在粘连字符,粘连符号切分的正确性直接影响公式符号的正确识别。

数学公式作为一种符号化的信息表达方式,在某种角度下也可以看做成一种文字。目前常见的数学公式识别主要有两类:(1)针对印刷体的数学公式识别系统;(2)针对手写体的数学公式识别系统。印刷体数学公式识别系统是把获取到的印刷文档中的数学公式图像进行识别,转换为电子文档中的公式格式;而手写体数学公式识别系统则根据获取到的输入数据分为在线手写体数学公式识别系统和离线手写体数学公式识别系统。在线的识别系统可以获取输入公式的笔画信息,并基于这些笔画信息实时地识别出输入的符号。而离线识别的输入数据则是书写完成后的数学公式图像,旨在对已经完成输入的公式的图像进行识别。

传统的数学公式识别系统包括以下四个主要技术环节:

公式分割,即从输入的公式数据得到各个字符数据的过程,离线形式的输入数据是公式图像,其分割就是把公式图像分成若干个只包含一个字符的子图像,而在线形式的输入数据是笔画序列,其分割就是把属于同一字符的笔画进行组合的过程。

符号识别,即从字符数据中提取特征,并完成识别的结果。而传统的数字符号的识别较少使用结构方法,多使用统计方法。

结构分析,即根据字符的类别和字符间的位置关系对字符的组合进行几何和语义约束,最终将所有字符进行组合,重构出公式的过程。具体的方法有通过对符号分类后分别应用相应的合并规则、递归地向两轴投影进行切分、为符号间可能的连接赋予权值然后应用最小生成树算法、估计基线结构等等。

文本输出,即为将结构分析后的数学公式以可编辑的形式进行显示。

目前主要有以下三种方法:

mathml(mathematicalmarkuplanguage),是基于xml语言的数学标记语言。优点是代码精简、传输速度快,但编辑方法非常繁琐。目前主要应用于互联网中数学公式的编辑。

wordeq是实现复杂公式输入的word内部域。可以使用任意字符串和表达式作为eq域中的操作数,但语法较为复杂。

latex非常适用于生成高印刷质量的科技和数学类文档,不仅因为其符号库包括了大小写英文字母、阿拉伯数字、小写希腊字母、关系运算符和逻辑运算符等,也因为能够清晰地表示复杂的数学公式,因此也被广泛地应用于表达数学公式。

由于数学公式本身复杂的二维结构,对公式内容的分割和解析本身就是具有挑战性的问题。而由于手写体的随意性,与印刷体数学字符相比,手写体数学字符粘连情况严重,不同字符大小不一,同一字符形状各异,这给离线手写体数学公式的分割和识别造成了诸多困难。与在线数据相比,离线数据缺少时间序列的信息,在公式的分割和识别方面也更具有挑战性。传统的公式识别方式通过公式分割、字符识别和公式分析三个阶段的处理最终完成对公式整体的识别。然而这种传统的识别方法的容错率低,三个阶段中有一个阶段出现问题就会造成识别结果的错误;同时把问题分为三个子问题再依此求解子问题最优解的方法容易出现最终求出的解非问题最优解的情况。

深度学习属于机器学习研究中的一个创新领域,能通过模仿人脑来解释图像、声音和文本等数据,其优点是能够克服传统符号识别方法中手工提取特征的不足,通过构建具有多个隐含层的深度网络模型并使用大量的训练数据来学习得到更有用的特征,进而提升符号识别的准确性,其优势已在手写数字识别等应用中得到证实。而目前解决数学公式符号识别的主流深度方法主要分为三步:

采用以卷积神经网络为基础的多层神经网络提取公式图像的视觉特征。

采用各种处理方式在视觉特征上提取对数学公式符号识别更精细有效的特征。

采用以循环神经网络为基础的多层神经网络,利用视觉注意力机制的方法,对(2)中得到的特征进一步解码以生成对应的latex格式的代码。

然而,上述的方法在效率和识别准确率上仍然存在着较大的缺陷:在效率方面,以传统的循环神经网络为代表的多层神经网络在训练时效率普遍较低。而在识别准确率上,当识别和训练集不同分布的数据时,识别准确率会下降很多,整体的泛化性能较弱。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种基于self-attention的离线数学公式识别方法。本发明采用了self-attention机制来进行latex的生成,在提高了数学公式识别效率的同时,也极大地提高了数学公式识别的准确率和泛化性能。

本发明的目的能够通过以下技术方案实现:

一种基于self-attention的离线数学公式识别方法,其包括步骤如下:

对输入的数学公式图像进行预处理;

编码阶段:

通过卷积神经网络对数学公式图像进行特征提取;

将提取的特征的隐向量转换为多头的自注意力机制输入所需的维度;

利用基于多头的自注意力机制对提取的特征的隐向量进行编码,获得具有上下文信息的特征结果向量;

解码阶段:

依次输入字符到嵌入层,获得字符相应的嵌入向量;

将编码阶段获得的特征结果向量以及获得的嵌入向量输入到由掩式多头自注意力层、多头注意力层和全连接层组成的网络块,获取输入字符的结果向量;

利用softmax函数获取输入字符的结果向量对应的的概率向量,找出概率向量中最大概率值索引对应的字符作为生成的字符;

循环解码阶段,获得数学公式图像对应的latex字符序列。

自注意力机制用于进一步捕捉图像中重要的图像语义信息的,即通过计算self-attention,可以得到图像各个区域之间的特征依赖关系,捕获数学公式内部的字符级别的结构特征。

在此基础上,引入多头的注意力机制(multiheadattention),其本质是进行多次self-attention计算,计算不同侧重角度下的图像各个区域特征之间的依赖关系,每一次计算使用的映射矩阵不同(一个head计算一次),最后将每一次计算结果的向量进行拼接,作为最终multihead计算结果。

可以看出,multiheadattention和单头的self-attention相比,可以学习多个映射器,进而从不同维度,不同子空间来表征特征,最后通过将多个特征进行拼接进行特征融合,可以使得模型能够进一步提高特征表达能力。

解码阶段即是生成latex字符序列的过程,值得注意的是,字符序列并非是一次性输出完成的,而是每一个时间步输出一个字符,而且每个时间步生成的字符不仅一定程度上依靠于编码阶段生成的图像信息,也依赖于前一时刻的生成的字符信息(第一个时间步需要生成的字符依赖于预定义好的默认的初始字符<start>),经过若干个时间步后如果模型输出末尾字符<end>则生成完毕。

注意到在解码阶段有两种注意力机制模块,分别是掩式多头自注意力模块(maskedmultiheadattention)和多头自注意力模块(multiheadattention),两种多头自注意力模块的区别在于:对于一段输入的序列,普通的多头自注意力模块对于输入序列中的每一个符号都会并行输出对应的隐向量,这些隐向量都包含了该字符前后所有字符的信息。而掩式的多头自注意力模块并非一次性并行输出所有字符的隐向量,在输出某个字符的隐向量时,只会考虑到该字符前面已经生成的字符的信息,考虑不到该字符后续的字符序列的信息(后续的字符还未生成),因此掩式的多头自注意力模块是一个时间步只能输出该时间步下已知的输入的字符序列的隐向量。

具体地,在每一个时间步,掩式多头自注意力模块先根据已经生成的字符序列输出其隐向量作为后续的多头自注意力模块的一部分输入,而在编码阶段生成的图像特征向量作为该模块的另一部分输入,经过后续的全连接层和分类器层即可生成该时间步输出的字符,再将该字符作为下一个时间步的输入,如此循环往复,直到输出的字符为<end>为止。

本发明相较于现有技术,具有以下的有益效果:

本发明利用深度学习的encoder-decoder这样的端到端的架构处理流程,使用cnn+self-attention作为encoder对图像内容进行编码,使用两种self-attention作为decoder的核心组件对编码的特征进行解码,端到端地实现了数学公式图像的识别问题以及latex代码序列生成的问题;与传统的基于lstm的深度学习架构相比,仅仅利用了注意力机制,不使用任何循环神经网络结构,避免了lstm的长距离依赖的问题,增加了容错率,也进一步提高了识别的准确率与泛化性能。

附图说明

图1为本发明实施例提供的一种离线数学公式识别方法的框架示意图;

图2为本发明实施例为本发明实施例提供的卷积神经网络的结构示意图;

图3为本发明实施例中提供的多头自注意力层的结构示意图。

图4为本发明实施例提供的self-attention自注意力机制示意图;

图5为本发明实施例提供的数学公式图像示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例

卷积神经网络是一种多层的监督学习神经网络,网络中使用了局部感知区域、共享权值和空间的降采样等技术,卷积神经网络提取到的特征对输入信号的平移、缩放、仿射变换等变形具有很强的鲁棒性,在图像分类领域相比传统的人工设计的特征进行分类有着很大的进步。卷积神经网络一般由卷积层、池化层、激活层和全连接层组成,卷积神经网络中的每层是由一个或多个特征图组成,通过卷积层和最大池化层对原图像进行特征提取,特征图分辨率逐渐降低,同时提取的特征图数目逐渐增多,以检测更多的特征信息,并使特征具有全局性。一般的卷积神经网络后几层为传统的全连接层,将卷积层或最大池化层输出的数据进行非线性映射,从而得到最终的图像特征,并送入输出层完成分类和识别。

在本发明实施例中,我们使用了多层的卷积神经网络resnet,其结构的具体示意图如图2所示,其包含了6个卷积层,每一层的卷积核的大小为3×3,步长为1,填充尺寸为1,每层的通道(channel)数分别为64,128,256,256,512,512,之所以采用这些通道数目,一部分原因是遵循默认的resnet的设置,另一部分原因是这样做能够使得网络深度层数增加时也能够捕捉到更加多样性的特征。

如图1所示为一种基于self-attention的离线数学公式符号识别方法的流程图,所述通过使用深度学习中编码-解码器(encoder-decoder)方式,将输入的数学公式图像进行编码再解码为latex文本,从而端到端地完成了对离线数学公式的识别,使得通过计算机也可以自动识别各种手稿笔记、科技文献等文档图像中的数学公式。接下来我们将使用具体的例子来介绍整个模型的处理流程:

1、对输入的数学公式图像进行预处理:

本实施例中输入数据为单张手写体数学公式图像,如图5所示,根据输入图像的大小进行预处理:

对于高度大于150的图像本系统首先对其进行等比例的缩小,将其高度固定为150;对于缩小后宽度不大于1200的输入图像通过扩展的方式将图像宽度取不超过150,300,450,600,750,900,1050和1200几个等级中最近的数值,如输入图像大小(高度×宽度)为120×469则其近似等比例地放大后的图像宽度大小为150×600;对于缩小后宽度小于1200的图像,需要将该图像进行等比例的缩小,即将其宽度固定为1200,如输入图像大小(高度×宽度)为140×1600,则近似等比例地缩小后的图像大小为105×1200。

2、编码阶段:

如图5所示的数学公式图像,设其尺寸为h×w。

(2-1)通过卷积神经网络对数学公式图像进行特征提取,所述卷积神经网络结构如图2所示。

本实施例中尺寸为h×w的数学公式图像经过cnn模块后生成一个尺寸为h′×w′×c的特征图(featuremap),其中c为cnn中最后一层卷积层的通道数,因此对于特征图中每一个h′×w′的区域都有一个隐向量

(2-2)将提取的特征的隐向量转换为多头的自注意力机制输入所需的维度。

本发明为了使cnn模块输出的隐向量的维度能够和多头自注意力机制的输入维度相对应,因此在cnn模块后接上线性层和relu激活函数层,将vi从维度c变换到维度dmodel,其中维度dmodel为编码阶段多头自注意力层输入向量的维度。

(2-3)利用基于多头的自注意力机制对提取的特征的隐向量进行编码,获得具有上下文信息的特征结果向量。

为了增强特征表示能力,本发明中编码阶段中的一个网络块,由一个多头自注意力层和全连接层组成,整个编码器栈式堆叠了n个块,n根据具体情况决定,在本实施例中,n=4。每个网络块中的多头自注意力层的输入向量的维度dmodel=h×dk,其中dk为每个单头自注意力层的维度,h表示多头自注意力层的头的数目。通过将输入的隐向量分解为h个部分,则每个部分的输入向量v的维度为dk。如图4所示为self-attention自注意力机制示意图。

每个部分的输入向量v都有对应的查询向量qe(queries)、键向量ke(keys)和值向量ve(values),这三个向量都是用来计算attention的值所要用到的中间向量,通过每个部分的输入向量的qe向量和对应的ke向量,计算softmax函数后的值,作为每个部分的输入向量与其他向量的相似度,再把相似度的值与其他向量的ve向量进行加权求和,即可得到每一个head的输出。

因此具有上下文信息的特征结果向量的具体计算方法为:

上面所述的qe、ke、ve向量需要通过输入向量与三个不同的映射矩阵wq,wk,wv相乘得到,具体计算公式如下:

qe=qinput·wq,ke=kinput·wk,ve=vinput·wv

其中,是对应查询向量q(queries)、键向量k(keys)、值向量v(values)的权重矩阵。

并且对于每个输入向量有:v=qinput=kinput=vinput

通过查询向量qe和键向量ke和softmax函数,得到注意力权重aq,k,计算方式如下:

其中,τ代表了缩放因子,dlen表示键向量的维度,dattn=dfeat/h代表用来计算注意力的新的特征的维度。在本实施例中,通过多次调参实验,我们设置n=4,h=8,dfeat=512,dattn=64。

如图3所示为多头注意力层的结构示意图。对于每一个head,有将h个head拼接起来,得到:

multihead=concat(head1,…,headh)wo

其中,为后一层全连接层的权重矩阵,concat代表向量的拼接操作。以上即为一个多头自注意力层和全连接层后的结果。在此基础上,再堆叠n-1个这样的网络块,即可得到最终的结果向量。

3、解码阶段:

解码阶段即为按时间步生成latex字符的阶段,具体步骤如下:

(3-1)依次输入字符到嵌入层(embeddinglayer),获得字符相应的嵌入向量。

在初始时间步时,输入嵌入层的是字符<start>,经过嵌入层将得到已经输入的字符相应的嵌入向量。

(3-2)将编码阶段获得的特征结果向量以及获得的嵌入向量输入到解码阶段的网络块,获取输入字符的结果向量。

在本发明中,整个解码阶段由n个网络块栈式堆叠而成,每个网络块由掩式多头自注意力层、多头注意力层、全连接层拼接而成。在掩式多头自注意力层,与之前普通的多头自注意力层不同的仅仅是其输入并非一次性输入完成,而是需要一个循环往复的过程,每个时间步的输入序列都是在上一个时间步输入序列的后面拼上一个该时间步的输入字符后的序列(也是上一个时间步输出的字符)。

下面选取其中一个时间步介绍解码阶段的整个流程:

(3-2-1)将嵌入向量的隐向量进行分解,计算掩式多头自注意力层的输出向量;

通过将解码阶段的嵌入表示层后输出的隐向量分解为h个部分,则每个部分的输入向量v′的维度为dk。每个部分的输入向量v′都有对应的查询向量qd(queries)、键向量kd(keys)和值向量vd(values),这三个向量都是用来计算attention的值所要用到的中间向量,计算公式为:

qd=qinput′·wq′,kd=kinput′·wk′,vd=vinput′·wv′

其中,是对应查询向量qd(queries)、键向量kd(keys)、值向量vd(values)的权重矩阵。

并且对于每个输入向量有:v′=qinput′=kinput′=vinput′

通过查询向量qd和键向量kd和softmax函数,得到注意力权重计算方式如下:

其中,τ代表了缩放因子,dlen表示键向量的维度,dattn=dfeat/h代表用来计算注意力的新的特征的维度。跟编码阶段保持一致,我们设置h=8,dfeat=512,dattn=64。

如图3,对于每一个head,有将h个head拼接起来,得到:

multihead=concat(head1,…,headh)wo

其中,为后一层全连接层的权重矩阵,concat代表向量的拼接操作。

(3-2-2)根据掩式自注意力层的输出向量以及编码阶段的输出向量,获取当前时间步的输入字符的结果向量;

在得到了掩式多头自注意力层后的输出之后,这里多头自注意力层的输入分别为编码阶段的ke、ve和步骤(3-2-1)阶段得到的qd,通过查询向量qd和键向量ke和softmax函数,得到注意力权重计算方式如下:

其中,τ代表了缩放因子,dlen表示键向量的维度,dattn=dfeat/h代表用来计算注意力的新的特征的维度。跟编码阶段保持一致,本实施例中设置h=8,dfeat=512,dattn=64。

如图3,对于每一个head,有将h个head拼接起来,得到:

multihead=concat(head1,…,headh)wo

其中,为后一层全连接层的权重矩阵,concat代表向量的拼接操作。

(3-2-3)将步骤(3-2-1)和(3-2-2)的网络结构看成一个网络块的操作,再重复上述网络块的操作n-1次即可得到下一步softmax层的输入向量。

(3-3)利用softmax函数获取输入字符的结果向量对应的的概率向量,找出概率向量中最大概率值索引对应的字符作为生成的字符。

假定所有字符的总表vocab的长度为n,将步骤(3-2)得到的结果向量输入到softmax函数后,即可得到一个维度为n的概率向量pvocab=p1,…,pn,其中每一维的值代表该时间步下输出的字符是总表中对应索引(index)对应的字符的概率。找出概率向量中概率值最大的索引,即可得到该时间步生成的字符。

(3-4)将步骤(3-3)生成的字符作为下一个时间步的输入,循环步骤(3-1)-(3-3),直到生成的字符为<end>为止。此时即可得到本具体实施例中数学公式图片对应的latex字符序列为d\mu=\frac{d^{2}xdz}{z^{3}}。

实验环境如下:

cpu:intel(r)xeon(r)cpue5-2620v4@2.10ghz

gpu:nvidiatitanx(pascal)

内存:16gb

操作系统:ubuntu16.04

需要说明的是,上述实验中所涉及的尺寸大小、特征维度、神经元数量、字符串长度的具体数值仅为举例说明并非构成限制,在实际应用中尺寸大小可以做适应性调整。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例可以通过软件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,上述实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1