ABCNet、Deep TextSpotter、SEE、FOTS…你都掌握了吗?一文总结OCR必备经典模型(1)

简介: ABCNet、Deep TextSpotter、SEE、FOTS…你都掌握了吗?一文总结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

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

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

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


本期收录模型速览

模型 SOTA!模型资源站收录情况 模型来源论文
ABCNet https://sota.jiqizhixin.com/project/abcnet
收录实现数量:2
支持框架:PyTorch
ABCNet: Real-time Scene Text Spotting with Adaptive Bezier-Curve Network
Deep TextSpotter https://sota.jiqizhixin.com/project/deep-textspotter Deep TextSpotter: An End-to-End Trainable Scene Text Localization and Recognition Framework
SEE https://sota.jiqizhixin.com/project/see-2
收录实现数量:1
支持框架:TensorFlow
SEE: Towards Semi-Supervised End-to-End Scene Text Recognition
FOTS https://sota.jiqizhixin.com/project/fots
收录实现数量:7
支持框架:PyTorch、TensorFlow
Fast Oriented Text Spotting with a Unified Network
End-to-End TextSpotter https://sota.jiqizhixin.com/project/end-to-end-textspotter
收录实现数量:1
An end-to-end TextSpotter with Explicit Alignment and Attention



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

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

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

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




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


一、文字识别模型


1、 ABCNet

ABCNet是一个端到端的可训练框架,用于定向或弯曲的场景文本发现,首次使用参数化的贝塞尔曲线来表示定向或弯曲的文本。ABCNet通过贝塞尔曲线的适应性实现了定向或弯曲场景的文本检测,与标准的矩形边界框检测相比,它引入的计算开销可以忽略不计。此外,设计了一个新颖的特征对齐层—BezierAlign,以精确计算弯曲形状的文本实例的卷积特征,因此可以在不引入很多计算成本的情况下实现高识别精度。


图1 ABCNet框架。使用立方贝塞尔曲线和BezierAlign,利用贝塞尔曲线的检测结果来提取弯曲的序列特征。整个框架是可以端到端训练的,效率很高。紫色的点代表立方贝塞尔曲线的控制


ABCNet的框架如图所示。ABCNet采用single-shot、anchor-free的卷积神经网络作为检测框架。探测是在探测头的输出特征图上密集预测的,它由4个堆叠的卷积层构成,跨度为1,填充为1,核为3×3。ABCNet由三个部分组成,第一部分共享的检测头预测两条贝塞尔曲线的四个顶点以及四个控制点的坐标偏移;第二部分Bezier Align用于对齐特征;第三部分是一个轻量级的识别模块,用于从对齐后的特征中识别出文字。

贝塞尔曲线表示一条以伯恩斯坦多项式为基础的参数曲线c(t)。其定义如下所示:



为了用贝塞尔曲线拟合任意形状的文本,作者从现有的数据集和现实世界中全面观察定向或弯曲的场景文本,并通过经验表明,立方贝塞尔曲线(即n为3)足以拟合不同类型的定向或弯曲的场景文本。如图2所示。


图2立体贝塞尔曲线。bi代表控制点。绿色线条构成控制多边形,黑色曲线是立方贝塞尔曲线。注意,只有两个端点b1和b4,贝塞尔曲线就会退化为一条直线



根据如下公式计算出贝塞尔曲线控制点的坐标。b0—b3 对应一条贝塞尔曲线上四个控制点的坐标其中两个端点坐标已知;p0—pm 对应弯曲边界标注的点的坐标。有2m+2个方程,m+5个未知数,可通过最小二乘法得到方程的解:



