




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
场景文字识别场景文字识别概述场景文字识别的基本概念01任务文字识别的应用场景02任务文字识别的分类03任务学习目标了解场景文字识别的基本概念了解文字识别的应用场景和分类1场景文字识别的基本概念1场景文字识别的基本概念OCR(OpticalCharacterRecognition,光学字符识别)传统上指对输入扫描文档图像进行分析处理,识别出图像中文字信息。图为OCR的简易过程:具体流程如下:第一步,通过图像信息采集(一般是相机),得到了一幅包含待识别字符的图像,并对其结构进行了分析;第二步,采用阈值运算等图像处理方法对待测对象进行去噪,并校正待检测的物体;第三步,由于文本信息的特殊性,需要进行行和列分割用于检测单个或连续的字符;第四步,将分割后的字符图像导入识别模型进行处理,从而获得原始图像中的字符信息。1场景文字识别的基本概念图为OCR文字识别的操作步骤:其中,OCR识别的关键技术在于文字检测和文本识别部分,这也是深度学习技术可以充分发挥功效的地方。1场景文字识别的基本概念场景文字识别(SceneTextRecognition,STR)指识别自然场景图片中的文字信息。自然场景图像中的文字识别,其难度远大于扫描文档图像中的文字识别,因为它的文字展现形式极其丰富:允许多种语言文本混合,字符可以有不同的大小、字体、颜色、亮度、对比度等;文本行可能有横向、竖向、弯曲、旋转、扭曲等式样;图像中的文字区域还可能会产生变形(透视、仿射变换)、残缺、模糊等现象;自然场景图像的背景极其多样。如下图所示,文字可以出现在平面、曲面或折皱面上。文字区域附近有复杂的干扰纹理、或者非文字区域有近似文字的纹理,比如沙地、草丛、栅栏、砖墙等。1场景文字识别的基本概念也有人用OCR技术泛指所有图像文字检测和识别技术,包括传统OCR技术与场景文字识别技术,其实场景文字识别技术可以被看成是传统OCR技术的自然演进与升级换代。2文字识别的应用场景2文字识别的应用场景图像文字检测和识别技术有着广泛的应用场景。目前许多互联网公司的相关应用已经涉及了这个领域,比如识别名片,识别路牌,识别试卷,识别车牌号等。而且已经有不少的服务商都在持续增强文字检测和识别的技术,比如腾讯,百度,阿里,亚马逊,微软,谷歌等大型云服务企业,还有一些活跃在物流,教育,安防,视频直播,商务,旅游导航等服务企业。这些企业既可以使用提前训练好的模型直接提供场景图文识别、卡证识别、扫描文档识别等云服务,也可以使用客户提供的数据集训练定制化模型(如票据识别模型),以及提供定制化AI服务系统集成等。3文字识别的分类3文字识别的分类文字识别可根据待识别的文字特点采用不同的识别方法,一般分为定长文字和不定长文字。定长文字:由于字符数量固定(比如车牌号),采用的网络结构相对简单,识别也比较容易。一般构建3层卷积层,2层全连接层便能满足其识别。不定长文字:由于字符数量不固定(比如广告牌文字),因此需要更复杂的网络结构和后处理环节,识别具有一定的难度。不定长文字识别的常用方法:LSTM+CTC、CRNN、chineseocr。ThankYOU!LSTMRNN概述01任务LSTM概述02任务学习目标了解RNN的网络结构了解LSTM的基本概念1RNN概述1RNN概述之前讲神经网络的时候,只能一次单独处理一个图像的输入,并且前一个输入和后一个输入是完全没有关系的。但是在某些任务中需要能够更好地处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当理解一句话的时候,需要把组成这句话的所有词关联起来,而不能去单独地理解每个词的意思。以自然语言处理的词性标注任务来讲,一个句子中,前一个单词其实对于当前单词的词性预测是有很大影响的。比如“小明跳舞”,“关公舞大刀”,同样是“舞”字,词性却不相同,前者是名词,后者是动词。但是由于“小明跳舞”中“舞”子的前面“跳”是一个动词,那么很显然“舞”作为名词的概率就会远大于动词的概率。因为动词后面接名词很常见,而动词后面接动词很少见。所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。1RNN概述RNN(RecurrentNeuralNetwork)循环神经网络,是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。RNN是一种特殊的神经网络结构,它是根据“人的认知是基于过往的经验和记忆”这一观点提出的。它与DNN,CNN不同的是:它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种‘记忆’功能。1RNN概述图中展示的是一个简单的循环神经网络结构图:可以看到,如果把上面的“W”去掉,它就变成了前面讲的神经网络。X代表输入层的值,S代表隐藏层的值,O代表输入层的值,U和V分别代表层到层之间的权重。那W是什么呢?循环神经网络的隐藏层的值S不仅仅取决于当前这次的输入X,还取决于上一次隐藏层的值S,
W就是隐藏层上一次的值作为这一次的输入的权重。1RNN概述可以把W按照时间线展开,循环神经网络就变成如图右侧一样:现在看上去就比较清楚了,这个网络在t时刻接收到输入
之后,隐藏层的值是
,输出值是。关键一点是,
的值不仅仅取决于
,还取决于
。1RNN概述在t=1时刻,一般初始化输入
=0,随机初始化W,U,V,进行下面的公式计算:其中,f和g均为激活函数。其中f可以是tanh,ReLu,sigmoid等激活函数,g通常是softmax也可以是其他激活函数。1RNN概述时间就向前推进,此时的状态
作为时刻1的记忆状态将参与下一个时刻的预测活动,也就是:以此类推,可以得到最终的输出值为:2LSTM概述2LSTM概述RNN的关键点之一就是它们可以用来连接先前的信息到当前的任务上。但是当相关信息和当前预测位置之间的间隔变得非常大,RNN会丧失学习到连接如此远的信息的能力。LSTM就是专门设计出来解决这个问题的。LSTM(LongShort-TermMemory),长短期记忆网络,是一种特殊的RNN,是为了解决RNN长期依赖问题而专门设计出来的。所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层,如图所示。2LSTM概述LSTM也拥有这种链状结构,但是重复模块则拥有不同的结构。与神经网络的简单的一层相比,LSTM拥有四层,这四层以特殊的方式进行交互。如图所示。粉红色圆圈表示点向运算,如向量加法、点乘,而黄色框是学习神经网络层。线的合并表示连接,而线的交叉表示其内容正在复制,副本将转到不同的位置。ThankYOU!LSTMLSTM结构解析01任务LSTM实现方法01任务学习目标了解LSTM网络结构了解LSTM的实现方法1LSTM结构解析1LSTM结构解析LSTM的关键是cell状态,水平线贯穿图的顶部。cell状态有点像传送带。它沿着整个链条一直沿直线运动,只有一些小的线性相互作用。信息不加改变地流动非常容易。如图所示:1LSTM结构解析LSTM具有删除或添加信息到节点状态的能力,这个能力是由被称为门(Gate)的结构所赋予的。门(Gate)是一种可选地让信息通过的方式。它由一个sigmoid神经网络层和一个点乘法运算组成。如图所示:sigmoid神经网络层输出0和1之间的数字,这个数字代表每个组件有多少比率的信息可以通过,0表示不通过任何信息,1表示全部通过。LSTM具有三个gates,以保护和控制cell状态。1LSTM结构解析LSTM的第一步是决定要从节点状态中丢弃什么信息。该决定由被称为“忘记门”的sigmoid层实现。它查看
(前一个输出)和
(当前输入),并为单元格状态(上一个状态)中的每个数字输出0和1之间的数字。1代表完全保留,而0代表彻底删除。“忘记门”的示意图如图所示:1LSTM结构解析下一步是决定要在节点状态中存储什么信息,需要分两步来进行,首先,称为“输入门层”的sigmoid层决定了将更新哪些值。接下来一个tanh层创建候选向量
,该向量将会被加到节点的状态中。存储信息步骤如图所示:现在是时候去更新上一个状态值
了,将其更新为
。前面的步骤以及决定了应该做什么,只需实际执行即可。1LSTM结构解析将上一个状态值乘以
,以此表达期待忘记的部分。之后将得到的值加上
,得到的是新的候选值,按照更新每个状态值的多少来衡量。更新上一个状态值
的步骤如图所示:1LSTM结构解析最后,需要决定要输出什么。此输出将基于其中的细胞状态,但将是一个过滤版本。首先,运行一个sigmoid层,它决定要输出的细胞状态的哪些部分。然后,将单元格状态通过tanh(将值规范化到-1和1之间),并将其乘以sigmoid层的输出,至此输出决定的那些部分的值。输出流程如图所示:2LSTM实现方法2LSTM实现方法tf.keras.layers.LSTM(units,activation=“tanh”,recurrent_activation=“sigmoid”,#用于重复步骤的激活功能use_bias=True,#是否图层使用偏置向量kernel_initializer=“glorot_uniform”,#kernel权重矩阵的初始化程序,用于输入的线性转换recurrent_initializer=“orthogonal”,#权重矩阵的初始化程序,用于递归状态的线性转换bias_initializer=“zeros”,#偏差向量的初始化程序unit_forget_bias=True,#则在初始化时将1加到遗忘门的偏置上kernel_regularizer=None,#正则化函数应用于kernel权重矩阵recurrent_regularizer=None,#正则化函数应用于权重矩阵bias_regularizer=None,#正则化函数应用于偏差向量activity_regularizer=None,#正则化函数应用于图层的输出(其“激活”)kernel_constraint=None,#约束函数应用于kernel权重矩阵recurrent_constraint=None,#约束函数应用于权重矩阵bias_constraint=None,#约束函数应用于偏差向量dropout=0.0,#要进行线性转换的输入单位的分数recurrent_dropout=0.0,#为递归状态的线性转换而下降的单位小数return_sequences=False,#是否返回最后一个输出。在输出序列或完整序列中return_state=False,#除输出外,是否返回最后一个状态go_backwards=False,#如果为True,则向后处理输入序列并返回反向的序列stateful=False,#如果为True,则批次中索引i的每个样本的最后状态将用作下一个批次中索引i的样本的初始状态。time_major=False,unroll=False,#如果为True,则将展开网络,否则将使用符号循环。展开可以加快RNN的速度,尽管它通常会占用更多的内存。展开仅适用于短序列。)ThankYOU!CTCCTC概述01任务CTC使用方法02任务学习目标了解CTC的基本概念了解CTC的使用方法1CTC概述1CTC概述CTC(ConnectionistTemporalClassifier)联结时间分类器,是一种改进的RNN模型。它主要解决的是时序模型中,输入数大于输出数,输入输出如何对齐的问题。它由AlexGraves于2006年提出。由于文字的不同间隔或变形等问题,导致相同文字有不同的表现形式,但实际上都是同一个文字。比如图中,在识别时会将输入图像分块后再去识别,得出每块属于某个字符的概率(无法识别的标记为特殊字符“-”)。1CTC概述由于字符变形等原因,导致对输入图像分块识别时,相邻块可能会识别为相同结果,字符重复出现。因此,通过CTC来解决对齐问题。模型训练后,对结果中去掉间隔字符、去掉重复字符(如果相同字符连续出现,则表示只有1个字符,如果中间有间隔字符,则表示该字符出现多次)。可以把CTC理解为一种end-to-end(端到端)计算损失函数的方法,可以避开输入与输出手动对齐的一种方式,是非常适合语音识别或者OCR这种应用的。1CTC概述CTC本身是不需要对齐的,但是我们需要知道X
的输出路径和最终输出结果的对应关系,因为在CTC中,多个输出路径可能对应一个输出结果,举例来理解。例如在OCR的任务中,输入X是含有“CAT”的图片,输出Y是文本[C,A,T]。将X分割成若干个时间片,每个时间片得到一个输出,一个最简答的解决方案是合并连续重复出现的字母,如图:1CTC概述这个问题有两个缺点:(1)几乎不可能将X的每个时间片都和输出Y对应上,例如OCR中字符的间隔,语音识别中的停顿;(2)不能处理有连续重复字符出现的情况,例如单词“HELLO”,按照上面的算法,输出的是“HELO”而非“HELLO”。为了解决上面的问题,CTC引入了空白字符,例如OCR中的字符间距,语音识别中的停顿均表示为。所以,CTC的对齐涉及去除重复字母和去除两部分。
1CTC概述这种对齐方式有三个特征:(1)X与Y之间的时间片映射是单调的,即如果X向前移动一个时间片,Y保持不动或者也向前移动一个时间片;(2)X与Y之间的映射是多对一的,即多个输出可能对应一个映射,反之则不成立,所以也有了特征3;(3)X的长度大于等于Y的长度。2CTC使用方法2CTC使用方法在Keras中,通过以下函数计算ctc损失:importkeras.backendasKdefctc_loss(args):returnK.ctc_batch_cost(*args)ThankYOU!基于LSTM+CTC的文字识别案例描述01任务案例目标02任务案例分析03任务案例实施04任务1案例描述1案例描述本案例将使用python的第三方库captcha来生成验证码,并搭建LSTM+CTC网络结构对生成的验证码进行文字识别。2案例目标案例目标学会使用第三方库生成随机验证码;搭建LSTM+CTC的网络架构并对随机生成的验证码进行识别。23案例分析案例分析如何生成验证码,并分批次传给神经网络,这是一个问题。使用captcha来生成验证码,captcha使用Python写的生成验证码的库,它支持图片验证码和语言验证码,这里使用的则是生成图片验证码的功能。34案例实施4案例实施 1.导库fromcaptcha.imageimportImageCaptchafromtensorflow.keras.callbacksimportCallbackfromtensorflow.keras.callbacksimportEarlyStopping,CSVLogger,ModelCheckpoint2.生成验证码接着定义要生成的验证码的内容。这里使用0-9和大写的英文字母A-Z来随机作为验证码的内容。characters=string.digits+string.ascii_uppercase4案例实施接下来就是生成验证码的部分了。这里写了一个CaptchaSequence类,该类继承自Sequence,功能类似于python的生成器,但限制较少,可迁移性更好。该类有三个方法:__init__():初始化,定义要使用的变量。__len__():生成的验证码(数据集)的总数量。__getitem__():返回一个batch_size的数据。4案例实施3.搭建网络
数据准备之后,要开始搭建网络结构了,在此之前,先编写计算CTC损失的函数ctc_lambda_func()。defctc_lambda_func(args):y_pred,labels,input_length,label_length=argsreturnK.ctc_batch_cost(labels,y_pred,input_length,label_length)接着开始搭建网络。提取特征部分用了10层卷积层。4案例实施4.训练模型接下来就开始要进入训练环节了。开始训练之前,设置回调函数,配置模型保存路径,在每个epoch跑完之后验证准确率等。pile(loss={'ctc':lambday_true,y_pred:y_pred},optimizer=Adam(lr=0.001,amsgrad=True))model.fit_generator(train_data,steps_per_epoch=10,epochs=100,validation_data=valid_data,workers=4,
callbacks=callbacks)ThankYOU!tesseracttesseract概述01任务tesseract安装02任务学习目标了解tesseract的基本概念掌握tesseract的安装过程1tesseract概述1tesseract概述tesseract
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025授权拍卖合同模板
- 分支机构合同范本(2篇)
- 2024年09月河北丰宁满族自治县事业单位招聘110人(含卫生类)笔试历年专业考点(难、易错点)附带答案详解
- 2024年09月江苏镇江市丹徒区卫生健康委员会所属事业单位三批招聘专业技术人员3人笔试历年专业考点(难、易错点)附带答案详解
- 玻璃精密光学仪器考核试卷
- 2024年09月江苏句容市卫生健康系统所属事业单位第二批招聘8人笔试历年专业考点(难、易错点)附带答案详解
- 液压垂直弯道器的工作优势
- 2024年09月广西医科大学附属肿瘤医院第三批人才需求8人笔试历年专业考点(难、易错点)附带答案详解
- 租赁设备的智能化管理与优化实践案例考核试卷
- 2025年:合同续约、终止与解除协议通知书
- 土方平衡工程施工方案样本
- 基于红外传感器的快速体温检测系统设计-毕业设计(论文)
- 高三二诊考试分析报告
- 跨境电商平台的融合与创新
- 骨肿瘤的放射治疗和化学治疗策略
- 23《海底世界》 第二课时 公开课一等奖创新教学设计
- DB37-T 4693.1-2024人民防空工程防护设备安装技术规程 第1部分:人防门-地方标准
- 危险化学品、烟花爆竹安全生产执法监察培训课件
- 装饰工程资金需求计划
- 权力与理性-17、18世纪西方美术
- 30题药品质量检测岗位常见面试问题含HR问题考察点及参考回答
评论
0/150
提交评论