深度学习OCR

您所在的位置:网站首页 crnn模型结构 深度学习OCR

深度学习OCR

2023-12-28 09:14| 来源: 网络整理| 查看: 265

前言

现在全行业转上云,很多东西需要变成数字化,离不开 OCR 的帮助,在 OCR 领域,文字需要经过定位再到识别,最终才能转成数字化,下面是在 OCR 很经典的 识别网络 —— CRNN 的论文。

我是 HinGwenWoong,一个有着清晰目标不停奋斗的程序猿,热爱技术,喜欢分享,码字不易,如果帮到您,请帮我在屏幕下方点赞 👍 ,您的点赞可以让技术传播得更远更广,谢谢!

论文原文地址: An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

基于图像序列识别的端到端可训练神经网络及其在场景文本识别中的应用 摘要

基于图像的序列识别是计算机视觉中一个长期的研究课题。在本文中,我们研究了场景文本识别问题,这是基于图像的序列识别中最重要和最具挑战性的任务之一。本文提出了一种新的神经网络结构,它将特征提取、序列建模和转录集成到一个统一的框架中。与以往的场景文本识别系统相比,该体系结构具有四个显著的特点:(1)它是端到端可训练的,而现有的大多数算法都是单独训练和调整的;(2)它能够自如地处理任意长度的序列,不涉及字符分割或水平宽度归一化;(3)它不局限于任何预定义的词库,在无词库和基于词库的场景文本识别任务中都取得了显著的效果;(4) 它生成了一个有效但小得多的模型,这对于实际应用场景更为实用。在 IIIT-5K、街景文本(Street View Text)和 ICDAR 数据集上的实验证明了该算法的优越性。此外,该算法在基于图像的乐谱识别中表现良好,验证了算法的通用性。

1. 介绍

近年来,神经网络在社会上重新得到了认可并蓬勃发展,这主要得益于深度神经网络模型,特别是深度卷积神经网络(DCNN)在各种视觉任务中的巨大成功。然而,最近大多数与深度神经网络相关的工作都致力于目标类别的检测或分类[12,25]。本文研究了计算机视觉中的一个经典问题:基于图像的序列识别。在现实世界中,一个稳定的视觉对象,如场景文本、手写笔迹、乐谱等,往往以序列的形式出现,而不是孤立地存在。与一般的物体识别不同,识别这样的序列状物体通常需要系统预测一系列的物体标签,而不是单个的标签。因此,对这类物体的识别可以自然地归结为序列识别问题。类似序列的对象的另一个独特特性是它们的长度可能会有很大的变化。例如,英语单词可以由2个字符组成,例如 “OK”,也可以由15个字符组成,例如 “congratulations”。因此,像DCNN[25,26]这样最流行的深度模型不能直接应用于序列预测,因为DCNN模型通常操作具有固定维数的输入和输出,因此不能产生可变长度的标签序列。

一些实验已经尝试针对特定的序列(例如场景文本)来解决此问题。例如,在 [35,8] 中的算法首先检测单个字符,然后用DCNN模型识别这些检测到的字符,这个DCNN模型使用的是标记字符的图像来训练的。这种方法通常需要训练一个强大的字符检测器,以便准确地检测和裁剪原始单词图像中的每个字符。其他一些方法(如[22])将场景文本识别视为图像分类问题,并为每个英语单词(总共90K个单词)分配一个标签。最后得到一个很大的训练模型,和大量的类别。这种方式很难推广到其他类类的类序对象,如中文文本、音乐分数等,因为此类序列的基本组合数量可以超过100万。总之,目前基于DCNN的文本识别方式不能直接用于基于图像的序列识别。

循环神经网络(RNN)模型是深层神经网络家族的另一个重要分支,其主要用于处理序列。RNN的优点之一是在训练和测试时都不需要确定序列目标图像中每个元素的位置。然而,将输入对象图像转换为图像特征序列的预处理步骤通常是必不可少的。例如,Graves等人[16]从手写文本中提取一组几何特征或图像特征,Su和Lu[33]则将单词图像转换为连续的HOG(方向梯度直方图)特征。预处理步骤与管道中的后续组件无关,因此现有的基于RNN的网络不能以端到端的方式进行训练和优化。