为了实现端到端的训练,以前的方法大多采用各种采样(特征对齐)方法来连接识别分支。通常情况下,抽样方法代表了网络内区域裁剪程序。换句话说,给定一个特征图和感兴趣的区域(RoI),使用采样方法选择RoI的特征,并有效地输出一个固定大小的特征图。然而,以前基于非分割的抽样方法,如RoI Pooling、RoIRotate、Text-Align-Sampling或RoI Transform,都不能正确地对齐定向或弯曲文本的特征。通过利用紧凑贝塞尔曲线bounding box的参数化性质,本文提出了BezierAlign的特征取样。

定向或弯曲网格的每一列都与文本的贝塞尔曲线边界正交。采样点在宽度和高度上分别有等距的间隔,这些间隔是相对于坐标而言的双线性插值。形式上,给定一个输入特征图和贝塞尔曲线控制点,同时处理矩形输出特征图的所有输出像素,大小为h_out × w_out。以位置为(g_iw, g_ih)的像素g_i(来自输出特征图)为例,通过以下方式计算t:



根据t可以索引到贝塞尔曲线上下两条边上对应的点,然后根据这两个点的坐标进行线性插值可以索引到这两个点之间所有采样点的位置,以此类推可以得到贝塞尔曲线包围的区域所有采样点的位置坐标。最后根据op ,可以得到双线性插值后的结果:



识别分支由六个卷积层、一个双向LSTM和一个全连接层组成,最终输出分类分数,采用CTC loss用于字符串的对齐。在训练期间,直接使用生成的Bezier曲线GT(Ground truth)来提取RoI特征,因此,检测分支不会影响识别分支。在推理阶段,RoI区域由检测得到的贝塞尔曲线代替。


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

二、端到端方法


1、 Deep TextSpotter

Deep TextSpotter是一个端到端可训练场景文本检测和识别框架,其创新之处在于:在一个单一的端到端通道中对文本检测和识别进行训练,识别CNN的结构及其输入层的几何形状保留了文本的方面并使其分辨率适应数据。

图3方法概述。由区域建议网络( Region Proposal Network)生成文本区域。通过双线性抽样将每个具有足够文本置信度的区域规范化处理为一个可变宽度的特征张量。最后,每个区域都与一连串的字符相关联,或者被判定为非文本而拒绝

Deep TextSpotter在一个给定的场景图像中定位文本区域,并为所有有文本的区域提供文本转录的字符序列。Deep TextSpotter采用的是YOLOv2架构,是因为YOLOv2的准确性较高,而复杂度明显低于标准VGG16架构(完整的VGG-16架构仅仅处理一张224×224(0.05 Mpx)的图像就需要300亿次操作)。使用YOLOv2架构使我们能够以更高的分辨率处理图像,这是文本识别的关键能力---需要以更高的分辨率进行处理,因为1Mpx的场景图像可能包含10个像素高的文本,所以缩小源图像会使文本无法阅读。Deep TextSpotter使用YOLOv2架构中的前18个卷积层和5个最大池层,该架构以3×3卷积滤波器为基础,在每个池化步骤后将通道数量增加一倍,并增加1×1滤波器以压缩3×3滤波器之间的表征。去掉全连接层,使网络完全卷积,所以模型最终层的尺寸为W/32×H/32×1024,其中,W和H表示源图像宽度和高度。

使用区域建议网络(RPN)来生成区域建议,但增加了旋转r_θ,这对成功的文本识别至关重要。在最后一个卷积层的每个位置,该模型预测了k个旋转的bounding boxes,对于每个bounding box r,预测了6个特征—它的位置r_x、r_y,尺寸r_w、r_h,旋转r_θ和分数r_p,它捕捉了该区域包含文本的概率。bounding boxes的位置和尺寸是使用逻辑激活函数对预定义的anchor boxes进行编码的,因此,源图像中实际的bounding boxes位置(x, y)和尺寸(w, h)计算方式如下:



其中,c_x和c_y表示最后一个卷积层中的网格的偏移量,a_w和a_h表示某个anchor box a预定义的高度和宽度。通过r_θ直接预测bounding box的旋转角度θ∈( - π2,π2)。

