【场景文本检测识别相关技术基础综述7600字】_第1页
【场景文本检测识别相关技术基础综述7600字】_第2页
【场景文本检测识别相关技术基础综述7600字】_第3页
【场景文本检测识别相关技术基础综述7600字】_第4页
【场景文本检测识别相关技术基础综述7600字】_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

场景文本检测识别相关技术基础综述目录TOC\o"1-3"\h\u32154场景文本检测识别相关技术基础综述 136391.1文本检测识别流程 276861.2神经网络及深度学习理论 3228081.1.1卷积层 366711.1.2池化层 4111531.1.3常用的激活函数 5146031.1.4反向传播 8197311.3常用循环神经网络 951901.3.1RNN网络 9191271.3.2LSTM网络 103751.3.3Seq2Seq 1252311.4常用网络模型训练技巧 1396161.4.1权值初始化 1312861.4.3L1/L2正则化 1569811.4.4Dropout 16近年间,随着人工智能和计算机视觉的飞速发展与不断崛起,深度神经网络被应用在各个场景,如目标检测、人脸识别、医疗图像分析等,深度神经网络可以很好的理解人类不能够理解的深层次特征,进而通过不断训练学习到深度语义特征并进行预测分析,如今起源于图像分类、检测、语义分割等视觉处理任务的各个基础网络,纷纷被征用来提取自然场景中图像中文字区域的特征向量,可以更加深层次的提取到文本的语义信息和位置信息。本章首先对文本检测与识别的流程进行介绍,分析基于深度学习的算法在该任务流程中承担的工作,并与传统方法做对比突出其优势,接下来对自然场景下文字检测识别算法中所需的深度学习知识进行总结,主要包括卷积神经网络、激活函数和网络模型训练技巧等。1.1文本检测识别流程如图1.1所示为传统文本检测识别流程。图1.1传统文本检测识别流程Fig.1.1Traditionaltextdetectionandrecognitionprocess(1)图像输入:对于不同的图像来说,因为有着不同的格式和压缩方式,所以需要使用不同的方法进行解码。(2)图像预处理:主要包括二值化、去噪声、倾斜较正等。摄像头采集到的图像一般都是彩色的,所含有的信息量巨大,很多的信息都是与文字不相关的,所以需要简单的对前景与背景进行分离,同时对噪声的干扰进行去除,并针对一些扭曲的文本进行矫正。(3)版面分析:对图片中的文本分行、分段落的过程,被称为版面分析。但由于图片中文本的多样性、复杂性,目前还没有一个固定、统一的切割模型。(4)字符切割:根据版面分析的样式对文字进行切割,将其分为单个字符以用于后续识别器的识别。(5)字符识别:该研究在比较早的时期就有模板匹配,后来很多学者提出了文字特征提取的算法。但文字的位移,笔画的粗细、断笔、粘连、旋转等因素也极大地增加了特征提取的难度。(6)版面恢复:为了使得识别之后的文本仍然像原图片中那样排列着,段落、位置和顺序都不变地输出。(7)后处理:对于一些错误的文字,通过语言模型对识别的结果进行分析来把其纠正过来。上面的文本检测识别流程使用了大量的图像处理的相关知识,并且基本上都符合人类的视觉处理逻辑。但自然场景下的图像中的信息更加丰富,伴随着光照、字体样式大小分布不均、文字弯曲、以及图像中非文字区域与文字区域有相似的纹理等因素,使得上述的流程每一个环节都很难进行。如今随着计算机视觉的发展基于深度学习的自然场景文本检测与识别算法就可以很好的简化这些复杂的中间流程,该流程大体分为4个步骤,读入图像-图像文字区域检测-文字识别-结果。通过文本检测网络进行定位文本的位置与一个识别网络来识别文本的具体内容可以很好的解决这一问题。如图1.2是基于这一流程的场景中文字检测与识别的技术解决方案。图1.2场景文本识别技术解决方案Fig.1.2Solutionofscenetextrecognitiontechnology通过公共特征提取层提取到图片的深层次特征,再分别训练文字检测和文本识别两个模型,确定图中文本坐标、文本内容并优化模型目标,最后在服务实施阶段将这两个模型串联到数据流水线中组成图文识别系统。1.2神经网络及深度学习理论卷积神经网络(convolutionalneuralnetwork,CNN)也叫做卷积网络(convolutionalnetwork),是一类特殊的人工神经网络,最主要的特点是卷积运算操作[28]。CNN有局部连接和权值共享两个特点,一方面减小了过拟合的风险,降低了模型的复杂度,另一方面减少了权值的数量使得网络易于优化,在计算机视觉领域中尤为明显。近年来卷积神经网络发展迅速,早已实现了网络宽度和深度的扩增,如Inception模块、残差模块的使用。1.1.1卷积层卷积层[29]是深度神经网络中一种很基础的操作,在网络最后起分类作用的全连接层在工程实现时也是用卷积层的操作来实现的。图1.3卷积操作示例Fig.1.3Convolutionoperationexample如图1.3所示,卷积操作实际上是一种分析数学里的计算方式,在卷积神经网络中只涉及离散卷积的情况。可以看出,卷积操作是局部的,通过一定大小的卷积核作用于局部的区域来获得图像的局部信息。并且通过设计不同的卷积核对图像进行逐行扫描,最终提取出图像中的特征。卷积操作其功能类似于传统图像处理中的滤波,传统方法时基于图像本身的特征进行提取,而特征提取的形态算子是固定不变的,例如拉普拉斯算子、Canny边缘检测算子和Sobel离散微分算子等,深度学习中神经网络的卷积核是未知的,这和传统方法提取图像特征的方式不同,神经网络通过将目标图片和标签结合起来进行“联合学习”,在模型训练的过程中,特征的相关参数(比如CNN卷积核的参数)可以根据目标核优化的反馈自适应的调整,实现预期的目标,而有标签的训练方法也叫做有监督的训练方法。1.1.2池化层池化层是一种下采样层,池化函数将网络在该位置的输出用某一位置的相邻输出的总体统计特征来代替。最常见的如最大池化(max-pooling)函数用相邻矩形区域内的最大值来代替网络在区域内的输出、平均池化(mean-pooling),即输出相邻矩形区域内的平均值,还有基于距中心像素距离的加权平均函数以及L^2范数等[30]。如图1.4所示为最大值池化和均值池化示意图。值得注意的是,池化层不像卷积层的操作,它不包含需要学习的参数。图1.4最大值池化和均值池化示意图Fig.1.4Maximumpoolingandaveragingpoolingschematics最大池化和平均池化的公式如式(1.1)和式(1.2)。 (1.1) (1.2)其中,Ii,j除了最大值池化和平均值池化之外,随机池化(stochastic-pooling)也是一种池化方法[31]。它介于上述两者之间,只需对输入数据中的元素按照一定概率值大小随机选择,而不是只取最大值或平均值。对随机池化来说,元素值大的响应被选中的概率也大,反之亦然。在全局意义上,随机池化近似于平均值池化;而在局部意义上,它服从的是最大值池化的原则。1.1.3常用的激活函数神经网络的刚开始提出之时,主要是用来解决一些线性可分的情况,它的输出信号仅仅是一个简单的线性函数,他们的复杂性有限,若干层线性操作堆叠起来仍然是线性操作的效果,无法增加网络的复杂性。然而在解决实际问题的时候,面临的往往是线性不可分的问题,因此引入非线性激活函数的概念。激活函数层又称为非线性映射层,目的就在于增加网络的表达能力(非线性),在实际应用中,有多达十几种非线性激活函数可以供选择,接下来对本文重点使用的三种进行介绍。(1)Sigmoid函数[32]传统神经网络中曾经最常用的激活函数Sigmoid函数(也叫Logistic函数),值域在0到1之间,函数表达式为式(1.3)。 (1.3)其导数表达式为式(1.4)。 (1.4)Sigmoid函数图像如图1.5所示。图1.5Sigmoid函数Fig.1.5SigmoidfunctionSigmoid函数的优点是它的输出映射在(0,1)之间,连续单调的特点使它便于求导,有利于前向传播。但由于其存在饱和区间,对于过大或过小的值都会被压缩到1(或0),这样会带来严重的“梯度饱和效应”,也就是当网络变深时,出现梯度消失的现象。而且Sigmoid函数不是以0为中心,容易导致收敛速度下降而且幂运算相对更加耗时。(2)Tanh函数[33]为了解决Sigmoid的问题,可以使用以0为中心的输出的Tanh函数,又叫做双曲正切函数,区间为[-1,1],两个sigmoid函数放在一起相当于Tanh函数,Tanh函数的性能会高于Sigmoid函数。其表达式为(1.5)。 (1.5)其导数表达式为(1.6)。 (1.6)Tanh函数图像如图1.6所示。在

