Redian新闻
>
EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型(二)

EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型(二)

公众号新闻

 机器之心专栏

本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。
 
本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

本文将分 3 期进行连载,共介绍 17 OCR任务上曾取得 SOTA 的经典模型。


  • 第 1 期:CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet

  • 第 2 期:EAST、PixelLink、TextBoxes++、DBNet、CRNN、RARE

  • 第 3 期:ABCNet、Deep TextSpotter、SEE、FOTS、End-to-End TextSpotter


您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

第 1 期回顾:CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet…你都掌握了吗?一文总结OCR必备经典模型(一)


本期收录模型速览

模型SOTA!模型资源站收录情况模型来源论文
EASThttps://sota.jiqizhixin.com/project/east
收录实现数量:6
支持框架:PyTorch、TensorFlow等
EAST: An Efficient and Accurate Scene Text Detector
PixelLinkhttps://sota.jiqizhixin.com/project/pixellink
收录实现数量:3
支持框架:TensorFlow
Detecting Scene Text via Instance Segmentation
TextBoxes++https://sota.jiqizhixin.com/project/textboxes-_1
收录实现数量:4
支持框架:PyTorch、TensorFlow
TextBoxes++: A Single-Shot Oriented Scene Text Detector
DBNethttps://sota.jiqizhixin.com/project/dbnet_1
收录实现数量:4
支持框架:PyTorch、TensorFlow等
Real-time Scene Text Detection with Differentiable Binarization
CRNNhttps://sota.jiqizhixin.com/project/crnn-4
收录实现数量:4
支持框架:PyTorch、TensorFlow等
An End-to-End Trainable Neural Network for Image-based Sequence Recognition and ItsApplication to Scene Text Recognition
RAREhttps://sota.jiqizhixin.com/project/rare
收录实现数量:3
支持框架:PyTorch、TensorFlow
Robust Scene Text Recognition with Automatic Rectification


光学字符识别(Optical Character Recognition,OCR)是指对文本资料进行扫描后对图像文件进行分析处理,以获取文字及版面信息的过程。一般来说,在获取到文字之前需要首先对文字进行定位,即执行文本检测任务,将图像中的文字区域位置检测出来;在找到文本所在区域之后,对该区域中的文字进行文字识别。文字识别就是通过输入文字图片,然后解码成文字的方法。OCR解码是文字识别中最为核心的问题。传统技术解决方案中,分别训练文本检测和文字识别两个模型,然后在实施阶段将这两个模型串联到数据流水线中组成图文识别系统。

对于文本检测任务,主要包括两种场景,一种是简单场景,另一种是复杂场景。简单场景主要是对印刷文件等的文本检测,例如像书本扫描、屏幕截图,或是清晰度高、规整的照片等。由于印刷字体的排版很规范,背景清晰,现在的检测、识别技术已经很成熟了,检测的效果都比较好。通过利用计算机视觉中的图像形态学操作,包括膨胀、腐蚀基本操作,即可实现简单场景的文字检测。复杂场景主要是指自然场景,由于光照环境以及文字存在着很多样的形式,例如灯箱广告牌、产品包装盒、设备说明、商标等,存在角度倾斜、变形、背景复杂、光线忽明忽暗、清晰度不足等情况,这时要将文本检测出来难度就比较大了,此时主要考虑引入深度学习模型进行检测。

对于文字识别任务,一般由下面的步骤组成:首先是读取输入的图像,提取图像特征,因此,需要有个卷积层用于读取图像和提取特征;然后,由于文本序列是不定长的,因此需要处理不定长序列预测的问题;再次,为了提升模型的适用性,最好不要要求对输入字符进行分割,直接可进行端到端的训练,这样可减少大量的分割标注工作,这时就要引入 CTC 模型(Connectionist temporal classification, 联接时间分类)来解决样本的分割对齐的问题;最后,根据一定的规则,对模型输出结果进行纠正处理,输出正确结果。