一些传统的非神经网络场景文本识别方法也给该领域带来了深刻的思想和新颖的表现。例如,Almazan等人[5]和Rodriguez-Serrano等人[30]提出在一个公共向量子空间中嵌入单词图像和文本字符串,并将单词识别转化为检索问题。Yao等人[36]和Gordo等人[14]将 mid-level 特征用于场景文本识别。虽然在标准基准上取得了很好的性能,但这些方法通常优于以前基于神经网络的算法[8,22],以及本文提出的方法。

本文的主要贡献是提出了一种新的神经网络模型,该模型的网络结构是专门为识别图像中的类序列目标而设计的。所提出的神经网络模型被称为卷积循环神经网络(CRNN),因为它是DCNN和RNN的结合。对于类似序列的对象,CRNN比传统的神经网络模型有几个显著的优点:1)它可以直接从序列标签(如单词)中学习,不需要详细的注释(如字符);2) 它与DCNN在直接从图像数据中学习信息表示方面具有相同的特性,既不需要手工特征,也不需要预处理步骤,包括二值化/分割、元素定位等;3) 它具有与RNN相同的性质,能够产生一系列标签;4) 它不受序列对象长度的限制,在训练和测试阶段都只需要高度归一化;5) 与现有技术相比,它在场景文本(文字识别)上实现了更好或具有高度竞争力的性能[23,8];6) 它包含的参数比标准的DCNN模型少得多,占用的存储空间更少。

2. 提出的网络体系结构

如图1所示,CRNN的网络结构由三个部分组成,自下而上包括卷积层、循环层和转录层。 图1

图1。网络体系结构。该结构由三部分组成:1)卷积层,从输入图像中提取特征序列;2) 循环层,预测每帧的标签分布;3) 转录层,将每帧预测转换为最终的标签序列。

在CRNN的底部,卷积层从每个输入图像中自动提取一个特征序列。在卷积网络的基础上,建立了一个循环网络,对卷积层输出的特征序列的每一帧进行预测。采用CRNN顶部的转录层将循环层的每帧预测转化为一个标签序列。尽管CRNN由不同的网络结构(如CNN和RNN)组成,但它可以用一个损失函数联合训练

2.1. 特征序列提取

在CRNN模型中,卷积层的组成部分是通过从标准CNN模型中提取卷积层和最大池化层(去除全连接层)来构造的。该组件用于从输入图像中提取序列特征映射。在图像输入到网络之前,所有的图像都需要缩放到相同的高度。然后从卷积层产生的特征图中提取特征向量序列,作为递归层的输入。具体地说,特征序列的每个特征向量在特征映射图上按列从左到右生成。这意味着第 i 个特征向量是所有映射的第 i 列的级联。在我们的设置中,每列的宽度固定为单个像素。

由于卷积层、最大池化层和元素激活函数在局部区域上运行,它们是平移不变的。因此,特征映射的每一列对应于原始图像的矩形区域(称为感受野),并且这些矩形区域从左到右与特征映射上它们的对应列的顺序相同。如图2所示,特征序列中的每个向量与感受野相关联,并且可以被认为是该区域的图像描述符。

图2

图2。感受野。所提取的特征序列中的每个向量与输入图像上的感受野相关联,并且可以被认为是该感受野的特征向量

深度卷积特征具有鲁棒性、丰富性和可训练性等特点,已被广泛应用于各种视觉识别任务中[25,12]。以前的一些方法已经使用CNN来学习序列类对象(如场景文本)的突出代表[22]。然而,这些方法通常是通过CNN提取整个图像的整体表示,然后收集局部深层特征来识别序列状物体的各个组成部分。由于CNN需要将输入图像缩放到一个固定的尺寸,以满足其固定的输入尺寸,因此它不适合于序列类对象,因为它们的长度变化很大。在CRNN中,我们将深度特征转化为序列表示,以使其对类序列对象的长度变化保持不变。