通过聚合训练集上的kmeans聚类找到合适的anchor box尺度和宽高比。要求IoU具有至少60%的时候,得到k = 14个不同的anchor boxes尺寸。对于每个图像,RPN生成大小为W/32 x H/32 x 6k的bounding box,其中,k是每个位置的anchor box数量,6是预测参数的数量(x,y,w,h,θ和文本分数)。


图4 anchor box的宽度和高度,是通过训练集的K-均值聚类得到的。要求每个ground-truth box与一个anchor box的交集至少达到60%,共k = 14个箱子

在训练阶段,使用YOLOv2方法通过采集源图像中的所有正样本和负样本,其中每20个批次随机将输入维度大小更改为{352,416,480,544,608}中的一个。正样本是与ground-truth结合最高的交叉点的区域,其他交叉区域是负样本。在运行时,作者发现最好的方法是推迟得分r_p高于特定阈值p_min的所有区域,并在识别阶段后推迟非最大值抑制,因为具有非常相似的r_p得分的区域可以产生非常不同的转录,因此在这个阶段选择具有最高r_p的区域并不总是对应于正确的转录。

在前一阶段中检测到的每个区域具有不同的尺寸和旋转角度,因此有必要将特征映射到规范尺寸的张量,这可以用于识别。使用双线性采样将来自源图像的w×h×C区域映射到固定高度wH'/h×H'×C的张量(本文的H '= 32,即固定高度为32)。与标准RoI方法相比,此特征表示具有关键优势,因为它允许网络规范化旋转和缩放,但同时保持单个字符的宽高比和位置。

给定检测到的区域特征U,利用下式将其映射到固定高度张量:


考虑到来自源图像的规范化区域,每个区域都与一连串的字符相关联,或在以下过程中被拒绝为非文本。给定来自源图像的归一化区域,每个区域与字符序列相关联,或者在下面的过程中作为非文本被拒绝。在该步骤中必须解决的问题是,不同大小的文本区域必须被映射到不同长度的字符序列。模型采用如下的网络结构,采用可变宽度特征张量W×H ×C作为输入并输出矩阵W4×| A | ,其中A是字母表(例如所有英文字符)。矩阵高度是固定的(它是字符类的数量),但它的宽度随着源区域的宽度而增加,因此随着预期字符序列的长度而增长。

表2 用于文本识别的全卷积网络

该模型使用CTC将可变宽度特征张量转换为标签序列上的条件概率分布。然后使用该分布为文本区域选择最可能的标记序列。令y = y1,y2,...,yn表示从用空白符号“ - ”扩展的字母A中的长度为n的网络输出的矢量。然后给出路径π的概率为:



进一步定义多对一映射B:A n→A≤n,其中A≤n是长度更短或相等的所有序列的集合。映射B删除所有空白和重复标签,这对应于每次标签预测改变时输出新标签。在训练中,使用最大化目标标记p(w | y)的对数似然的目标函数。在每个训练步骤中,使用类似于HMM训练的前向算法有效地计算小批量中每个文本区域的概率p(w_gt | y),并且使用目标函数导数来更新网络权重,使用标准反向传播算法。在测试时,分类输出w *应该由最可能的路径p(w | y)给出,遗憾的是它不易处理,因此作者采用了最可能的标记的近似方法:

在此过程结束时,图像中的每个文本区域都具有字符序列形式的关联内容,或者当所有标签都为空白时,它被拒绝为非文本。该模型通常对图像中的单个文本区域产生许多不同的方框,因此作者通过基于文本识别置信度的标准非最大值抑制算法来抑制重叠的方框,该置信度是由文本长度归一化的p(w?|y)。

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


2、SEE

SEE是一个端到端的半监督文本检测和识别模型,不需要提供文本检测的 bounding box ,只需要提供正确的 label,然后通过预测误差反向传播修正文本检测结果。SEE使用一个单一的深度神经网络,以半监督的方式学习从自然图像中检测和识别文本。SEE是包括一个定位网络,学习检测图像中的文本区域;以及一个文本识别网络,识别出的文本区域及其文本内容。

图5 SEE由两个主要部分组成。首先是定位网络,它接收输入图像并预测N个变换矩阵,这些矩阵用于创建N个不同的采样网格,采样网格有两种使用方式:(1)计算已识别的文本区域的边界框 ;(2)提取N个文本区域。然后,识别网络对这些提取的区域进行文字识别。整个系统通过只提供每个文本区域的文本标签信息进行端到端的训练

用空间变换器检测文本
SEE使用的空间变换器是DNN的一个可微调模块,它接受一个输入特征图I,并对这个特征图进行空间变换,生成一个输出特征图O。空间变换器模块由三部分组成:第一部分是一个计算函数f_loc的定位网络,它预测要应用的空间转换的参数θ。这些预测的参数在第二部分中被用来创建一个采样网格,它定义了一组应该对输入map进行采样的点。第三部分是一个可微调的插值方法,它采用生成的采样网格,生成空间转换的输出特征图O。

定位网络。定位网络接受输入的特征图I∈R^C×H×W,有C个通道,高度H和宽度W,输出变换参数θ。在系统中,使用定位网络(f_loc)来预测N个二维仿生变换矩阵(A_θ)^n:

其中,N是定位网络应定位的字符、单词或文本行的数量。以这种方式预测的仿生变换矩阵允许网络对输入图像进行翻译、旋转、缩放和倾斜。在SEE中,N个转换矩阵(A_θ)^n是通过使用一个前馈CNN和一个RNN产生的。N个转换矩阵中的每一个都是使用全局提取的卷积特征c和RNN每个时间步长的隐藏状态h_n来计算的。

文中使用ResNet架构的一个变体作为CNN用于定位网络。定位网络中使用的RNN是一个LSTM单元,使用这个LSTM生成隐藏状态h_n,而这些隐藏状态又被用来预测仿生变换矩阵。

旋转Dropout。旋转Dropout的作用是随机dropout负责旋转的仿生变换的参数。这可以防止定位网络输出进行过度旋转的变换矩阵。

网格生成器。网格生成器使用一个有规则间隔的网格G_o,其坐标为y_ho,x_wo,高度为H_o,宽度为W_o。网格G_o与仿生变换矩阵(A_θ)^n一起使用,生成N个规则网格G^n,其坐标为输入特征图I的(u_i)^n、 (v_j)^n:


在推理过程中,可以提取N个结果网格G^n,其中包含定位网络发现的文本区域的bounding box。高度H_o和宽度W_o可以自由选择。

本地化的特定正则器。作者发现增加额外的正则化处理是有益的,这些正则化项会对网格进行惩罚,这些网格会沿着任何轴线进行镜像。作者还发现,该网络倾向于预测在训练过程中变得更大的网格,因此又加入了一个正则化项,根据其面积对大网格进行惩罚。最后,还加入了一个正则化项,鼓励网络预测宽度大于高度的网格,因为文本通常是在水平方向书写的,通常比高度宽。

图像采样器。网格生成器生成的N个采样网格G^n用于在每个n∈N的坐标(u_i)^n、 (v_j)^n处对特征图I的值进行采样。这些点不会总是与输入特征图中的离散值网格完全一致。作者使用了双线性抽样,并将N个输出特征图O_n在给定位置i,j(其中i∈Ho,j∈Wo)的值定义为:


文字识别阶段
文本检测阶段的图像采样器生成一组N个区域,这些区域是从原始输入图像中提取的。文字识别阶段使用这N个不同的区域并利用一个CNN对它们进行独立的处理。这个CNN也是基于ResNet架构的。识别阶段的CNN预测了标签空间L上的概率分布y?,其中L=L∪{ε},L是用于识别的字母表,并代表空白标签。该网络的训练是通过运行LSTM的固定数量的T个时间段,并计算每个时间步长的输出的交叉熵损失。时间步长T是基于数据集中最长的单词的字符数选择的。损失L的计算方法如下:

项目 SOTA!平台项目详情页

SEE

前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/see-2
相关文章
|
17天前
|
编解码 文字识别 测试技术
论文介绍:TextMonkey——面向文本理解的无OCR大型多模态模型
【5月更文挑战第2天】TextMonkey是一款无OCR的大型多模态模型,设计用于高效提取文本信息。它采用Shifted Window Attention和零初始化技术处理高分辨率文档,减少训练成本。通过假设图像中的冗余标记,模型能精简标记并提升性能。TextMonkey还能定位文本答案在图像中的位置,增强可解释性,在场景文本任务和关键信息提取中表现优越,特别是在OCRBench基准测试中刷新记录。然而,它在处理小图像和需要深层推理的任务时仍面临挑战。[链接](https://arxiv.org/abs/2403.04473)
63 5
|
9月前
|
人工智能 文字识别 自然语言处理
Nougat:一种用于科学文档OCR的Transformer 模型
随着人工智能领域的不断进步,其子领域,包括自然语言处理,自然语言生成,计算机视觉等,由于其广泛的用例而迅速获得了大量的普及。光学字符识别(OCR)是计算机视觉中一个成熟且被广泛研究的领域。它有许多用途,如文档数字化、手写识别和场景文本识别。数学表达式的识别是OCR在学术研究中受到广泛关注的一个领域。
183 0
|
17天前
|
人工智能 文字识别 自然语言处理
【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?
2023年12月28-31日,由中国图象图形学学会主办的第十九届CSIG青年科学家会议在中国广州隆重召开,会议吸引了学术界和企业界专家与青年学者,会议面向国际学术前沿与国家战略需求,聚焦最新前沿技术和热点领域,共同探讨图象图形学领域的前沿问题,分享最新的研究成果和创新观点,在垂直领域大模型专场,合合信息智能技术平台事业部副总经理、高级工程师丁凯博士为我们带来了《文档图像大模型的思考与探索》主题报告。
|
17天前
|
文字识别 算法 数据库
开源OCR模型DIY票证信息抽取
票证检测矫正模型在实际生活中有着广泛的需求,例如信息抽取、图像质量判断、证件扫描、票据审计等领等场景,可以大幅提高工作效率和准确性。
|
10月前
|
机器学习/深度学习 编解码 人工智能
ABCNet、Deep TextSpotter、SEE、FOTS…你都掌握了吗?一文总结OCR必备经典模型(2)
ABCNet、Deep TextSpotter、SEE、FOTS…你都掌握了吗?一文总结OCR必备经典模型
426 0
|
10月前
|
机器学习/深度学习 文字识别 固态存储
EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型(一)
EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型
241 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型(二)
EAST、PixelLink、TextBoxes++、DBNet、CRNN…你都掌握了吗?一文总结OCR必备经典模型
440 0
|
17天前
|
文字识别 容器
文字识别OCR常见问题之本地部署如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
|
17天前
|
文字识别 前端开发 API
文字识别OCR常见问题之处理产品图片识别如何解决
文字识别OCR(Optical Character Recognition)技术能够将图片或者扫描件中的文字转换为电子文本。以下是阿里云OCR技术使用中的一些常见问题以及相应的解答。
|
16天前
|
文字识别 JavaScript Java
印刷文字识别产品使用合集之阿里云文字识别OCR demo主要有哪些
印刷文字识别(Optical Character Recognition, OCR)技术能够将图片、扫描文档或 PDF 中的印刷文字转化为可编辑和可搜索的数据。这项技术广泛应用于多个领域,以提高工作效率、促进信息数字化。以下是一些印刷文字识别产品使用的典型场景合集。
156 0

热门文章

最新文章

http://www.vxiaotou.com