最近流行的技术解决方案中,考虑用一个多目标网络直接训练出一个端到端的模型以替代两阶段模型。在训练阶段,端到端模型的输入是训练图像及图像中的文本坐标、文本内容,模型优化目标是输出端边框坐标预测误差与文本内容预测误差的加权和。在实施阶段,原始图像经过端到端模型处理后直接输出预测文本信息。相比于传统方案,该方案中模型训练效率更高、资源开销更少。




我们在这篇报告中分别总结了OCR中必备的文本检测模型、文字识别模型和端到端的方法。其中,文本检测模型主要考虑复杂场景中的深度学习模型。


一、文本检测模型


1、 EAST


EAST(Efficient and Accuracy Scene Tex)是旷世科技发布在CVPR2017的作品,由于提供了方向信息,EAST可以检测各个方向的文本。EAST的整体网络结构分为3个部分:(1) 特征提取层,使用的基础网络结构是PVANet,分别从stage1、stage2、stage3、stage4抽出特征,即一种FPN(feature pyramid network)的思想;(2) 特征融合层,在抽出的特征层从后向前做上采样,然后执行concat;(3) 输出层,输出一个score map和4个回归的框加上1个角度信息,或者输出一个scoremap和8个坐标信息。

具体的,图1给出原文的网络结构图,该模型可以分解为三个部分:特征提取器stem、特征合并分支和输出层。如图所示,输入一张图片,经过四个阶段的卷积层可以得到四张feature map, 分别为f_4、f_3、f_2、f_1,它们相对于输入图片分别缩小1/4、1/8、1/16、1/32,之后使用上采样、concat(串联)、卷积操作依次得到h_4、h_3、h_2、h_1,在得到这个融合的feature map后,使用大小为通道数为32的卷积核卷积得到最终的feature map。得到最终的feature map后,使用一个大小为1x1通道数为1的卷积核得到一张score map用表示。在feature map上使用一个大小为1x1通道数为4的卷积核得到text boxes,使用一个大小为1x1通道数为1的卷积核得到text rotation angle,这里text boxes和text rotation angle合起来称为geometry map,并用F_g表示。


图1文本检测模型结构


图2 EAST pipeline



图2展示了EAST的pipeline。将一幅图像送入FCN( fully convolutional network),并生成多通道的像素级文本分数图和几何图形。其中一个预测通道是一个分数图,其像素值的范围是[0, 1]。其余的通道表示从每个像素的角度来看包围着这个词的几何形状。分数代表了在同一位置预测的几何形状的置信度。

F_s大小为原图的1/4通道数为1,每个像素表示对应于原图中像素为文字的概率值,所以值在[0,1]范围内。F_g大小也为原图的1/4通道数为5,即4+1(text boxes + text rotation angle)。text boxes通道数为4,其中text boxes每个像素如果对应原图中该像素为文字,四个通道分别表示该像素点到文本框的四条边的距离,范围定义为输入图像大小,如果输入图像为512,那范围就是[0,512]。text rotation angle通道数为1,其中text rotation angle每个像素如果对应原图中该像素为文字,该像素所在框的倾斜角度,角度的度数范围定义为[-45,45]。

损失函数为:



其中,ℓ_s和ℓ_g分别表示score map和geometry map的损失。score map采用交叉熵计算,geometry map用的是IoU loss的计算方式。

最后文章还提出了Locality-Aware NMS,先合并一次窗口,然后采用标准的NMS去抑制窗口。locality_aware_nms在标准nms的基础上加了weighted_merge,将2个IoU高于某个threshold的输出框进行基于得分的合并。合并后的输出框的坐标数值介于2个合并的输入框之间,从而有效利用所有回归出的框的坐标信息,减少位置误差。



项目SOTA!平台项目详情页

EAST

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/east


2、 PixelLink

我们上述介绍的文本检测算法中大部分是由文本/非文本分类和位置回归任务组成的,而且回归在获取bounding box中扮演关键的角色。PixelLink放弃了回归的方式去检测bounding box,转而采用实例分割的方式,把文字区域分割出来,然后找到相应的外接矩形。相比于基于回归的方法,PixelLink性能更优,且需要更少的训练数据和迭代次数。