2.2. 序列标记

在卷积层的顶部建立一个深层双向循环神经网络,作为循环层。循环层预测特征序列 x = x 1 , ⋯ x T x= x_1, \cdots x_T x=x1​,⋯xT​ 中的每个帧 x t x_t xt​ 的标签分布 y t y_t yt​ 文本。循环层的优点有三个方面。首先,RNN具有很强的捕获序列中上下文信息的能力。使用上下文线索进行基于图像的序列识别比单独处理每个符号更稳定和有用。以场景文本识别为例,宽字符可能需要几个连续的帧来完全描述(参见图2)。此外,一些模糊字符在观察上下文时更容易区分,例如通过对比字符高度来识别“il”比单独识别每个字符更容易。第二,RNN可以将误差差反向传播到它的输入端,即卷积层,使我们能够在一个统一的网络中联合训练循环层和卷积层。第三,RNN能够对任意长度的序列进行操作,从开始到结束遍历。

t图3

图3 (a)基本LSTM单元的结构。LSTM由一个单元模块和三个门组成,即输入门、输出门和遗忘门;(b)本文使用的深双向LSTM的结构。将前向(从左到右)和后向(从右到左)LSTM组合在一起会产生双向LSTM。叠加多个双向LSTM会产生一个较深的双向LSTM。

传统的RNN单元在输入层和输出层之间有一个自连接的隐藏层。每次它收到序列中的一个帧 x t x_t xt​ 时,它都会用一个非线性函数更新其内部状态 h t h_t ht​,该函数同时接受当前输入 x t x_t xt​和过去状态 h t − 1 h_{t−1} ht−1​ 作为它的输入: h t = g ( x t , h t − 1 ) h_t=g(x_t,h_{t−1}) ht​=g(xt​,ht−1​) . 然后根据 h t h_t ht​ 进行预测 y t y_t yt​。这样,过去的上下文 { x t ′ } t ′ < t \lbrace x_{t'} \rbrace _{t'Ii​,li​}i​ 表示训练数据集,其中 I i I_i Ii​ 是训练图像, I i I_i Ii​ 是真值标签序列。目标是最小化真值条件概率的负对数可能性: O = − ∑ I i , l i ∈ X log ⁡ p ( l i ∣ y i ) (3) O = - \sum_{I_i,l_i \in X} \log p (l_i | y_i) \tag{3} O=−Ii​,li​∈X∑​logp(li​∣yi​)(3)

其中 y i y_i yi​ 是由 I i I_i Ii​ 的循环层和卷积层产生的序列。此目标函数直接从图像及其基本真值标签序列计算成本值。因此,网络可以在成对的图像和序列上进行端到端的训练,消除了在训练图像中手动标记所有单个组件的过程。

该网络采用随机梯度下降法(SGD)训练。梯度由反向传播算法计算。特别是,在转录层中,如[15]所述,错误差分通过前向-后向算法进行反向传播。在循环层中,采用时间反向传播(BPTT)来计算误差。

对于优化,我们使用ADADELTA[37]自动计算每个维度的学习率。与传统的动量法[31]相比,ADADELTA不需要手动设置学习速率。更重要的是,我们发现使用ADADELTA的优化比动量法收敛更快。

3. 实现

为了评价所提出的CRNN模型的有效性,我们在场景文本识别和乐谱识别的标准基准上进行了实验,这两种场景都是具有挑战性的视觉任务。训练和测试的数据集和配置见第3.1小节。第3.2小节提供了场景文本图像的CRNN的详细设置。综合比较结果见第3.3小节。为了进一步证明CRNN的通用性,我们在一个乐谱识别任务中验证了所提出的算法,见第3.4小节。

3.1 数据集

对于场景文本识别的所有实验,我们使用Jaderberg等人[20]发布的合成数据集(Synth)作为训练数据。这个数据集包含800万个训练图像和它们对应的真值标签。这样的图像是由合成文本引擎生成的,非常逼真。我们的网络只需对合成数据进行一次训练,然后在所有其他真实测试数据集上进行测试,而不需要对其训练数据进行任何微调。尽管CRNN模型是纯用合成文本数据训练的,但它在标准文本识别基准的真实图像上表现得很好。

