手写文本识别在近年来随着深度学习及其应用的兴起而快速发展。尽管深度学习方法在文本识别性能上提供了显著的提升,但是即使在小幅改变预处理或架构/优化元素时,也能检测到性能的非微不足道的偏差。
这项工作遵循“最佳实践”的推理方式;强调简单而有效的实证实践,这些实践可以进一步帮助训练并提供性能优越的手写文本识别系统。
具体来说,作者考虑了深度HTR系统的三个基本方 面,并提出了一些简单而有效的解决方案:
在预处理步骤中保持图像的宽高比;
使用最大池化将CNN输出的3D特征图转换为一组特征序列;
通过额外的CTC损失辅助训练过程,该损失在最大池化的顺序特征上起到捷径的作用。
使用这些提出的简单修改,在考虑基本的卷积-循环>(CNN+LSTM)架构时,人们可以在IAM和RIMES数据集上获得接近最先进的结果。 代码: 。
1 Introduction
手写文本识别(HTR)是一个活跃的研究领域,它结合了计算机视觉和自然语言处理的思想。与机器打印文本的识别不同,手写文本与许多独特特性相关联,这使得这项任务比传统的光学字符识别(OCR)要复杂得多。手写识别的挑战性主要源于个体之间潜在的高度书写变异性。为此,除了将图像视觉解码成字符序列外,一些HTR研究还采用了语言模型来减少手写字符固有的模糊性,利用上下文和语义信息。
通常,设计一个有效且具有泛化能力的学习系统是一个持续的挑战,在不同学习到的书写风格之间的迁移性在大多数情况下并不是理所当然的。在各种各样的学习系统中,神经网络(NNs)很早就已被用于手写识别,其应用范围从较简单的子任务如单个数字识别到完整的、无约束的离线手写文本识别(HTR)。随着深度学习及其应用的兴起,近年来HTR的发展主要集中在深度神经网络(DNNs)上。Graves等人[9]的开创性工作在HTR应用中深度学习的崛起中发挥了关键作用,因为他们实现了在不假设任何先验字符分割的情况下训练循环网络。随后大量针对HTR的工作基于Graves等人的研究,以训练现代且显著有效的DNNs。
这项工作专注于寻找构建现代手写文本识别(HTR)系统的最佳实践。作者探索了一系列用于训练HTR深度神经网络(DNN)的指导原则,重新审视并扩展了作者之前几项工作的想法。作者从一个相当普遍的用于HTR的深度网络架构开始,包括一个卷积神经网络(CNN)主体和一个双向长短时记忆网络(BiLSTM) Head ,并且作者提出了一些简单而有效的架构和训练选择。这些最佳实践建议可以分类和总结如下:
预处理: 保持图像的宽高比,并使用填充图像的批次,以便有效地使用小批量随机梯度下降(SGD)。
架构方面: 用最大池化步骤替换卷积神经网络主干和循环头之间的列向连接步骤。这样的选择不仅减少了所需的参数,而且具有直观的动机:作者只关心字符的存在,而不是它的垂直位置。
训练:在CNN主干网络的输出处添加一个额外的捷径分支,该分支由单个一维卷积层组成。这个分支导致了一个额外的字符序列估计,它与循环分支并行训练。两个分支都使用CTC损失。这种选择的动机源于训练循环层难度的增加。然而,如果存在如此直接的捷径,那么CNN主干的输出应该会收敛到更具辨识性的特征,这对于充分利用循环层的能力来说,相比于端到端训练方案是更为理想的。
本文的贡献在实验部分得到了最好的体现,尽管所使用的网络简单,但作者通过前述选择取得了最先进的结果。此外,其他现有最先进的方法提出了与作者的方法正交的复杂架构和增强方案,这也突显了所建议最佳实践的重要性。
2 Related Work
正如计算机视觉中大多数(如果不是全部)任务的情况一样,现代手写文本识别(HTR)文献以基于神经网络的方法为主。循环神经网络(RNN)已经成为基准[15, 21],因为它们天然适合手写顺序的特性。
基于循环的方法实际上已经超越了以前的艺术水平,后者主要基于隐马尔可夫模型(HMM)方法。自从引入标准的循环网络范式[6, 7]以来,许多关键性进展为高效的汉字识别(HTR)系统铺平了道路。一个典型的例子是将长短期记忆模型(LSTMs)集成到HTR系统中[10],有效地解决了梯度消失问题。更重要的是,Graves等人[9]引入了一种非常有效的算法,用于通过动态编程训练基于序列损失的HTR系统。特别是,这种连接主义时间分类(CTC)方法及其相应的输出层[8],一个可微分的输出层,它将序列输入映射到每个时间单位的softmax输出,允许在适当的解码方案下同时进行序列对齐和识别。多维循环网络已被考虑用于HTR[15],然而有人批评额外的计算开销可能不会转化为效率的相应提高[21]。
尽管在本工作中作者将仅关注基于CTC训练网络的贪心解码,但对解码方案的研究也是活跃的[4],其中束搜索算法是一种流行的方法,能够利用外部词汇作为隐含的语言模型。
序列到序列的方法通常涉及到将一个输入序列转换成一个不同长度的输出序列,在自然语言处理中取得最先进的结果后变得非常流行,并逐渐发展成带有注意力机制的Transformer网络[29]。这类方法后来成功地被HTR社区采用[3, 19, 25, 27, 30]。
近期的研究方向包括复杂的增强方案([14, 16, 31]),新型的网络结构/模块(例如 Seq2Seq/Transformers,空间变换网络[5],可变形卷积[24])以及具有辅助训练输入的多任务损失(例如 n-gram训练[28])。
3 Proposed HTR System
以下,作者将详细描述所 Proposal 的手写文本识别(HTR)系统,并重点介绍建议的最佳实践修改。所描述的系统接受单词或行图像作为输入,然后根据无约束的贪心CTC解码算法[8]返回预测的字符序列。
Preprocessing
预处理步骤应用于每一张图像,包括如下:
所有图像都被调整为线条图像的像素或像素的分辨率。初始图像通过使用图像中值(通常是零)进行填充,以便达到上述固定的尺寸。如果初始图像大于预定义的大小,图像将被重新缩放。填充选项旨在保留文本图像的现有宽高比。
在训练过程中,执行图像增强。每个图像上都应用了一种简单的全局仿射增强,仅考虑小幅度内的旋转和倾斜以生成有效的图像。此外,还对图像添加了高斯噪声。
每个单词/行的转录前后都添加了空格,即把 "He rose from" 改变为 " He rose from "。此操作旨在帮助系统在训练阶段适应大多数图像中存在的边缘空间。在测试阶段,这些额外的空格将被丢弃。
增强操作是每个现代深度学习系统的一部分,并且可以持续提供性能提升,从而实现更好的泛化能力[21]。所使用的增强方案非常基础,试图使这一步骤的开销最小化。
在转录中增加额外的空格并没有明确地参考最近的现有工作,但这是直观的,鉴于第1步中的填充操作生成了较大的空白边缘。这个步骤对作者系统有轻微但积极的影响,因此被作为一个步骤添加。由于这一步骤在整个性能中的重要性降低,因此在实验部分没有进行探讨。
另一方面,作者发现填充操作在许多设置中都是至关重要的。在许多最近的文本识别/检测工作中遇到的一个典型权衡是关于输入大小的定义:使用预定义的固定大小可以辅助卷积神经网络(CNNs)的建筑设计及训练时间的要求,而通过单独处理每张图像(例如[26])保留初始图像大小可能会以牺牲小批量选项为代价带来更好的性能。
现代深度神经网络训练依赖于创建包含多幅图像的批次,因为批量处理图像可以显著地通过充分利用GPU资源来影响训练时间。因此,在涉及深度神经网络(DNN)的任何视觉问题中,图像大小调整通常是一个广泛使用的首要步骤。相反,当处理大小不同的图像时,如果逐一处理每幅图像,并在预定义数量的图像之后更新网络的权重,就像处理了一个批次一样,这会导致即使是轻量级的DNN也出现不切实际且耗时的训练过程,使得现有硬件未能充分利用。
在这项工作中,与大多数现有方法相反,作者提出了一种简单而优雅的解决方案:作者旨在保持图像的宽高比,同时将它们组织成批处理。如果可能的话,图像在不改变尺寸的情况下转换为相同的预定义形状。具体来说,如果图像尺寸小于预定义尺寸,作者会相应地填充图像。填充操作在每个方向上均匀进行,将原始图像置于新图像的中心,使用固定值,即初始图像的中值。如果图像大于预定义尺寸,它将被调整大小,这会影响宽高比。为了辅助所提出的方法,作者可以计算初始图像集的平均高度和宽度,并选择一个合适的尺寸,以很少进行上述调整大小操作(仅对非常大的单词/句子)从而避免由于频繁违反宽高比而产生的变形。
Network Architecture
作者将要用来测试所提出技术的模型可以被描述为一个卷积-循环架构(架构概览如图1所示)。卷积-循环架构可以广泛定义为卷积 Backbone 网络后面跟着一个循环 Head ,通常连接到CTC损失。卷积-循环的变体已经为HTR [5, 21] 常规性地提供了非常好的结果。
3.1.2 Convolutional Backbone:
在作者的模型中,卷积 Backbone 网络由标准卷积层和ResNet块[12]组成,并穿插了最大池化和dropout层。特别是,第一层是一个卷积,输出32个通道,随后是一系列的ResNet块[12]级联:2个输出通道为64的ResNet块,4个输出通道为128的ResNet块以及4个输出通道为256的ResNet块。标准卷积和ResNet块后面都跟着ReLU激活函数、批量归一化和dropout。在块级联之间,作者用步长为2的最大池化操作缩小产生的特征图,如图1所示。总体上,卷积 Backbone 网络接受一行图像并输出一个尺寸为的张量(例如,在行图像的情况下,张量的尺寸为)。
3.1.3 Flattening Operation:
卷积 Backbone 网的输出应该被转换成一系列特征序列,以便由循环神经网络进行处理。典型的手写文本识别(HTR)方法,假设采用按列处理的方式(朝向书写方向),以理想地模拟逐字符处理。在作者的工作中,通过列向的最大池化操作来展平CNN的输出。如果使用广泛应用的连接操作来展平提取的特征图,将得到长度为的特征向量序列,其特征向量大小为,而最大池化则会产生大小为的缩减特征向量。除了明显的计算优势之外,列向最大池化还能使模型在垂直方向上具有平移不变性。实际上,最大池化的背后的原理是,作者只关心特征的存在,而不关心其具体位置。
3.1.4 Recurrent Head:
循环组件由3个堆叠的双向长短时记忆(BiLSTM)单元组成,隐藏层大小为256。这之后是一个线性投影层,将序列转换成与可能的字符标记数相等的大小,即 (包括由CTC要求的空字符)。循环部分的最终输出可以通过应用softmax操作转换成一系列概率分布。在评估过程中,前面提到的贪心解码是通过在每一步选择概率最高的字符,然后从结果序列中移除空字符来执行的[8]。
Training Scheme
HTR系统的训练是通过Adam[13]优化器进行的,初始学习率为0.001,并逐步使用多步调度器降低。总的训练轮次为240,调度器在120和180轮次时将学习率降低10倍。
这个优化方案经过少量修改后,通常用于HTR系统。然而,作者假设了一种端到端的训练方法,其中系统的卷积和循环部分都通过最终的CTC损失进行优化。尽管这种典型方法能够产生表现良好的解决方案,但LSTM Head 可能会阻碍整个训练过程,因为循环模块已知会表现出收敛困难。
为了绕开这一训练障碍,作者引入了一个辅助分支,如图1所示。作者将这个额外的模块称为“CTC快捷通道”。以下,作者将详细描述这个模块及其功能。
3.3.1 CTC shortcut:
在架构方面,CTC捷径模块仅包含一个1D卷积层,其核大小为3。其输出通道数等于可能的字符标记数()。因此,这个1D卷积层直接负责编码上下文信息,并提供一条替代的解码路径。请注意,作者力求这个辅助组件简单化,因为其目的是辅助主分支的训练,因此对于这项任务来说,仅有一层的浅卷积部分是理想的。作者不期望CTC分支能产生精确的解码结果。
CTC捷径与主架构一同通过添加两个分支相应的CTC损失并赋予适当的权重来使用多任务损失进行训练。具体来说,如果表示卷积 Backbone ,表示循环部分,而表示所提出的捷径分支,同时是输入图像,是其相应的转录,那么多任务损失可写为:
由于CTC捷径仅作为一条辅助训练路径,其权重被设置为0.1,以减少它对整体损失的相对贡献。
这个额外分支背后的动机非常简单:通过直接的1D卷积路径,在CNN主干网络的顶部快速生成判别性特征,辅助整体收敛,从而简化循环部分的训练任务。由于其面向训练的辅助性质,CTC捷径仅在训练期间使用,在评估时省略。因此,这个提出的捷径在推理过程中不会引入任何额外开销。
实验评估
Our experimental evaluation aims to answer the following questions:
作者的实验评估旨在回答以下问题:
- How effective is our method in terms of accuracy and runtime?
作者的方法在准确性和运行时间方面有多有效? 2. Can our method outperform state-of-the-art methods on various datasets?
作者的方法能否在各种数据集上超越现有最先进的方法? 3. How does our method compare with respect to different metrics such as precision, recall, and F1 score?
作者的方法在不同指标(如精确度、召回率和F1分数)方面表现如何?
We conduct extensive experiments on multiple datasets and compare our approach with several baselines. The results demonstrate that our method achieves competitive performance in terms of accuracy while maintaining a reasonable runtime.
作者在多个数据集上进行了广泛的实验,并将作者的方法与几个 Baseline 方法进行了比较。结果表明,在保持合理的运行时间的同时,作者的方法在准确性方面取得了具有竞争力的表现。
The following tables present the quantitative results of our method compared with the baseline methods. As can be seen, our method outperforms the baselines in most cases, especially in terms of the F1 score.
下表展示了作者的方法与 Baseline 方法的定量结果比较。可以看出,在大多数情况下,作者的方法超过了 Baseline ,特别是在F1分数方面。
Table 1: Comparison of accuracy, precision, recall, and F1 score on Dataset A.
表1:在数据集A上准确度、精确度、召回率和F1分数的比较。
Our method also shows better runtime performance, as shown in the following figure.
作者的方法在运行时间性能上也表现得更好,如下所示。
Figure 2: Runtime comparison of different methods on various datasets.
图2:不同方法在各种数据集上的运行时间比较。
In conclusion, our experimental evaluation shows that our method is effective and efficient for the task at hand.
总之,作者的实验评估表明,作者的方法对于当前任务既有效又高效。
对所提出系统的评估是在两个广泛使用的数据集上进行,分别是IAM [18]和Rimes [11]。在具有挑战性的IAM数据集上进行了消融研究,该数据集包含来自657位不同作者的手写文本,并按作者独立的方式划分为训练/验证/测试集(作者使用了与[21]中相同的集划分方式)。所有实验遵循相同设置:使用无词典约束的自由贪婪CTC解码方案进行行 Level 或词 Level 的识别。在所有情况下报告字符错误率(CER)和词错误率(WER)指标(值越低越好)。
Ablation Study
首先,作者探讨了所提出修改对IAM数据集的验证集和测试集的影响。此外,作者考虑了行级识别(表1)和词级识别(表2)。具体来说,作者研究以下情况下的性能差异:1) 使用调整大小或填充(保持宽高比情况)的输入图像,2) 在卷积 Backbone 网络和循环 Head 之间使用最大池化连接的展平操作,以及3) 在训练过程中是否使用CTC快捷方式。
以下是可以作出的观察:
保持图像的长宽比(填充选项)在大多数情况下可以实现更好的结果。
通过最大池化进行展平操作不仅更具成本效益,而且对性能有积极影响。这在行级识别设置中更为明显。
使用CTC捷径模块进行训练在所有情况下都能显著提高性能。例如,在行 Level 识别中,当采用CTC捷径方法时,考虑不同展平操作之间的性能显著差异会大幅度减小(例如,对于填充的行 Level 识别,WER性能差异从1.79%下降到仅有0.05%)。这表明初始性能差异主要归因于训练难度(拼接版本需要管理一个更大的特征向量)。需要注意的是,尽管主网络的性能显著提高,但评估CTC捷径分支的解码效果较差。例如,假设行 Level 识别以及填充/最大池化设置,作者在验证集上报告了5.26%的CER/19.76%的WER,在测试集上则为7.36%的CER/25.66%的WER。
同时应用这三种修改可以在所有设置和指标上实现最佳结果。
单词识别在WER(词错误率)指标上报告的结果与行 Level 识别相比有所改进。这在意料之中,因为单词 Level 的设置假设单词分割是完美的。有趣的是,这对于CER(字符错误率)指标来说并非如此。这可以通过缺乏足够上下文来解释(即从整行信息中找到一个首都字母或标点符号)。
作者进一步深入探讨了CTC捷径选项,它似乎能最大限度地提升性能。具体来说,作者在训练过程中报告了行级识别设置下损失以及CER/WER指标(在验证集上)的进展情况。损失曲线如图2所示,而验证集的评价指标则在图3中报告。正如作者所看到的,损失曲线相似,但采用CTC捷径的情况表现出略好的行为。CTC捷径的影响在CER/WER曲线中更为明显,因此当模型伴随CTC捷径进行训练时,预期会得到泛化能力更强的解决方案。
Comparison to State-of-the-Art Systems
表2:针对IAM数据集的词级识别结果:探索所提出修改的影响。
最终,作者在表3中比较了作者的方法与几种现有最先进的方法。所报告的方法遵循相同的设置:无需词典的行级识别。提出的Handwriting Text Recognition(HTR)系统及建议的修改,其表现与最佳方法相当。值得注意的是,尽管许多报告的方法提出了新颖的元素以进一步提高性能,这些元素通常与作者的方法正交,但该系统在两个数据集和指标上仍优于大多数现有工作。例如,Chowdhury等人[3]的工作在采用序列到序列方法时为RIMES数据集展示了更好的WER(Word Error Rate,单词错误率)(这样的模型可以产生更高的WER,因为可以学习到隐含的语言模型[25]),而作者的前期工作[24]在采用类似网络(最大池化展平和填充输入图像)以及可变形卷积和后处理不确定性降低算法时,为IAM数据集实现了更好的CER(Character Error Rate,字符错误率)。
图3:在训练阶段,有(无)额外的CTC捷径分支时,基于CER(左)和WER(右)指标的手写文本识别(HTR)性能表现。所报告的曲线对应于所 Proposal 的行级HTR系统,该系统在IAM数据集上训练并在验证集上进行评估。
此外,罗等人最近的工作[16]通过使用STN组件和一种复杂的增强方法,在IAM数据集上的单词 Level 识别设置中超越了作者的方法,其中学习到了“最优”的增强。具体来说,在作者的方法中,达到了5.14%的字符错误率(CER)/ 14.33%的词错误率(WER),而罗等人对于完全相同的设置则达到了5.13%的CER / 13.35%的WER。尽管如此,他们最初的基础网络,在移除了所有额外模块(这些模块可以毫无问题地添加到所提出的架构中)后,表现较差:7.39%的CER和19.12%的WER。
总体而言,作者仅通过使用一种典型的卷积-循环架构以及一系列简单但直观且有效的修改,就在IAM行级识别中取得了非常具有竞争力的结果(优于其他现有的无需词典的方法),形成了一套有效的最佳实践建议,这些建议可以应用于大多数手写文本识别系统。
5 Conclusions
在本文中,作者提出了一系列针对使用CTC损失训练的典型卷积-循环网络的 最佳实践改进。除了基于残差块提出了一种相当紧凑的架构外,作者还展示了三个有影响力的改进:
- 通过填充操作保持批量收集的输入图像的宽高比;
- 在典型手写文本识别(HTR)架构的卷积主干和循环 Head 之间应用列状最大池化操作,以减少计算努力并提高性能;
- 在训练过程中通过CTC捷径增强性能,以绕过在多种设置中已被证明“难以”训练的循环网络端到端的训练。
所有提出的改进都被证明非常有帮助,显著提高了基本网络的性能。总的来说,所提出的系统在达到最先进成果的同时,与大多数现代深度学习模块和方法正交。
参考
[1].Best Practices for a Handwritten Text Recognition System.