PixelLink网络的backbone采用的是VGG16,并将最后两层全连接层改为卷积层,结构采用的是FCN的结构,文章尝试了两种feature map的融合结构,分别取{conv2_2, conv3_3, conv4_3, conv5_3, fc_7}进行融合和取{conv3_3, conv4_3, conv5_3, fc_7}进行融合。输入为图像,输出为18通道的结果,其中,2通道表示预测的每个像素是否为文本,16通道表示每个像素与它八个邻域是否需要连接的概率图。在得到上述的18个通道后,先是使用了两个阈值分别对像素预测结果和link预测的结果进行过滤,然后对于预测为正样本的像素结合link通道的预测结果将所有像素连接起来,这样就能得到文本检测的区域。大多数文字检测算法的bounding box都是使用regression的方式得到,和回归不同,论文使用了实例分割的方法先得到文字区域,然后使用opencv中的minAreaRect 算法得到相应的矩形(该函数是输出包围点集的最小矩形,该矩形可以是旋转的)。这样就可以输出一些列的文本框了,但是文章为了防止一些噪声的影响,将检查结果中短边小于10或者面积小于300的文本框进行滤除,从而得到最终的文本检查结果。
PixelLink完整的结构如图3。


图3 PixelLink的架构。训练一个CNN模型来进行两种像素级的预测:文本/非文本预测和Link预测。经过阈值处理后,positive像素被positive Link连接起来,实现实例分割。然后应用minAreaRect直接从分割结果中提取边界框。可以通过后置过滤来有效去除预测的噪声。为了更好地说明问题,作者展示了一个输入样本。虚线框中的八个热图代表了八个方向的Link预测。尽管有些词在文本/非文本预测中难以分离,但通过Link预测,它们是可以分离的

PixelLink的loss function由每个像素的分类损失函数和link损失函数组成,都采用了交叉熵。由于instance的大小不同,一些图像文字区域的面积大于所有其他文字的面积,因此提出一种实例平衡交叉熵损失函数,即为每一个instance计算一个权重:权重为所有像素面积的平均值除以每一个instance的面积。训练过程中采取了OHEM(Online Hard Example Ming)的训练策略,选取r x S个负样本中loss最高的像素,其中,r为负样本与正样本的比值,一般选取3。link 的loss是要分成正负link分开计算的,分开计算后对正负link loss进行归一化后相加,形成最终的link loss。


项目SOTA!平台项目详情页
PixelLink前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/pixellink


3、TextBoxes++

TextBoxes++主要是受到SSD的default box启发,在SSD框架基础之上做了一些调整,从而能够检测倾斜文本。SSD中default box 是水平的框,不能检测倾斜的文字。为了检测倾斜的文字,TextBoxes++采用四边形或旋转矩形来作为default box回归的target。为了更加密集的覆盖图像中的文字,对default box 做了垂直方向的偏移,更加密集的覆盖图像。同时,为了使感受野更加适应文本行,使用了长条状的卷积核。在训练过程中,使用了OHEM(Online Hard Example Ming)和数据增强,并且数据增强使用了随机裁剪的策略来增强对小目标的检测。TextBoxes++在6个不同的scale下检测旋转文字,在测试过程中,将所有的bounding box汇集到一起并做一起级联的NMS。最后,将CRNN接在后端,利用文字识别的高语义去优化检测过程。

TextBoxes++的backbone是经典的VGG16,保持前五个卷积层(conv1-conv5),并通过参数下采样方法将最后两个全连接转化成卷积层(conv6-conv7),然后在后面再加上8个卷积层,每两个一组(conv8-conv11),形成四个不同分辨率的stage。类似于SSD,不同scale的层都会接入到Multiple output layers,也叫text-box layers。它负责将不同scale下检测到的框进行一个聚合,并做一个级联的NMS。Textboxes++是一个全卷积的结构,因此在训练和测试的过程中可以接受不同大小的图片。不同于Textboxes,TextBoxes++将最后一个global average pooling 替换成了卷积层,这样有益于多尺度的训练和测试。