四个流行的场景文本识别基准用于性能评估,即ICDAR 2003(IC03)、ICDAR 2013(IC13)、IIIT 5k word(IIIT5k)和街景文本(SVT)。

IC03[27]测试数据集包含251幅带有标记文本边框的场景图像。按照Wang等人[34],我们忽略了包含非字母数字字符或少于三个字符的图像,并获得一个包含860个裁剪文本图像的测试集。每个测试图像都与一个50个单词词汇相关联,该词汇由Wang等人定义。[34]。一个完整的词汇库是建立在结合所有的每图像词汇。我们使用了一个5万个单词的词典,它由拼写检查词典中的单词组成[1]。

IC13[24]测试集从IC03继承大部分数据。它包含1015个经过裁剪的单词图片。

IIIT5k[28]包含从互联网上收集的3000个裁剪的单词测试图像。每个图像都与一个50个单词的词典和一个1k单词的词典相关联。

SVT[34]测试数据集由从Google street view收集的249张街景图像组成。从中裁剪出647个单词的图像。每个单词图像都有一个由Wang等人定义的50个单词的词典。

3.2. 实施细则

我们在实验中使用的网络配置总结在表1中。卷积层的体系结构基于VGG VeryDeep体系结构[32]。为了使其适合于识别英语文本,对其进行了调整。在第3层和第4层maxpooling中,我们采用1× 2个矩形池窗口,而不是传统的正方形窗口。这种调整会产生宽度更大的特征映射,因此特征序列更长。例如,包含10个字符的图像通常大小为100×32,从中可以生成25帧的特征序列。这个长度超过了大多数英语单词的长度。除此之外,矩形池窗口产生矩形感受野(如图2所示),这有利于识别具有窄形状的一些字符,例如“i”和“l”。

表1

表1.网络配置摘要。第一排是顶层 ‘k’、‘s’ 和 ‘p’ 分别代表内核大小、步幅和填充大小

该网络不仅具有深卷积层,而且具有循环层。众所周知,两者都很难训练。我们发现批量标准化[19]技术对于这种深度的训练网络非常有用。在第5和第6卷积层之后分别插入两个批量归一化层。使用批量规范化层,大大加快了训练过程。

我们在Torch7[10 ]框架内实现网络,并为LSTM单元(在Torch7/CUDA中)、转录层(C++)和BK树数据结构(C++)中的自定义实现。实验在2.50GHz 的Intel® Xeon® E5-2609 CPU、64GB RAM 和NVIDIA® Tesla™ K40 GPU 的工作站上进行。用 ADADELTA 训练网络,设置参数 ρ \rho ρ 至0.9。在训练过程中,所有图像都会缩放到 100×32 以加快培训进程。培训过程需要大约50小时才能达到收敛。测试图像的缩放高度为32。宽度与高度成比例缩放,但至少为100像素。在没有词典的IC03上测试的平均时间为 0.16秒/样本。对IC03的50k词库进行近似词库搜索,参数 δ \delta δ 取3,每个样本平均测试0.53秒。

3.3. 比较评价

表2显示了所提出的CRNN模型和最新技术(包括基于深度模型的方法)获得的上述四个公共数据集的所有识别精度[23,22,21]。

表2

表2.四个数据集的识别精度(%)。第二行,“50”、“1k”、“50k”和“Full”表示所使用的词汇,“无”表示没有词汇的识别(*[22]严格意义上,它的输出被限制在90k字典中,因此严格意义上是不自由的)

在词汇受限的情况下,我们的方法始终优于大多数最先进的方法,并且平均优于[22]中提出的最佳文本阅读器。具体来说,我们在IIIT5k上获得了优异的性能,而SVT与[22]相比,仅在IC03上获得了较低的性能,并且具有“完整”词汇。注意,[22]中的模型是在一个特定的字典上训练的,即每个单词都与一个类标签相关联。与[22]不同的是,CRNN不局限于识别已知词典中的一个单词,并且能够处理随机字符串(如电话号码)、句子或其他脚本(如汉语单词)。因此,CRNN的结果在所有的测试数据集上都是有竞争力的。