0周围的很短一段区域内可看为线性的是Tanh函数的优点。由于Tanh函数均值为

0

,弥补了Sigmoid函数均值为

0.5的缺点,解决了Sigmoid函数的非零中心对称的问题。但它像Sigmoid函数一样,当x很大或很小的时候,进入饱和区间,在训练中容易出现梯度消失,从而导致权重更新的非常缓慢。图1.6Tanh函数Fig.1.6Tanhfunction(3)修正线性单元(ReLU)[34]为了避免梯度饱和现象,神经网络中引入了修正线性单元ReLU,也是目前深度卷积神经网络中最为常用的激活函数之一。另外,根据ReLU函数改进的其他激活函数也展示出很好的性能,如LeakyReLU、参数化ReLU、随机化ReLU等。ReLU函数实际上是一种分段线性函数,又称为修正线性单元(RectifiedLinearUnit),它能够弥补Tanh函数以及Sigmoid函数的梯度消失问题,表达式见式(1.7)。 (1.7)函数图像如图1.7所示。图1.7ReLU函数Fig.1.7ReLUfunctionReLU函数的导数定义为式(1.8)。 (1.8)如上式可见,ReLU函数的梯度在x>0时为1,反之为0。对x>0部分完全消除了上述两种激活函数所产生的梯度消失现象,同时在实验中还更有助于随机梯度下降方法的收敛,收敛速度约快6倍左右。正是由于ReLU函数这些优秀的特性,它已经成为目前卷积神经网络以及其他深度学习模型(如循环神经网络)激活函数的首要选择之一。1.1.4反向传播在卷积神经网络以及其他深度学习模型中,大部分都是通过最小化损失函数来训练得到最优的模型参数。但是从凸优化理论上讲,神经网络模型的局限性在于,它不仅是非凸模型,而且非常复杂,使得模型的优化求解异常困难。在深度学习模型中,可通过前向传播和反向传播两个阶段结合来进行训练,通过梯度下降等方法进行模型的参数更新[35]。前向传播是产生代价函数的阶段,输入信息通过神经网络的计算,最终产生一个标量的代价函数,用于反向传播过程中的计算。在反向传播阶段,根据误差函数的值来计算梯度并沿着负梯度优化方向去优化模型参数,总体来说是一个通过迭代更新权重矩阵的参数值来最小化损失函数的过程。在网络开始训练之前,输入和输出间隐含的网络模式和网络参数没有办法被识别,这是因为还没有开始训练的神经网络的参数的初始值是通过随机初始化得到的,所以无法根据网络的输出做出正确的判断,训练之前,正确的输出值被标注到了每一列数据当中,权重矩阵在模型训练的过程中会根据实际的标签和模型的预测值之间的差值做判断,误差函数就是一种计算模型的预测输出和实际标签之间的差值的方式,接着通过反向传播来修正误差函数,最小化误差函数,从而更新得到能够分类正确的权重组合。图1.8简单的多层网络Fig.1.8Asimplemultilayernetwork.反向传播算法的核心在于损失函数及所有权重梯度的计算,最小化损失函数的数值首先就要计算偏导数∂L/∂w,再通过优化算法来求解问题。在大多数场景文本检测与识别实际应用的深度学习模型中,常用批处理的随机梯度下降法(mini-batchSGD)[36]。1.3常用循环神经网络循环神经网络(RecurrentNeuralNetwork,RNN)是一类用于处理序列数据的网络结构,最早是在二十世纪八十年代被提出的[37]。该网络的输入通常是连续的、长度不固定的序列数据。循环神经网络能够捕获长距离样本之间的关联信息从而利于处理序列信息。此外,循环神经网络还可以实现利用隐藏节点的状态信息保存序列中有价值的历史信息,从而使得RNN网络能够学习到整个序列的抽象的有价值的信息。近年来,随着计算科学的迅猛发展和深度学习网络设计的改进,循环神经网络在处理序列数据任务中取得了突破性进展,特别是在语音识别、文字预测等领域有着更好的刻画能力,表现出较大优势,得到了广泛应用。因此,在文字识别网络模型中合理的使用循环神经网络可以提高文字识别的准确度。1.3.1RNN网络RNN是通常用于处理输入层为序列数据的神经网络,图1.9左图为折叠的RNN结构,从图上看整个RNN网络结构分为三层:输入层x、隐藏层和输出层o。其中,x表示输入层输入的特征,输入一般为连续的序列用向量表示;s表示隐藏层的输出,隐藏层可以由多个神经元组成,神经元个数代表了s的维度;o代表输出层的值,一般为向量形式,维度一般与分类类别相关。RNN网络之所以有“循环”,是因为在其隐藏层多了一个自身的环形连接,即隐藏层输出s的值不仅取决于输入x和相应的权值矩阵U,还依赖于隐藏层上一时刻的输出和其对应的权值矩阵W。正因为隐藏层存在自己到自己的循环连接,该层也被称作循环层。将RNN网络按照时间序列进行展开,于是就可得到RNN网络在各个时刻的变量结构图,如图1.9所示。网络的输入沿着时间序列向后传播。当前时刻隐藏层的输出不仅依赖于当前时刻的输入,还依赖于时刻隐藏层输出。所以当前时刻隐藏层的输出包含了之前时刻的信息,可以理解为对之前信息的记忆,体现了RNN网络对序列信息的记忆能力。RNN网络算法公式如下所示。 (1.9) (1.10)式(1.9)是输出层计算公式,其中为输出,为输出层的激活函数,一般为Softmax函数,为隐藏层到输出层之间的权值矩阵,输出层和隐藏层之间进行全连接。表示隐藏层时刻的输出,由两部分组成,即时刻的输入及时刻的隐藏层输出,为输入层到隐藏层的权值矩阵,为时刻到时刻的权值矩阵,为隐藏层的激活函数,一般可以选择tanh、relu、logistic函数等。此外,、、权值矩阵的值在每个时刻都是共享的,这也是循环神经网络的结构特征之一。图1.9RNN网络结构展开图Fig.1.9RNNnetworkstructureexpansion自然场景下文字识别算法中更常用的是基于上述的RNN网络设计的双向循环神经网络。双向循环神经网所谓“双向”是指其不仅能像RNN网络记忆时间序列时刻前时刻的特征,还能记忆利用后时刻的特征,可以很好的对文字序列进行理解,最终提高其最终输出结果的准确性。1.3.2LSTM网络长短时记忆网络(LongShortTermMemoryNetwork,LSTM)是一种特殊结构的循环神经网络,它是针对传统的循环神经网络出现的梯度消失和梯度爆炸的缺陷而设计的,逐渐成为当下广泛使用的网络结构,主要应用在语音文字识别、图像描述、自然语言处理等领域[38]。传统的循环神经网络通常采用梯度下降法进行训练,虽然效果很好,但随之产生的梯度爆炸和梯度消失问题,随着输入序列的增长,展开的网络就越深,同时网络的抖动变得更为剧烈,导致无法学习。基于此问题,长短时记忆网络便应运而生了,它是Hochreater和Schmidhuber在1997年提出,之后经过AlexGraves的改良,最终形成了现如今广泛使用的LSTM网络。相比RNN网络,长短时记忆网络引入了三种“门”来保护和控制信息,实现长期记忆保留的功能,分别为:遗忘门、输入门和输出门。“门”主要的功能就是实现了让信息选择通过,“门”的主要结构如图1.10所示。图1.10控制门结构Fig.1.10Controlgatestructure如图1.10所示,“门”主要由两部分构成,和。其中表示神经网络层,一般采用Sigmoid神经网络层,因其Sigmoid层输出0到1之间的数值,可以表示为允许通过信息量的多少,1表示全部可以通过,0表示都不可以通过。表示按元素逐乘操作。图1.11长短时记忆网络结构图Fig.1.11Structurediagramoflong-termandshort-termmemorynetwork如图1.11所示,网络内部结构从左往右依次是遗忘门,输入门和输出门。首先是遗忘门,主要作用是决定让哪些信息继续通过这个神经元,即“遗忘”部分信息。该门会读取时刻的输出和当前时刻的输入,经过神经网络层输出。公式如下: (1.11)紧接着是输入门,主要作用是决定那些输入被更新。此外还有一个层生成一个向量作为备选更新信息。然后两部分的输出经过逐点按元素相乘,对细胞状态更新。公式入下: (1.12) (1.13) (1.14)最后是输出门,即决定最后输出什么值。公式如下: (1.15) (1.16)综上,LSTM关键在于细胞状态,它实现了信息在其上面传播稳定,同时通过“门”对信息进行选择性的遗忘、更新和输入,从而实现了对长期信息的记忆。1.3.3Seq2Seq传统的RNN模型对其输入序列和输出序列是有要求的,两者的长度必须一致。然而在很多应用中,经常会出现输入输出不定长的情况,例如机器翻译领域的中英文翻译前后长度不一致以及语音识别领域识别前后的维度不一致等场景应用,为此专家学者提出了序列到序列(SequencetoSequence,Seq2Seq)的模型,也叫编码-解码(Encoder-decoder)模型。模型的本质依然是基于RNN网络,利用两个RNN网络,分别称之为编码器和解码器[39]。结构如图1.12所示。图1.12Seq2Seq模型示意图Fig.1.12Seq2SeqmodeldiagramSeq2Seq模型有编码器和解码器两部分构成。如图1.18所示,左侧的是编码器。编码器的作用是将不定长的输入序列编码成一个固定长度的语义向量,即图中的c。编码器实际上利用了RNN网络记忆的能力。假设输入为,是时刻的隐藏状态。那么可以得到时刻的隐藏状态和语义向量: (1.17) (1.18)右侧的是解码器,作用将编码了整个输入序列的信息的语义向量c转换输出,值得注意的是输出需要根据前面的结果来得到后面的结果。对于输出序列,输出的条件概率依赖于语义向量c和时刻之前的输出序列,即。此外时刻的隐藏层状态 (1.19)之后通过激活函数如Softmax得到输出。1.4常用网络模型训练技巧深度学习中的网络通常都是层数多,在实际训练的过程中,会遇到网络泛化能力低,训练速度慢以及过拟合问题,因此需要相应的办法和技巧解决这些问题。1.4.1权值初始化俗话说“万事开头难”,神经网络的训练也是如此。网络的性能跟网络参数的初始化也是息息相关的,理想的网络参数初始化可以使模型的训练事半功倍,相反,糟糕的参数初始化不仅会影响网络收敛,甚至会导致梯度消失或者梯度爆炸,从而训练失败[40]。Xavier谈到初始化,人们第一时间想到的或许是根据高斯分布来生成随机数,但这会导致前向传播时神经元输出值的方差不断增大。假设输入为X,输出为Y: (1.20)则的方差为: (1.21)假设wi和x (1.22)因此,为了在前向、反向传播时保证输入输出的方差一直,应有: (1.23) (1.24)然而在一般情况下,输入输出的个数通常是不同的,综合考量,令 (1.25)又因为[a,b]间均匀分布的方差为: (1.26)所以,Xavier初始化满足在如下区间的均匀分布: (1.27)Xavier这样设计的目的是,在模型初始化之后,每层输出的方差和输入个数无关,梯度的方差也不受输出数量的影响。但这个方法仍然有不太完美的地方,它没有考虑非线性激活函数对输入的影响,因为使用ReLU等激活函数之后,输出数据的期望往往不再是0,因此这种方法不太符合实际情况。MSRA针对上述方法的不足,MSRA提出了一种针对ReLU函数的初始化方法,MSRA初始化产生的是一个均值为0、方差为2/n的高斯分布,推导证明如下: (1.28)假设w和x独立同分布,且w的均值为0,则方差为: (1.29)对于ReLU函数(用f表示),有: (1.30) (1.31)将式(1.31)代入(1.30)可得

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论