图4 TextBoxes++是一个全卷积网络,包括来自VGG-16的13层,然后是10个额外的卷积层,6个文本框层连接到6个中间卷积层。文本框层的每个位置预测每个默认框的n维向量,包括文本存在分数(2维)、水平边界矩形偏移量(4维)和旋转矩形边界框偏移量(5维)或四边形bounding box偏移量(8维)。在测试阶段应用非最大抑制,以合并所有6个文本框层的结果。"#c "代表通道的数量

垂直偏移的default box
text-box layer在输入的特征图的基础上同时预测classification和regression,输出的bounding box包括旋转的bounding box和包含对应旋转矩形的最小外接矩形。这个可以通过回归特征图上的每个像素对应的default box 的偏移来实现。在训练过程中,default box通过计算与ground truth的overlap来匹配ground truth,匹配策略和SSD相同。由于ground truth很多时候是倾斜的,因此,在匹配的时候,default box与ground truth的最小外接矩形计算IoU。因为default box 有很多不同的长宽比,这样可以使其更加适应任务。

卷积核形状的选择
对于水平框的情况下卷积核的形状是1 x 5 ,但是对于带有旋转情况下文章选择的是3 x 5。这种inception-style的不规则卷积核可以更好的适应长宽比更大的文字。由于inception结构,这种方形的感受野带来的噪声信号也可以被避免。

训练部分
损失函数采用了和SSD相同的函数,classification采用softmax交叉熵,regression采用smooth L1。

训练过程采用OHEM策略,不同于传统的OHEM,训练分为两个stage,stage1的正负样本比为1:3,stage2的正负样本比为1:6。

数据增强策略就是在原图随机裁剪一块与ground truth 的Jaccard overlap大于最小值的图片,此外增加一个目标收敛的约束。对于裁剪后的bounding box B和ground-truth bounding box G,Jaccard overlap J和物体覆盖度C定义为:


其中,| · |表示cardinality(即面积)。基于物体覆盖率C的随机裁剪策略更适合于小物体,如自然图像中的大多数文字。

级联NMS
由于计算倾斜文字的IoU较为耗时,作者在中间做了一个过渡,先计算所有框的最小外接矩形的IoU,做一次阈值为0.5的NMS,消除一部分框,然后在计算倾斜框的IoU的基础上做一次阈值为0.2的NMS。

端到端文字识别
最后,在Textboxes++后端接上CRNN(Convolutional Recurrent Neural Network)的框架,可以识别出相应的文字,然后通过文字的语义信息优化检测框的位置。整个CRNN网络结构包含三部分,从下到上依次为:CNN(卷积层),使用深度CNN,对输入图像提取特征,得到特征图;RNN(循环层),使用双向RNN(BLSTM)对特征序列进行预测,对序列中的每个特征向量进行学习,并输出预测标签(真实值)分布;CTC loss(转录层),使用 CTC 损失,把从循环层获取的一系列标签分布转换成最终的标签序列。关于CRNN我们会在后文“文字识别模型”章节中详细介绍。

项目SOTA!平台项目详情页

TextBoxes++

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/textboxes-_1


4、 DBNet

DBNet是基于图像分割网络的文本检测方法,本文提出Differentiable Binarization module(DB module)来简化分割后处理步骤,并且可以设定自适应阈值来提升网络性能。DBNet的网络结构见图5,通过FPN网络结构(backbone)得到1/4的特征图F,通过F得到probability map (P ) 和threshold map (T),通过P、T得到binary map(B)。在训练期间对P、T、B进行监督训练,P和B使用相同的监督信号(即label)。在推理时,只需要P或B就可以得到文本框。



图5 DBNet结构,其中 "pred "包括一个3×3卷积算子和两个跨度为2的去卷积算子。算子和两个跨度为2的去卷积算子。1/2"、"1/4"、... "1/32 "表示与输入图像相比的比例


图6 传统pipeline(蓝色流程)和DBNet Pipeline(红色流程)。虚线箭头是仅有的推理运算符;实线箭头表示训练和推理中的可区分运算符