在无约束词典的情况下,我们的方法在SVT上取得了最好的性能,但是在IC03和IC13上仍然落后于一些方法[8,22]。请注意,表2“无”列中的空白表示这种方法在没有词典的情况下无法应用于识别,或者没有报告在无约束情况下的识别精度。我们的方法只使用带有单词级标签的合成文本作为训练数据,这与PhotoOCR[8]非常不同,PhotoOCR[8]使用790万个带有字符级注释的真实单词图像进行训练。文献[22]报道了在无约束词典情况下的最佳性能,这得益于它的大词典,然而,它不是前面提到的对词典严格无约束的模型。从这个意义上说,我们在无约束词汇情况下的结果仍然是有希望的。

为了进一步了解该算法相对于其他文本识别方法的优势,我们对E2E序列、Conv-Ftrs、无字符、无约束和模型大小等特性进行了综合比较,如表3所示。

表3

表3.各种方法的比较。比较属性包括:1)端到端可培训(E2E Train);2) 使用直接从图像中学习的卷积特征,而不是使用手工制作的特征(Conv-Ftrs);3) 在训练期间不需要字符的真实边界框(CharGT-Free);4) 不局限于预定义词典(无约束);5) 模型尺寸(如果使用端到端可训练模型),通过模型参数的数量(模型尺寸,M代表百万)测量。

E2E Train: 本专栏旨在展示某个文本阅读模型是否可以进行端到端的训练,无需任何预处理或通过几个单独的步骤,这表明这种方法对于训练来说是优雅和干净的。从表3可以看出,只有基于深度神经网络(包括[22,21]和CRNN)的模型才具有这种特性。

Conv Ftrs: 本专栏旨在说明一种方法是直接使用从训练图像中学习的卷积特征,还是使用手工特征作为基本表示。

CharGT-Free: 此列用于指示字符级注释是否是训练模型所必需的。由于CRNN的输入和输出标签可以是一个序列,因此不需要字符级注释。

Unconstrained: 此列用于指示训练模型是否被约束到特定词典,无法处理词典外的单词或随机序列。请注意,尽管最近通过标签嵌入[5,14]和增量学习[22]的模型取得了高度竞争性的性能,但它们被约束到特定词典。

Model Size: 此列用于报告学习模型的存储空间。在CRNN中,所有层都有权重共享连接,不需要完全连接的层。因此,CRNN的参数数量远少于CNN变体上学习的模型[22,21],导致模型比[22,21]小得多。我们的模型有830万个参数,只需要33MB RAM(每个参数使用4字节单精度浮点),因此可以很容易地移植到移动设备上。

表3详细地展示了不同方法之间的差异,并充分展示了CRNN相对于其他竞争方法的优势。

此外,为了测试参数 δ \delta δ的影响,我们在公式2中实验了不同的 δ \delta δ值。在图4中,我们将识别精度绘制为 δ \delta δ的函数。 δ \delta δ越大,候选词越多,因此基于词典的转录就越准确。另一方面,由于BK树搜索时间较长,以及测试的候选序列数目较多,计算量随着 δ \delta δ的增大而增大。在实践中,我们选择 δ = 3 \delta=3 δ=3作为精度和速度之间的折衷。

图4

图4.蓝线图:作为函数参数 δ \delta δ的识别精度。红色条:每个样本的词典搜索时间。在具有50k词典的IC03数据集上进行测试。

3.4 乐谱识别

一个乐谱通常由排列在横线上的一系列音符组成。在图像中识别乐谱被称为光学音乐识别(OMR)问题。以前的方法通常需要图像预处理(主要是二值化)、线条检测和单个音符识别[29]。我们将OMR问题转化为一个序列识别问题,并用CRNN直接从图像中预测出一个音符序列。为了简单起见,我们只识别音高,忽略所有和弦,并假设所有乐谱的主音阶(C大调)相同。

