摘要:作为世界六大古文字之一的古彝文记录了几千年来人类的发展历史。通过对古彝文的识别能够将这些珍贵文献资料转换为电子文档,便于保存和传播。由于历史发展、区域限制等原因,针对古彝文识别的研究鲜有成果。本文将当前新颖的深度学习技术应用于古老的文字识别。在四层卷积神经网络(convolutional neural network,CNN)基础上扩展出5个模型,然后利用Alpha-Beta散度作为惩罚项,对5个模型的输出神经元重新进行自编码,接着用2个全连接层完成特征压缩,最后在softmax层对古彝文字符特征进行重新评分,得到其概率分布,选择对应的最高概率作为识别的字符。实验表明,相对于传统CNN模型,本文方法对古彝文手写体的识别精度更高。
关键词:古彝文;深度学习;卷积神经网络;散度
0 引言
古彝文作为一种重要的少数民族文字,距今有8 000多年历史,可与甲骨、苏美尔、埃及、玛雅、哈拉般5种文字并列,是世界六大古文字之一,一直沿用至今,并在历史上留下了许多珍贵的典籍,这些用古彝文书写的典籍具有重要的历史意义和社会价值[1-2]。而作为彝文古籍的载体:石刻、崖画、木牍和纸书因年代久远,往往模糊不清,或残缺不全,这给古彝文的识别带来了极大的挑战。
图1 从左至右分别为书写在石刻、木犊、羊皮上的古彝文Fig.1 From left to right are ancient Yi written on carved stone,wooden calf and sheepskin
当前,在做古彝文识别研究的主要是国内民族类高校和研究所,成果相对较少。云南民族大学王嘉梅等[3]曾使用图像分割方法进行彝文识别,首先在预处理过程中对彝文字符进行细化、归一化、二值化等处理,之后使用模板匹配法进行彝文识别。朱龙华等[4]使用组合特征分类的方法进行彝文识别,使用的特征有:方向线素特征、笔画密度特征和投影特征,在分类过程中,使用多个分类器投票的方式来确定最终的类别,最终获得了接近96%的识别率,是典型的特征提取外加分类的方法。朱宗晓等[5]在印刷体规范彝文识别中,首先提取周边方向贡献度的特征,并将特征压缩为128维,之后使用基于单一特征的三级距离字典匹配算法进行识别,最终在包含10种彝文文字的测试集中一次识别率达到99.21%。在彝文识别研究中,值得一提的是,2017年3月西南民族大学沙马拉毅教授与中央民族语文翻译局共同研制出了彝文手写体识别技术,并开发出相关彝文识别软件,有力推动了彝族文字和文化的保护和发展。
相对于其他文字识别,古彝文的书写随意性较大,无统一规范,其识别复杂性也随之增加。虽然,现有的中英文识别技术获得了较大的发展,但由于历史、区域发展的不平衡,当前对古彝文识别研究甚少。而现存的古彝文基本都为手写体,手写体的多样性无疑加大了识别的难度[3,6-7]。因此,古彝文识别是一个极具挑战性的模式识别问题,其主要表现在:
(1)缺乏成熟的手写样本库。手写样本库是古彝文识别成功的关键因素,直接决定识别的效果。当前对古彝文的研究主要集中在对古彝文文献的整理上,尚无人专门就古彝文识别进行研究,找不到可用的古彝文手写样本库。
(2)字符集庞大。古彝文拥有庞大的字符集,2004年出版的《滇川黔桂彝文字集》就包含87 000多个字[8]。对如此庞大的字符集进行分类是一项十分艰巨的任务。
(3)古彝文字体字形变化较多,且无统一标准,不同地区书写规则不同,体例和格式变化较多,增加了识别难度。
本文采用深度学习中的卷积神经网络对古彝文字符进行识别。在4层卷积神经网络基础上扩展出5个模型,然后利用Alpha-Beta散度作为惩罚项对5个模型的输出神经元重新进行自编码,接着用2个全连接层完成特征压缩,最后用softmax层对古彝文字符进行重新评分,得到其概率分布,选择概率最高者作为识别的字符。
1 卷积神经网络的基础网络结构
本文构造了4层卷积神经网络用于古彝文字符识别[9-11],称为模型M0,如图2所示。M0由4个卷积层、2个全连接层、1个softmax层构成。其符号化描述如下:
Conv:卷积层 (Convolutional layer);
MP:最大池化层(Max Pooling layer);
Drop:随机失活层(Dropout layer);
Softmax:Softmax层;
FC :全连接层(Fully Connected layer)。
例如,Conv(3×3,64,S2,P1),表示大小为 3×3,输出通道数为64,步长为2,填充为1的卷积层。默认情况下Conv的步长为1,填充为1,主要是为了使卷积前后特征图大小相等。而MP在默认情况下大小为2×2,步长为1,填充为0,此时特征图大小变为前一层的1/4。
模型M0,符号化描述为:
Input(64×64×1)-Conv(3×3,100)-MPConv(3×3,200)-MP-Conv(3×3,300)-MPConv(3×3,400)-MP-FC(2 048)-Drop(0.5)-FC(1 024)-Softmax(2 162)。
本文以模型M0为基础,分别在其各卷积层的前方额外添加一个3×3的卷积层,得到4个模型:M1,M2,M3,M4。所有模型的符号化描述如表1所示。M1在第1个卷积层前添加了一个通道数为50的卷积层;M2在第2个卷积层前添加了一个通道数为150的卷积层;M3在第3个卷积层前添加了一个通道数为250的卷积层;M4在第4个卷积层前添加了一个通道数为350的卷积层;而M5则将M1~M4所有的操作都应用到模型M0上,并同时在所有卷积层的前方添加一个3×3的卷积层,得到模型M5,如图2所示。
图2 模型M0Fig.2 Model M0
模型M5结构如图3所示,网络由4个大卷积层、2个全连接层、1个softmax层构成,并使用ReLU函数对除softmax外的其他层的输出进行激活。其中每个大卷积层由2个连续的3×3卷积层以及1个2×2最大池化层构成,卷积核的输出通道数以50为基数进行递增。为了进一步规范模型描述,对M5模型包含的4个卷积层进行以下形式化描述:
层次1模型描述
Conv1:Conv1_1(参数量 4 k),Conv1_2(参数量405 k),Pool1
图3 模型M5Fig.3 Model M5
通道数:50,100,100
输出尺寸:32×32
总量:100
对于第1个卷积层Conv1,其由卷积层Conv1_1,Conv1_2,池化层 Pool1构成,通道数分别为50,100,100,该层的输出为100张大小为32×32的特征图;卷积层Conv1_1,Conv1_2的参数量分别为4 k,405 k,整个卷积层Conv1的参数量为409 k。
层次2模型描述
Conv2:Conv2_1(参数量 1 215 k),Conv2_2(参数量 2 430 k),Pool2
通道数:150,200,200
输出尺寸:16×16
总量:200
层次3模型描述
Conv3:Conv3_1(参数量 4 050 k),Conv3_2(参数量 6 075 k),Pool3
通道数:250,300,300
输出尺寸:8×8
总量:300
层次4模型描述
Conv4:Conv4_1(参数量 8 505 k),Conv4_2(参数量 11 340 k),Pool4
通道数:350,400,400
输出尺寸:4×4
总量:400
而对全连接层与softmax层,其参数分别为13 107,2 097,2 214 k。其中第1个全连接层的随机失活概率为0.5。全网络的参数共计约51 442 k。
表1 M0~M5符号化描述Table 1 The symbolic description of M0 to M5
2 Alpha-Beta散度的自编码结构
单个CNN模型的表达能力往往是有限的,不同的模型对于同一个问题的解决能力也不尽相同,既要考虑不同模型对于局部类别识别的可信度,又要考虑模型对于整体的分类效果[12-13]。本文构建了一种泛化的散度,用Alpha-Beta散度作为惩罚项对模型M0~M5的输出神经元重新进行自编码[14-15],之后利用2个全连接层进行特征压缩,最后使用一个Softmax层对古彝文字符进行重新评分[16],得到其概率分布。
假设P和Q是同一个空间中的2个概率密度函数,它们之间的Alpha-Beta散度可表示为[15]
其中,α,β,α+β≠ 0,式(1)满足约束条件:
其中α,β,α+β≠ 0。
为避免在某一值下存在不确定性和奇异性,Alpha-Beta散度被扩展到覆盖所有的实数集α,β∈R,因此Alpha-Beta可更直接地表示为
其中,
本文对M0~M5的输出神经元用Alpha-Beta散度为惩罚项重新进行自编码学习(如图4所示),通过2次全连接抽取特征,将M0~M5模型全局优化,提升对古彝文识别的精度。
图4 基于Alpha-Beta散度自编码融合模型M6Fig.4 Based on Alpha-beta divergence self-coding fusion model M6
根据自编码神经网络原理[17-18],学习一个函数,使得hw,b(x)≈x,即xˆ≈x,用a(2)j(x)表示在给定输入为x的情况下,自编码神经网络中隐藏神经元j的激活度。进一步,使
一般强制约束为ρˆ→ρ,ρ是一个稀疏参数,通常取接近于0的值,如0.05,每个隐藏单元j的平均激活值接近于0.05。这里,ρˆj为隐藏单元j的平均激活值,本文添加一个额外的惩罚项来最优化目标函数及 Alpha-Beta散度[15]:
因此,全局损失函数为
其中,
其中,β为控制稀疏性惩罚因子的权重,ρˆj(间接地)取决于W,b,因其为以M0~M5为输入层的下一隐藏层神经元j的平均激活度,而隐藏层神经元的激活度取决于W,b。至此,已完成对M0~M5层神经元的重新编码。
3 模型训练及样本采集
3.1 模型训练
将模型的激活函数设置为ReLU[19],选择Adam[20-21]优化算法,同时对训练集增量,以扩大其容量,使模型能更充分地学习到图像中的特征。此外,为使模型顺利收敛,为每一卷积层附加一个Batch Norm层。
虽然,Adam算法计算效率高、实现方便、内存占用少、更新步长和梯度大小与初始学习率无关,但在增量后的数据集上,其优化效果不明显。当学习率为0.001时,损失函数基本无法收敛,而将学习率设置为0.000 1时,损失函数开始下降,如图5所示,因此本文将初始学习率设置为0.000 1。
3.2 样本采集
样本来源于37万字的《西南彝志》,在其中选取2 142个常用古彝文字符[22],并邀请彝族老师和学生进行临摹,发放了1 200份采集表(如图6所示),其中彝文正体采集表800份、软笔风格采集表200份、硬笔风格采集表200份,如图7所示,共得到了151 200个字体样本。同时,为便于后期处理分析,设计了相应的字体库(如图8所示)和古彝文输入法。
图5 模型M0不同学习率下的损失函数Fig.5 Model M0 loss function under different learning rates
图6 采集表扫描样本Fig.6 The sample of collection table scanned
图7 古彝文硬笔(上)和软笔(下)风格Fig.7Hard-tipped ancient Yi(above)and soft-tipped Yi(below)
图8 古彝文字体库Fig.8 Ancient Yi font library
为确保模型能够学习到足够多的特征,对样本进行增量处理。样本增量流程如图9所示,首先,对原始样本进行宽度变化和弹性形变,然后,进行旋转、缩放、平移等仿射变换,接下来是模糊加噪,最后,进行亮度及对比度变换。增量后的样本示例如图10所示。
图9 样本增量Fig.9 Samples of incremental
图10 增量后的样本Fig.10 The sample after increasing
经过以上处理得到训练集A,为了更真实地验证本文方法的效果,从贵州彝学研究院提供的出版物“彝学经书”之“布斗布周数”影印文件中选取了20份文件,每份约150个字符,作为测试数据。此外,运用增量技术对训练集A进行样本增量,得到训练集A2。
4 实验及分析
使用训练集A2,对M0~M5进行了训练,并在测试集B上进行测试,其结果如表2所示。模型在测试集B上的准确率远高于训练集A2,表明本文使用的模型通过增量后的训练集学习到了足够多的手写风格,同时表明本文所提出的增量方法是可行且有效的。但另一方面,在经过足够多的训练次数后,训练集的准确率仍未超过90%,表明本文所使用的训练数据集可能存在某些难以识别的样本。对训练数据集进行人工排查,发现由于原始样本的分辨率过低,在增量变形的过程中,出现部分样本笔迹丢失、粘连和过度模糊的情况。如图11所示,对于同一个字符,由于过度变形,几乎完全偏离了此字的正常书写风格。正是这些过度变形后的样本模型带入的额外噪声,使得模型在训练集上表现不佳。
表2 模型M0~M5的准确率Table 2 Accuracy of model M0 to M5
图11 过度变形后的数据Fig.11 Data after excessive deformation
由表2可知,模型M1的性能最优,其在测试集B上的准确率达到了92.84%,最差的则为M5,仅为90.06%。相对于最简单的模型M0,在其各层分别添加额外的卷积层,显然有利于模型性能的提升,但随着模型插入位置的向后迁移,其提升幅度逐渐变小。而模型M5在每个卷积层前都添加了额外的卷积层,期望达到更好的效果,现实情况却令模型性能明显下降。
此外,表4展示了不同模型迭代100次所消耗的时间,毫无疑问,最简单的模型M0所消耗的时间最少,仅为237.27 s。而模型M5所消耗时间高达563.40 s。同时,随着插入卷积层位置的增高,参数也随之增多,相应地,所需时间也急剧增加。但M3、M4与M2相比,却出现了所需时间减少的情况,这主要是由于随着层数的增多,特征图尺寸缩小,计算量减少。如表3所示,与模型M0相比,模型M2增加的连接数量最多,达到了2.07×109,而模型M3与M4增加的连接数量开始下降,其中模型M4增加的连接数量最少,仅为0.65×109。
表3 模型M1~M4与M0相比增加的连接数量Table 3 The number of connection increasing of M1 to M4 compared to M0
表4 模型M0~M5迭代100次所消耗的时间Table 4 The time consumed by 100 iterations of the model M0 to M5
从表2和表4中可以看出,M1综合性能最佳,在仅带入了极少计算量的同时,最大限度地提高了模型性能。而M5显然是最得不偿失的选择,占用了几乎2倍于M0的计算时间,性能不升反降。
进一步分析发现,在卷积层后再次进行卷积运算确实有助于提升模型性能,且底层的添加效果远好于高层,同时,底层添加的代价也最小(参数量偏小)。高层添加卷积层往往效果不明显,且会带来庞大的计算量(引入了大量的参数)。而模型M5在每个层都添加卷积的做法,显然在带入大量计算量的同时,也引起了梯度弥散。
为了综合各模型的优势,实验采用了图3的模型M6,以模型M0~M5的输出概率分布为输入,在训练集A2上进行训练,在测试集B上进行测试。在测试集B上的准确率达到了93.97%,在训练集A2上的准确率也达到了90.63%。
图12 模型M0~M6在测试集B上准确率的变化Fig.12 Changes in accuracy of M0 to M6 in test set B
实验进一步分析了模型准确率的变化情况,图12为模型M0~M6在测试集上随迭代次数增加,其准确率的变化情况(多次实验发现模型迭代次数在100~150时准确率趋于稳定,继续迭代,准确率无明显变化)。从图12中可以明显看出,模型M5上升最慢,在第12个周期时才达到最佳准确率91.06%,明显劣于其他模型。模型M0、M1在第8个周期达到最佳准确率,分别为91.54%和92.84%,而模型M6则在第7个周期便达到了最佳准确率92.97%。同时可以看到,模型M0、M1、M2、M6上升速度较为接近,同时模型M6从第7个周期开始就达到相对平稳的状态,较其他模型更早达到平稳状态。总体而言,模型M6优于其他模型,这正是M6对其他模型的输出神经元进行重新编码优化的结果。
5 结论
利用深度学习的CNN网络对古彝文数据集进行识别,具有较高的识别精度。特别是采用了Alpha-Beta散度作为惩罚项,对各个模型的输出神经元重新进行自编码生成的融合方案,在计算量增加有限的情况下,提升了识别网络的性能,同时,避免了网络层数增加带来的性能下降问题。当前,彝文的识别研究尚处于起步阶段,且大多针对书写规范的手写体和印刷体,由于字符库有限,仅限于对常见的彝文处理。而针对彝文古籍中古彝文识别的相关研究非常稀少,可以说是当前国内外研究的空白。
本文将深度学习技术应用于少数民族古文字处理,对文化保护和发展做了一些有益的探索。另外,考虑到本文对各个模型输出进行重新自编码的融合方案采用的是概率分布的度量方式,需要大量样本,且用彝族同胞手写样本进行度量代价较大,后续拟采用深度学习的生成对抗网络(GANs)生成更多的古彝文手写体样本。
原载:《浙江大学学报(理学版)》2019年3期;文字来源:参考网。
作者:陈善雄、王小龙、韩旭,西南大学 计算机与信息科学学院;刘云、王明贵,贵州工程应用技术学院 彝文研究院。