已有的一些基于分割的方法如图14中蓝色箭头所示:首先,它们设置了固定的阈值,用于将分割网络生成的概率图转换为二进制图像;然后,用一些启发式技术(例如像素聚类)将像素分组为文本实例。DBNet的做法如图6中红色箭头所示:在得到分割map后,与网络生成的threshold map进行一次联合后做可微分二值化得到二值化图,然后再经过后处理得到最终结果。将二值化操作插入到分段网络中以进行联合优化,通过这种方式,可以自适应地预测图像每个位置的阈值,从而可以将像素与前景和背景完全区分开。但是,标准二值化函数是不可微分的,因此,作者提出了一种二值化的近似函数,称为可微分二值化(DB),当训练时,该函数完全可微分:


对于预测图(probability map )label 生成任务,给定一个文本图像,其文本区域的每个多边形都由一组片段描述:




然后,通过使用Vatti剪裁算法将多边形G缩小到G_s,生成正面积。缩减的偏移量D是由原多边形的周长L和面积A计算出来的,r是shrink ratio,设置为0.4:



使用 Vatti clipping algorithm 将G缩减到G_s,A是面积,r是shrink ratio,设置为0.4,L是周长。通过类似的方法,可以为阈值图(threshold map)生成标签。首先,文本多边形G以相同的偏移量D对Gd进行扩张。把G_s和G_d之间的空隙视为文本区域的边界,在这里,阈值图的标签可以通过计算与G中最近的片段的距离来生成。二值(binary map)图的label由以上二者计算得来,计算后G_s外为0,G_s内为1。

在预测图(P)、阈值图(T)和估计二值图(B^)上分别定义损失为ℓ_s、ℓ_t、ℓ_b,损失函数如下:

其中,ℓ_s和ℓ_b运用binary cross-entropy (BCE) loss,ℓ_t运用L1 loss。只针对Gd里的像素点计算loss再求和:




最后在测试阶段,再运用下式还原缩小的文本区域:




其中,A'是缩小的多边形的面积,L'是缩小的多边形的周长,r'根据经验设置为1.5。

项目SOTA!平台项目详情页
DBNet前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/dbnet_1


二、文字识别模型

1、 CRNN

CRNN 全称为 Convolutional Recurrent Neural Network,主要用于端到端地对不定长的文本序列进行识别。CRNN不用先对单个文字进行切割,而是将文本识别转化为时序依赖的序列学习问题,就是基于图像的序列识别。CRNN是最经典的文字识别模型。CRNN网络结构包含三部分,如图15所示,从下到上依次为:卷积层,使用CNN,作用是从输入图像中提取特征序列;循环层,使用RNN,作用是预测从卷积层获取的特征序列的标签(真实值)分布;转录层,使用CTC,作用是把从循环层获取的标签分布通过去重整合等操作转换成最终的识别结果。



图7CRNN架构

CRNN的输入是100x32归一化高度的词条图像,基于7层CNN(一般使用VGG16)提取特征图,把特征图按列切分(Map-to-Sequence),然后将每一列的512维特征输入到两层各256单元的双向LSTM进行分类。在训练过程中,通过CTC损失函数的指导,实现字符位置与类标的近似软对齐。

CRNN借鉴了语音识别中的LSTM+CTC的建模方法,不同之处是输入LSTM的特征,即,将语音领域的声学特征替换为CNN网络提取的图像特征向量。CRNN既提取了鲁棒特征,又通过序列识别避免了传统算法中难度极高的单字符切分与单字符识别,同时序列化识别也嵌入时序依赖(隐含利用语料)。在训练阶段,CRNN将训练图像统一缩放至100×32;在测试阶段,针对字符拉伸导致识别率降低的问题,CRNN保持输入图像尺寸比例,然后将图像高度统一为32个像素,卷积特征图的尺寸动态决定LSTM时序长度。CRNN具体参数如下表1。



表1 CRNN网络配置摘要。第一行是top层。k"、"s "和 "p "分别代表内核大小、跨度和填充大小

CRNN中一共有四个最大池化层,最后两个池化层的窗口尺寸由 2x2 改为 1x2,也就是图片的高度减半了四次,而宽度则只减半了两次。采用这种处理方式是因为文本图像多数都是高较小而宽较长的,所以其feature map也是这种高小宽长的矩形形状。因此,使用1×2的池化窗口可以尽量保证不丢失在宽度方向的信息,更适合英文字母识别(比如区分i和l)。此外,如表1所示,CRNN 还引入了BatchNormalization模块,加速模型收敛,缩短训练过程。