据我们所知,目前还没有用于评估基音识别算法的公共数据集。为了准备CRNN所需的训练数据,我们收集了文献[2]中的2650幅图像。每幅图像都包含一个包含3到20个音符的乐谱片段。我们为所有图像手动标记真值标签序列(非EzPitchs序列)。对采集到的图像进行旋转、缩放和噪声处理,并用自然图像代替背景,使其扩展到265k个训练样本。为了进行测试,我们创建了三个数据集:1)“Clean”,其中包含从[2]收集的260个图像。示例 如图5.a 所示;2) “合成”,它是从“Clean”创建的,使用上述增强策略。它包含200个样品,其中一些 如图5.b 所示;3) “真实世界”,里面有200张用手机摄像头从音乐书中提取的乐谱片段的图片。示例 如图5.c 所示。

图5

图5.(a)从[2]收集的干净乐谱图像(b)合成乐谱图像(c) 用手机相机拍摄的真实世界的分数图像。

由于我们拥有有限的训练数据,我们使用一个简化的CRNN配置,以减少模型容量。与选项卡中指定的配置不同。1,移除第4和第6卷积层,并且用2层单向LSTM替换2层双向LSTM。该网络基于图像对和相应的标签序列进行训练。采用两种方法来评价识别性能:1)片段准确率,即正确识别分数片段的百分比;2) 平均编辑距离,即预测的基音序列和基本事实之间的平均编辑距离。为了进行比较,我们评估了两种商用OMR引擎,即Capella扫描引擎[3]和PhotoScore引擎[4]。

表4总结了研究结果。CRNN的性能大大优于两个商用系统。Capella扫描和PhotoScore系统在干净的数据集上表现相当好,但在合成和真实数据上表现明显下降。其主要原因是它们依赖于稳健的二值化来检测行和笔记,但是由于光照条件差、噪声破坏和背景杂乱等原因,二值化步骤在合成数据和真实数据上往往失败。另一方面,CRNN使用的卷积特征对噪声和失真具有很强的鲁棒性。此外,CRNN中的递归层可以利用分数中的上下文信息。每个音符不仅能被自己识别,也能被附近的音符识别。因此,一些音符可以通过与附近的音符进行比较来识别,例如:对比它们的垂直位置。

表4

表4.我们收集的三个数据集上CRNN和两个商用OMR系统的基音识别精度比较。性能通过片段精度和平均编辑距离(“片段精度/平均编辑距离”)来评估。

结果表明,CRNN具有通用性,它可以很容易地应用于其他基于图像的序列识别问题,只需要最少的领域知识。与Capella扫描和PhotoScore相比,基于CRNN的系统还处于初级阶段,缺少很多功能。但它为OMR提供了一种新的方案,在基音识别方面表现出了良好的性能。

4. 总结

本文提出了一种新的神经网络结构,称为卷积循环神经网络(CRNN),它综合了卷积神经网络(CNN)和循环神经网络(RNN)的优点。CRNN能够获取不同尺寸的输入图像,并生成不同长度的预测。它直接在粗略级别的标签(例如单词)上运行,在训练阶段不需要对每个元素(例如字符)进行详细的注释。此外,由于CRNN放弃了传统神经网络中使用的完全连通层,因此得到了更紧凑、更有效的模型。这些特性使得CRNN成为基于图像的序列识别的一种很好的方法。

在场景文本识别测试平台上的实验结果表明,与传统方法以及其他基于CNN和RNN的算法相比,CRNN具有更好的识别性能。这证实了该算法的优越性。此外,在光学音乐识别(OMR)的基准测试中,CRNN显著优于其他竞争对手,验证了CRNN的通用性。

实际上,CRNN是一个通用的框架,因此它可以应用于其他领域和问题(如汉字识别),包括图像序列预测。进一步加快CRNN的速度,使其在实际应用中更加实用,是今后值得探索的另一个方向。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3