杨晓龙,高红梅,高定国,达 措
(西藏大学 信息科学技术学院,西藏 拉萨 850000)
在敦煌藏经洞出土的文献中,藏文文献的数量仅次于汉文。这些古籍是研究吐蕃统治时期西藏文明、藏汉关系的重要资料,对开拓藏学研究具有很高的学术价值[1]。出土的古籍仅有少部分古籍图像较为清晰且保存完整,大多数古籍具有纸张风化、污渍和霉变等问题,对文字识别工作造成背景干扰、文字模糊和手写风格不一等难点和挑战。文献中的藏文文字属于古藏文,与现代藏文乌金体类似[2]。目前敦煌藏文文献整理工作多数以图像扫描形式保存,不利于文献的检索研究,需要进一步的整理和数字化。
早期的藏文识别工作多以印刷体识别为主,以不同方法进行特征提取、分类和识别[3-4]。在二十一世纪初,传统藏文识别方法发展迅速并取得了许多优异的成果。清华大学丁晓青教授团队提出基于统计模式的多字体藏文识别方法[5],该方法综合使用方向线素、LDA压缩降维和分类器,在不同质量的多字体数据集上达到99.79%的识别率。以清华大学为主研制的TH-OCR系列软件大幅度提高了藏文录入工作的效率和质量。西藏大学欧珠教授团队随后提出了一系列在干扰条件下提高文字识别系统识别率的方法[6],包括自适应阈值二值化算法、行/单字切分方法、基于网格的模糊笔划及轮廓特征提取等。西北民族大学王维兰教授团队[7]提出基于部件位置的藏文字符识别方法,在缺乏大量训练样本的情况下,指定数据库的单部件字符识别率为98.4%,多部件字符识别率为97.2%。传统的识别方法的识别对象主要为现代印刷体文献,对藏文手写体古籍文献识别率不高。随着深度学习技术的发展,藏文文字识别在手写体识别任务上取得了不错的成果。青海师范大学黄鹤鸣教授团队建立了基于脱机手写的乌金体藏文字丁数据库THCDB,并在该数据库上进行了初步的识别研究,为脱机手写藏文识别的进一步研究提供了基准[8]。中科院马龙龙研究员团队着力研究联机手写藏文识别,针对数据库建立问题,提出了基于部件及结构位置信息的半自动标注方法[9]。针对联机手写体识别问题,该团队结合多上下文融合方法研究基于音节字的藏文识别,在包含827个类别的藏文数据库上获得了81.3%的音节字识别率[10]。为了降低采样成本,王维兰教授团队提出了一种基于部件组合的“藏文-梵文”手写样本生成方法[11],解决了样本数量少及多样性的问题。该团队先后提出基于CNN的字丁识别算法[12],有效利用基线信息[13],解决了多类别字符识别问题,并提高了藏文字符识别的准确率,依此开发了藏文古籍识别系统。西安电子科技大学黄婷[14]首次采用CRNN网络用于手写体藏文字丁的识别任务,提出CRNN与注意力相结合的方法,在有限训练样本中的字丁识别准确率达到了92%。西藏大学仁青东主[15]构建了基于残差网络和双向长短时记忆循环神经网络的模型,使用基于滑动窗的行识别技术,解决了粘连文字识别和长文本行识别问题。目前这种两阶段式的识别方法较为普遍: 首先对文字区域进行检测,然后把检测区域的文字图片识别为文字内码的形式。由于敦煌藏文文献版面复杂,文字模糊粘连且风格多样,这种两阶段的识别方法会丢失古籍部分文字信息,同时误差累积会导致识别精度下降。目前的敦煌藏文文献的检测识别中,两阶段的识别方法尚需改进,而使用整页识别方法能够省去文本检测的步骤,直接对古籍文本进行识别,从而提高识别效率和准确率。在整页识别中,Wigington等人[16]首次提出通过行首位置逐步阅读文本的方法。Yousef等人[17]提出在特征提取后使用上采样将多行文本展开为单行送入CTC解码的方法,此方法在IAM数据集上达到了较低的错误率。Wang 等人[18]提出将行数据进行拼接训练,使模型能够进行整页文本推理,从而提升模型的推理速度。
迁移学习主要通过特征提取网络先对行文字特征进行提取,之后将具有行特征的编码器权重导入整页识别模型中进行训练。此方式能够极大地加快编码器在较少样本下整页识别的收敛速度,使得整页识别模型能够更专注于多行对齐。Coquenet等人[19]通过简单的编解码结构进行无分割标签训练,在IAM、READ 2016和RIMES数据集上取得了不错的效果。之后提出的垂直注意力网络(Vertical Attention Network,VAN)[20]可以进行逐行迭代,实现段落级别的识别,通过迁移学习加快网络收敛速度。
本文以《法国国家图书馆藏敦煌藏文文献》[21]第一册的319张原始藏文古籍图片为研究对象开展研究。在较少的《法国国家图书馆藏敦煌藏文文献》数据集图片和行级标注的基础上,对基于迁移学习的整页识别算法(垂直注意力网络)进行改进,同时使用合成数据集再次提升识别效果。研究推进了敦煌藏文文献在复杂背景以及文字风格各异条件下的整页识别工作,对敦煌文献系统性保护整理出版工作具有重要意义。
敦煌藏文古籍由于标注和校对成本高昂,目前暂未发现统一公开的敦煌藏文古籍数据集。本文以《法国国家图书馆藏敦煌藏文文献》第一册的原始319张藏文古籍图片为研究对象,对其中的藏文文字部分进行识别。因为原始图像是由若干残卷进行拼接得到的,故将原始图像中的不同残卷进行标注分离,人工处理后得到1 000张残卷段落图像。由于敦煌藏文古籍文献文字倾斜、粘连情况严重,普通的四点标注方法无法将行信息进行完整的保留,故本文采用多点标注的方法对数据集进行标注。多点标注方法不仅可以精确地标注文本信息,还可以同时满足文本检测、行识别和段落识别这三种实验需求。本文分别建立了整页和行图像的数据集,满足本文不同类型的实验。数据集裁剪分别为自定义裁剪和整体裁剪两种方式,自定义裁剪不保留余下的背景部分而整体裁剪则进行保留。为了剔除印章等多余背景,本文采用自定义裁剪方式对数据集进行构建。数据集难度划分为三类: 困难、标准和简单。部分文字页面破损或文字部分侵蚀严重,需要对残缺部分进行补全才能进行下一步工作的属于困难级别数据集;背景较为复杂,文字风格差距较大的属于标准级别数据集;文字较为清晰,背景对文字影响较少的属于简单级别数据集。由于困难级别数据集文字残缺导致无法正常识别,故本研究在标准数据集和简单数据集下进行实验。图1为本实验采用的数据集样例。
图1 《法国国家图书馆藏敦煌藏文文献》数据集样例
整页文本识别网络需要大量的训练图片,而通过标注得到的原始图片样本有限。为了充分学习背景噪声和不同风格的文字特点,本文采用印刷体合成方式对数据进行扩充。印刷体合成方法使用语料库、背景库和文字库进行整页文本图片合成。通过此方法共合成1 367张整页图片和11 955张行图片,按照7∶1∶2划分为训练集、验证集和测试集。印刷体合成样例如图2所示。
为了增加数据的多样性,本文采用透视变换、网格拉伸变换、DPI放缩、单应性变换、腐蚀、膨胀、对比度变换、亮度变换、颜色翻转、颜色抖动、锐度变换、灰度值均衡、均值滤波、中值滤波和高斯滤波等方式进行数据增强。
由《法国国家图书馆藏敦煌藏文文献》段落级别标注的数据集命名为TDFD_pg,每页图像字符数量为45到689,行级别标注的数据集命名为TDFD_li,每行字符数量为10到174。印刷体合成数据集段落级别标注数据集命名为facang_pg,行级别标注的数据集命名为facang_li。数据集字符类和划分情况如表1所示。
表1 数据集样本个数
垂直注意力网络如图3所示,模型首先通过编码器提取敦煌藏文古籍图片特征,然后通过注意力权重循环产生行特征表示,最后通过解码器对行特征进行转录得到整页文本。由于古籍背景杂乱,本文对注意力结构中的行特征提取模块进行改进,通过自适应平均值池化保留图像背景信息。为了降低错误率,加快网络收敛速度,解码器采用门循环单元(Gate Recurrent Unit,GRU)代替长短时记忆网络(Long-Short Term Memory,LSTM)。
图3 垂直注意力网络结构
ct被定义为先前所有注意力权重的总和,范围是0~1,如式(2)所示。
st,i=tanh(Wf·f′i+Wj·jt,i+Wh·hWf·(t-1))
(3)
然后为每一行计算得分et,i,如式(4)所示。Wa代表全连接层权重,减少特征图维度为1。
为解决段落文本行可变的问题,增加了段落结尾检测,采用学习停止的方式使网络能够学习在何时结束,学习停止通过折叠st的维度来进行实现。首先通过一维卷积提取特征,之后通过自适应最大值池化将高度降低为15,最后通过全连接进行维度坍塌后和LSTM的h0进行拼接。通过一个全连接层变为B×2的形状。之后通过交叉熵损失来判断,如式(5)所示。
最终的loss函数为CTC损失和交叉熵损失之和,如式(6)所示。
解码器将当前的行特征lt识别为字符序列。由于纵向的维度被折叠为1,所以仅需要考虑行转录即可。本研究使用Ch=256个的门循环单元来代替VAN网络中的长短时记忆网络,输出相同维度的另一个水平轴表示。GRU初始状态h0记录从上一行到下一行的信息,这样可以利用段落的上下文关系。之后补充一个维度进行二维卷积后降维,通道数由原来的256通道变成N+1个字符概率,使用CTC解码算法去除连续相同的字符和blank符号并进行反向传播。最后将所有识别的文本行连接起来得到段落级别的转录。
训练整页识别模型是十分困难的,整页识别模型的难点包括特征提取部分和注意力部分。本研究使用了行级预训练的方法,使用不同的特征提取网络进行行级别的预训练。其中行预训练分成两种策略: 一种是使用真正的古籍文本图像行进行训练;另一种是通过古籍文本标签合成文本行图像进行训练。实验采用古籍文本行图像进行训练,在迁移学习时由于基于内容的部分被学习到了,所以模型更专注于学习基于位置的部分。
在行预训练阶段分别选择改进的VGG系列和ResNet系列作为其特征提取模块。模型仅使用编码器结构和解码器结构进行预训练,通过行训练使得编码器能够较好地提取行文字特征。
整页识别模型能够将整页文字图片转化为文字内码的形式。为了使整页识别模型的编码器具有提取文字特征的初始参数,缓解编码器压力并提升整页识别效果,迁移学习[23]使用行级别的预训练权重对整页识别模型编码器的权重进行初始化。本文使用整页敦煌古籍数据集的子集TDFD_li数据集进行预训练。
由于将训练好的行特征提取网络参数迁移到整页识别模型中,使整页识别模型的编码器部分获取到敦煌藏文古籍的部分特征。因此,使整页识别模型能够更专注于学习对齐每一行的特征,大大加快了网络的收敛速度。
本次实验环境系统为16GB的Ubuntu 20.04,显卡型号为Nvidia 2070。采用的深度学习框架为Pytorch 1.9,CUDA版本为11.3以及使用cuDNN V8.2.1的加速库。
为了加速模型训练,使用分布式多卡并行的训练策略和混合精度计算;为了缓解显存压力,使用梯度检查点机制;为了解决模型过拟合问题,使用Mix Dropout对1D和2D信号随机失活。实验均采用Adam优化器对网络进行训练,初始学习率为0.000 1,行图像批次大小为4,整页图像批次大小为2,最大训练轮数为50 000轮。
实验采用字符错误率和单词错误率为评价指标。为了更全面地评估网络的效果,对网络推理消耗显存和每张图片前向推理时间进行记录。行识别效果如表2所示,整页识别效果如表3所示。
表2 行特征提取能力对比
表3 整页识别模型在TDFD_pg数据集上的训练结果
最后在整页识别模型的训练中加入合成样本facang_pg数据集进行跨库训练,进一步降低了网络的字符错误率。
本文在TDFD_li数据集下进行实验以验证模型的有效性。在行数据集上分别使用了ResNet18、ResNet30、VGG16、VGG19、VAN_FCN和SPAN_FCN特征提取网络对数据行特征进行提取,之后通过行解码器满足CTC输入进行字符对齐。所有模型统一使用Adam优化器,批大小为4,学习率为0.000 1,使用分布式并行计算。Mix DropOut中1D和2D信号反向失活概率都为0.2,解码器用标准CTC函数为最后的损失函数。
图4展示了不同特征提取网络在验证集中的字符错误率随着迭代次数变化情况。在批大小为4的情况下,各个模型的特征提取能力较为接近,不同特征提取网络的结果如表2所示。ResNet18在训练集单词错误率最低,为7.83%。VGG19在训练集字符测试率最低,为1.58%。ResNet和VGG作为特征提取模型虽然在训练集上效果较好,但产生了过拟合现象,测试集错误率明显高于训练集。SPAN网络的特征提取模型SPAN_FCN达到最优的字符错误率和单词错误率,分别为4.28%和38.3%,虽然效果达到最优,但是推理速度和占用显存也是最差的。VAN特征提取模型VAN_FCN在行特征提取收敛较为缓慢,在1 200轮左右字符错误率趋于稳定,其他模型在200轮后模型趋于收敛。VAN_FCN有着更少的训练参数,模型特征图数量为256,比其他模型的512特征图数量减少了一半,测试集效果和最优的SPAN特征提取模型SPAN_FCN效果不相上下。VAN_FCN模型有更快的推理速度,每张图像的前向推理时间仅为0.014s。显存占用为0.35GB。因此,页面级别的编码器模块采用VAN_FCN模型进行测试。
图4 行特征提取模型的迭代曲线
如表3所示,后缀lipg代表行训练后经过迁移学习到整页识别的模型,后缀pg代表直接进行整页识别的模型。迁移学习训练将编码器模型进行了迁移,随着整页识别的训练对特征提取网络的参数进行微调。图5展示了整页识别模型在验证集中的字符错误率随着迭代次数的变化情况。经过迁移学习后SPAN网络明显有着更强的学习能力,错误率降低了将近3%,使用迁移学习进行整页识别的优势显著。在VAN网络上,本研究首先测试原始版本经过预训练的VAN网络,VAN_lipg模型字符错误率为5.57%。在此基础上,为了降低模型的复杂度,VAN_GRU_lipg模型使用GRU网络代替解码器中的LSTM。由于减少了一个门函数,模型参数相对较少且更容易收敛。为了增强行特征细节提取能力并减少模型参数,VAN_avgpool_lipg模型对行特征提取使用了自适应平均值池化。网络的错误率相对于原版本网络字符错误率减少了0.19%。
图5 整页识别模型的迭代曲线
在此基础上,本研究对数据增强部分进行了消融实验。不采用数据增强的VAN_noaug_lipg模型在测试集上的字符错误率为5.43%,相对于原模型降低了0.14%的错误率。
最后,模型VAN_merge_lipg引入了额外的facang数据集,使最后的识别效果再次提升,达到了4.84%的字符错误率。相对于原版的VAN_lipg模型降低了0.73%的错误率,在TDFD_pg数据集上的效果达到了最优。
本文对399张行图像和100张段落图像进行了测试,部分误识情况如图6所示,经分析后可主要归纳为四种类型。
图6 敦煌藏文文献部分字符的误识情况
3.5.1 手写风格导致的错误
3.5.2 藏文相似字丁导致的错误
3.5.3 版面问题导致的错误
3.5.4 其他原因导致的错误
本研究对训练数据有限的情况使用了印刷体扩充以及传统数据增强的方法对原始数据进行了扩充。为了缓解特征提取模块的压力,使用迁移学习的方法将行特征提取模块应用到了整页文本识别网络中。在经过改进的VAN模型中,行特征压缩模块能够更精确地提取行特征信息,GRU模块能够有效减少参数并降低识别错误率。最后引入印刷体数据集后进一步提升模型效果,改进后的网络错误率比原始的网络降低了0.73%。通过与当前主流整页识别模型进行对比实验以及消融实验,验证了本文提出的整页识别模型对于敦煌古籍文献的有效性。在敦煌古籍文献和复杂背景多风格文字的文档识别等任务中具有一定的参考价值。