在CRNN模型中,卷积层的组件是通过从标准CNN模型中提取卷积层和最大集合层来构建的(移除全连接层)。使用该组件从输入图像中提取一个连续的特征表示。在送入网络之前,所有的图像都需要缩放到相同的高度。然后,从卷积层组件产生的特征图中提取一连串的特征向量,这是RNN的输入。一个特征序列的每个特征向量在特征图上从左到右按列生成。这意味着第i个特征向量是所有map的第i列的连接。在作者原文设置中,每一列的宽度被固定为单像素。

RNN 有梯度消失的问题,不能获取更多的上下文信息,所以 CRNN 中使用的是 LSTM,LSTM 的特殊设计允许它捕获长距离依赖。LSTM 是单向的,它只使用过去的信息。然而,在基于图像的序列中,两个方向的上下文是相互有用且互补的。因此,CRNN将两个LSTM(一个前向和一个后向)组合到一个双向LSTM中。此外,可以堆叠多层双向LSTM,深层结构允许比浅层抽象更高层次的抽象。这里采用的是两层各256单元的双向 LSTM 网络:


图8 (a) 一个基本的LSTM单元结构。一个LSTM由一个单元模块和三个门组成,即输入门、输出门和遗忘门。(b) 论文中使用的深度双向LSTM结构。将一个前向(从左到右)和一个后向(从右到左)的LSTM结合起来就形成了双向LSTM。将多个双向LSTM堆叠在一起,就形成了深度双向LSTM

一个特征向量就相当于原图中的一个小矩形区域,RNN 的目标就是预测这个矩形区域为哪个字符,即根据输入的特征向量,进行预测,得到所有字符的softmax概率分布。将这个长度为字符类别数的特征向量作为CTC层的输入。因为每个时间步长都会生成一个输入特征向量 x^T,输出一个所有字符的概率分布y^T,所以输出为 40 个长度为字符类别数的向量构成的后验概率矩阵。然后将这个后验概率矩阵传入转录层。

CRNN中需要解决的关键问题是图像文本长度不定长,所以RNN需要一个额外的搭档来解决对齐解码的问题,这个搭档就是著名的CTC解码。CRNN采取的架构是CNN+RNN+CTC,CNN提取图像像素特征,RNN提取图像时序特征,而CTC归纳字符间的连接特性。转录层输入是一个序列y =y1, . . . , yT,其中T是序列的长度。这里,每个yt是集合L’ =L ∪上的概率分布,其中L包含任务中的所有标签(例如所有的英文字符),以及一个 "blank "标签。在序列π∈L’^T上定义了一个序列到序列的映射函数B,其中T是长度。B将π映射到l上,首先去除重复的标签,然后去除 "blank"。例如,B将"—hh-e-l-ll-oo-"('-'代表'blank')映射到 "hello"。然后,条件概率定义为由B映射到l上的所有π的概率之和:




无词典转录(Lexicon-free transcription)
在这种模式下,上式中定义的具有最高概率的序列l∗被作为预测值。并不存在精确找到解决方案的可操作的算法,作者采用的方式是通过l∗≈B(argmax_π p(π|y))近似地找到序列l∗,即在每个时间戳t取最有可能的标签π_t,并将结果序列映射到l∗。

基于词典的转录(Lexicon-based transcription)
在基于词典的模式下,每个测试样本都与一个词典D相关联。基本上,标签序列是通过选择词典中具有最高条件概率的序列来识别的,该概率由上式定义,即l∗=argmax l∈D p(l|y)。可以将我们的搜索限制在最近的邻域候选人N_δ(l'),其中,δ是最大的编辑距离,l'是在无词典模式下从y转录的序列:



可以通过BK-树数据结构寻找候选者Nδ(l'),BK-树是一种专门适用于离散公制空间的公制树(metric tree)。BK-树的搜索时间复杂度为O(log |D|),其中|D|为词典大小。因此,这个方案很容易扩展到非常大的词典。在本文方法中,为一个词典离线构建一个BK-树。然后,通过寻找与查询序列的编辑距离小于或等于δ的序列,用BK-树进行快速的在线搜索。

通过对概率的计算,就可以对之前的神经网络进行反向传播更新。类似普通的分类,CTC的损失函数O定义为负的最大似然,为了计算方便,对似然取对数:




通过对损失函数的计算,就可以对之前的神经网络进行反向传播,神经网络的参数根据所使用的优化器进行更新,从而找到最可能的像素区域对应的字符。这种通过映射变换和所有可能路径概率之和的方式使得 CTC 不需要对原始的输入字符序列进行准确的切分。

对于测试阶段,使用训练好的神经网络来识别新的文本图像。文本事先未知,如果像训练阶段一样将每种可能文本的所有路径都计算出来,在时间步长较长和字符序列较长的情况下,这个计算量是非常庞大的。RNN 在每一个时间步长的输出为所有字符类别的概率分布,即一个包含每个字符分数的向量,取其中最大概率的字符作为该时间步长的输出字符,然后将所有时间步长得到的字符进行拼接以生成序列路径,即最大概率路径,再根据上面介绍的合并序列方法得到最终的预测文本结果。在输出阶段经过 CTC 的翻译,即将网络学习到的序列特征信息转化为最终的识别文本,就可以对整个文本图像进行识别。

项目SOTA!平台项目详情页
CRNN前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/crnn-4


2、 RARE


RARE模型实现对不规则文本的端到端文字识别,RARE由STN(Spatial Transformer Network)和SRN(Sequence Recognition Network)组成,两个网络同时用BP算法进行训练。STN用于对输入的不规则文本进行矫正,得到形状规则的文本作为SRN的输入,SRN是一个基于注意力机制的网络结构,实现sequence to sequence的文本识别。

在测试中,先将一张图像通过Thin-Plate-Spline (TPS)变换成一个正规的、更易读的图像,此变换可以矫正不同类型的不规则文本,包括透射变换和弯曲的文本。TPS变换由一组基准点(fiducial points)表示,坐标通过卷积神经网络回归得到。然后再放入SRN中进行识别。SRN使用序列识别的基于注意力的方法,包含一个编码器和一个解码器。编码器生成一个特征表示序列,即序列的特征向量;解码器根据输入序列循环地生成一个字符序列。这个系统是一个端到端的文本识别系统,在训练过程中也不需要额外标记字符串的关键点、字符位置等。

STN主要包括三个部分:1) Localization network; 2) Grid Generator; 3) Sampler,具体结构如图17所示。其中,Localization network在没有任何标注数据的前提下,基于图像内容定位到基准点的位置。文中该网络结构与传统的CNN网络结构相似:4个卷积层,每个卷积层后接一个2 x 2的max-pooling层,再接2个1024维的全连接层,最后输出为40维的向量。此处的输出为基准点的坐标,设定基准点个数为 k=20。2) Grid Generator和Sampler中,Grid generator估计出TPS变换参数,生成一个采样网格。给定pi′的坐标,计算出pi的坐标。文章固定了基准点在目标图像中的位置,再来计算目标图像中每个坐标的像素值。得到原图中pi的坐标后,在Sampler中,pi坐标附近的像素值已知,通过双线性差值得到pi′坐标的像素值。以此类推,得到最终的目标图像I′。


图9 STN结构


SRN是一个基于注意力的模型,包括encoder和decoder。Encoder由卷积层和BLSTM组成,Decoder由基于注意力机制的GRU(Gated Recurrent Unit)组成,如图18所示。Encoder包含7个卷积层第1、2、4、6个卷积层后均接一个2x2的max-pooling层,卷积层上是一个双层的BLSTM网络,每一个LSTM有256个隐单元。encoder的输出序列为h=(h1,h2,…,hL),其中,L等于卷积层的宽度。decoder根据encoder输出的序列循环地生成目标字符序列。decoder是基于注意力机制的循环网络,此处网络结构采用的GRU是LSTM的一种变体,根据输出不断更新权重α。最后通过softmax函数来计算概率分布,l_t^为概率最高的字符:




SRN直接将一个输入序列映射到另一个序列。输入和输出的序列都可以有任意的长度。它可以只用单词图像和相关文本进行训练。



图10 SRN结构,它由一个编码器和一个解码器组成。编码器使用几个卷积层(ConvNet)和一个两层的BLSTM网络来提取输入图像的顺序表示(h)。解码器生成一个以h为条件的字符序列(包括EOS令牌)

为了训练模型,我们使训练集上的负对数可能性最小化:




RARE采用ADADELTA作为优化算法,收敛速度较快。模型参数是随机初始化的,除了Localization network,其输出全连接层是通过设置权重为零来初始化的。

当测试图像与词典相关联时,即一组供挑选的词,识别过程是挑选具有最高后验条件概率的词:




为了缩小词典集,构造前缀树,如下图:




图11一个由三个词组成的前缀树。"ten"、"tea "和 "to"。识别工作从树根开始。每一步计算所有子节点的后验概率。具有最高概率的子节点被选为下一个节点。这个过程反复进行,直到到达一个叶子节点。边缘上的数字是后验概率。蓝色节点是被选中的节点。在这种情况下,预测的词是 "tea"


项目SOTA!平台项目详情页
RARE前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/rare

前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。 

网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。 

移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
一文搞懂 PO、VO、DAO、BO、DTO、POJO三十一 插秧MIT、Caltech、CMU …USnews工程学院Top20研究生录取率汇总!精选DS岗位 | Walmart、Capital One、Pinterest公司岗位发布!精选DS岗位 | IBM、Tesla、Western Digital发布新岗位!那些过得越来越顺的人,都掌握了这一项能力“互联网”要写成the Internet还是the internet?MGM、MolGPT、PAR、Uni-Mol、K-Bert、MolCLR…你都掌握了吗?一文总结生物制药必备经典模型(三)SiamRPN、SiamMask、UpdateNet、SiamAttn…你都掌握了吗?一文总结目标追踪必备经典模型(二)Netizens Go Crazy For Cockroaches’ Northern Expedition谷歌推出 3个新的云存储选项:Cloud Storage FUSE、Parallelstore 和 NetApp VolumesJournal of Extracellular Vesicles |马聪团队/杨祥良团队在肿瘤外泌体分泌机制领域取得新进展分布式PostgreSQL基准测试:Azure Cosmos DB、CockroachDB和YugabyteDBABCNet、Deep TextSpotter、SEE、FOTS…你都掌握了吗?一文总结OCR必备经典模型(三)Extreme Drinking Claims Another Chinese Livestreamer2023运维技能风向标,这些技能你都掌握了吗?如何能够战无不胜?FT3 ↓、TT3↓, FT4 、TT4 、TSH 正常,要补充甲状腺激素吗?肠镜检查前,如何选择清肠剂?一文总结再投八个亿,谱写新篇章MemNet、AT-LSTM、IAN、AF-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(二)CTPN、TextBoxes、SegLink、RRPN、FTSN、DMPNet…你都掌握了吗?一文总结OCR必备经典模型(一)5082 血壮山河之武汉会战 黄广战役 14精选DS岗位 | Amazon、BlackRock、Tesla、公司岗位发布!After String of Gas Explosions, China Updates Safety Guidelines三十二 肃反On Douyin, Chinese Companies Sell Coal at Rock-Bottom Prices斯坦福三申三录,哥大连中三元,哈耶普斯麻申四录四,斯坦福、MIT、CIT、CMU等九大理工强校理工专业大满贯,是怎么做到的?所有谈判高手,都掌握了这个思维OmegaFold、EquBind、RELATION、BIMODAL…你都掌握了吗?一文总结生物制药必备经典模型(二)Pinterest 使用 Kubernetes 和 Helix 构建下一代异步计算平台 Pacer精选SDE岗位 |Microsoft、Intel、Tesla等公司持续热招!一文总结 MetaQ/RocketMQ 原理精选DS岗位 | Intel、Cvent、Tesla持续热招!CNN、GRNN、CLSTM、TD-LSTM/TC-LSTM…你都掌握了吗?一文总结情感分析必备经典模型(一)
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。