关键词:彝文;生成式对抗网络;深度学习;梯度下降
古彝文作为一种重要的少数民族文字,距今有八千多年历史,可与甲骨文、苏美尔文、埃及文、玛雅文、哈拉般文5种文字并列,是世界六大古文字之一,一直沿用至今(古彝文是彝族人民留给世界的一块瑰宝,它拥有非常悠久的历史,可以与甲骨文、玛雅文等相并列,是世界六大古文字之一,代表着世界文字一个重要起源(此乃2009年乔惠民先生在港主持《古彝文与世界古文字比较研究课题》发布的学术论点,乔惠民现任中国国土经济学会研究室主任、国土名片网总编辑)),并在历史上留下了许多珍贵的典籍。这些用古彝文书写的典籍具有重要的历史意义和社会价值[1-2],且种类繁多,内容广泛,涉及历史、文学、哲学、宗教、医药、历法等各个领域,具有较高的传承价值。而作为彝文古籍的载体,石刻、崖画、木牍和纸书由于年代久远,往往模糊不清,或者残缺不全,这给彝文古籍文献的保存和传播带来极大的困难。目前,从各地收藏单位收集到彝文古籍文献来看,纸质文件存在泛黄变脆,甚至出现残边、虫蛀等损毁问题;一些碑刻、木刻的古彝文也由于长期的侵蚀,字迹出现了模糊,腐蚀等情况[3-5],如图1所示。得益于图像修复技术的发展,我们可以通过技术手段对残缺文字进行修补,还原文字的真实形态。
图1 彝文残卷
传统的文字图像修复,专业研究人员是通过语境信息和感知信息进行,即利用图像周围的像素以及综合标准文字中的各个特征要素来完成字符推演。但古彝文没有标准文字让计算机参照学习,手写古彝文存在不确定性问题。同时计算机也很难具备人的语境信息,对于文字的认知,需要很多的背景知识,这些是人类在一定环境中长期积累形成,很难系统地加以描述和组织。近年来,深度学习在图像语义修复、情感感知、模式识别以及特征分类等领域展现出令人振奋的前景[6-7],特别在图像生成方面,表现出优越的性能。基于深度学习的图像生成算法相对于传统的基于结构和纹理的生成算法能够捕获更多图像的高级特征,常用于进行纹理合成和图像风格化迁移[8-10]。2014年由Goodfellow等提出的生成式对抗网络(Generativeadversarialnetwork,GAN)在图像生成领域取得了开创性进展[11-12],在图像生成的过程中,生成式对抗网络相对于传统的编码-解码器而言能够更好地拟合数据,且速度较快,生成的样本更加锐利,但该方法也存在不足,如数据训练不稳定、网络自由不可控、训练崩溃等问题。2015年底,Radford等在深度卷积分类网络基础上[13],提出深度卷积生成式对抗网络(DeepconvolutionalGAN,DCGAN)[14]。DCGAN融合卷积神经网络(Convolutionalneuralnetwork,CNN)和GAN,通过设计独特的网络结构,使得训练更加稳定,这是首篇表明向量运算可以作为从生成器中学习的固有属性进行特征表达的论文。DCGAN的成功使GAN拓展出多种应用[15-20],如图像合成、风格迁移、超分辨率重构、图像修复以及图像转换等。
我们在深度卷积和生成对抗网络以往的工作之上[13,15,21-24],针对彝文字符的特殊性,提出一个双判别器生成对抗网络模型用于古彝文字符修复。本文设计的双判别器网络是在DCGAN的基础上,增加一个筛选判别器模型,实现从手写彝文古籍文献中获取古彝文字符图像的概率分布,通过已获得的概率分布去预测待修复古彝文字符图像,根据预测图像完成修复任务。其基本流程为。首先使用古彝文字符对DCGAN网络进行训练,使该网络的古彝文生成器模型能够生成古彝文字符图像,然后建立一个筛选判别器模型,对生成出的古彝文字符进行比较,通过对生成的古彝文字符与待修复古彝文字符的差异建立损失函数,并对双判别器模型进行优化,最后能约束生成器模型,使其生成的古彝文字符不再是随机字符,而是与待修复的古彝文字符一致。本文使用手写古彝文字符图像数据集对上述方法上进行测试,对残缺1/3以下的字符能达到77.3%修复率。
1 双判别器生成式对抗网络模型
1.1 模型结构
本文提出了一种基于双判别器生成对抗网络(Generativeadversarialnetworkswithdualdiscriminator,D2GAN)的古彝文字符的修复方法。有别于传统图像修复,在文字修复中,如果已有字库的字符能覆盖待修复文字,则直接采用待修复字符图像和字库比对的方式。然而,古彝文存在字符库不全且手写体形式多样等问题,因而直接进行比对较为困难。针对古彝文缺乏完整字库样本,本文通过GAN生成器来实现一个动态的古彝文字库,并利用双判别器网络来获取目标古彝文字符,进一步用于残字修复。本文关键在于设计出能够生成出古彝文字符的网络,并加入筛选判别器形成双判别器的网络结构。该结构中包含2个判别器,一个用于判断生成器生成的字符是否属于古彝文;另一个用于判断待修复的古彝文字符和生成字符的相似性。D2GAN中筛选判别器的作用为判别生成器生成的古彝文字符是否是待修复的古彝文字符,如果生成字符与待修复字符一致,则两者进行融合,这样就可以实现残缺古彝文字符的修复。D2GAN模型结构如图2所示。
图2 本文双判别器生成式对抗网络结构
该网络由一个字符判别器、一个筛选判别器和一个字符生成器组成。网络的训练分为三个阶段。
第1阶段对古彝文字符判别器进行训练。将生成器生成的字符输入古彝文字符判别器网络,正向传播后,得到输出,本文期望输出为“假”;将真实的古彝文字符输入字符判别器网络,正向传播后,得到输出,本文期望输出为“真”。将2个输出结合起来建立损失函数,进行反向传播,优化古彝文字符判别器网络。
第2阶段对古彝文字符生成器进行训练。将服从均匀分布的100维随机向量输入古彝文字符生成器网络,通过正向传播,得到输出,输出数据的形状为64×64的矩阵。将输出结果输入古彝文字符判别器网络,在古彝文字符判别器网络内进行正向传播后,得到输出,本文期望输出为“真”。通过输出结果建立损失函数,进行反向传播,优化古彝文字符生成器网络。
第3阶段,重复第1阶段和第2阶段,直到对古彝文字符生成器网络完成优化,然后停止古彝文字符生成器的优化,开始进行对筛选判别器进行训练。将真实的古彝文字符和生成器生成的字符输入到筛选判别器网络,通过网络的正向传播,得到输出,筛选判别器输出是一个100维的向量。将该向量输入到古彝文字符生成器网络,通过生成器正向传播,得到输出,本文期望该输出尽可能地接近需要修复的残缺彝文字符,通过对二者一致性的比对,建立损失函数,通过在筛选判别器网络中反向传播,对筛选判别器网络进行优化。
经过上述三个步骤,完成针对古彝文字符图像的双判别器生成式对抗网络结构的训练,得到一个稳定的模型。在文献[25]中,也提出了一个双判别器生成对抗网络(D2GAN),如图3所示。在两个判别器固定的情况下,生成器的学习将朝着同时优化Kullback-Leibler(KL)散度和反向KL散度的方向发展,从而有助于避免模式崩溃。该模型与本文差异在于。1)文献[25]中,两个判别器的模型结构,完全一致,作者改变的是两个判别器损失值的计算方法。在本文的双判别器框架中,两个判别器的模型结构相差甚远,并且数据输入的方式也并不相同。2)双判别器模型的训练方法不一样。文献[25]中的训练方法为生成器与两个判别器同步训练,通过两个判别器,来优化生成器,同时通过生成器优化判别器。本文的训练方法为生成器和第1个判别器同步训练,相互优化,在生成器优化结束后,通过第2个判别器对生成器的生成结果进行筛选。3)增加的判别器用途不一样。文献[25]中增加的判别器是为了能更好地优化生成器的模型参数。本文增加的判别器,是为了从生成器生成出的结果中寻找最优解,并没有对生成器的参数再进行优化。
图3 文献[25]中D2GN结构
为了展示本文双判别器结构的细节,下面首先对古彝文字符判别网络、筛选判别网络和古彝文字符生成网络进行详细说明。
1.2 古彝文字符生成网络
古彝文字符生成器主要用于获取古彝文字符的概率分布,在极大似然概率生成网络上产生出彝文,从而形成动态彝文字库。古彝文字符生成器(Generator,下文简称网络G)的优化来自于彝文字符判别器(Discriminator,下文简称网络D1),两个网络之间相互博弈,从而不断优化,网络结构示意图如图4所示。
彝文字符生成器用随机向量z作为网络G的输入,将输出送入网络D1,通过网络D1的正向传播获得生成效果,根据生成效果优化网络G,其数学表达式为

因为网络D1可以区分彝文字符的“真”和“伪”,所以网络G为让网络D1将其判断为“真”,会不断优化自身,使生成的“伪”古彝文字符尽可能与“真实”古彝文字符一致。通过网络G不断优化,从而学习古彝文字符的本质特性,刻画出古彝文字符的分布概率,最终使得网络G生成出的数据与古彝文字符高度相似,形成动态彝文字库。其中G表示彝文字符生成器;θG为待优化参数;g(·)为需进一步优化的非线性映射函数;z为g(·)的输入,即-1~1之间的双精度随机数,是100维的向量;x为真实的古彝文字符数据,为生成器输出的结果,为64×64像素的图像,且取值范围在-1~1之间。对网络G而言,在彝文字符判别器固定时,期望生成数据的分布特性尽最大可能与真实古彝文字符一致,即判别器将生成图像都识别为真。如式(2)所示,因为期望判别器识别为真,因此D()的输出越接近于1越好,即lg(D())越大越好。

1.3 古彝文字符判别网络
彝文字符判别器的作用是帮助彝文字符生成器优化,通过不断调整自身的鉴别能力,从而使生成器的能力也不断提高。彝文字符判别器分别用彝文数据集中的数据和网络G的输出作为网络D1的输入,将判断结果作为网络D1的输出。其数学表达式为

其中,D表示彝文字符判别器;θD为待优化的参数;y为d(·)的输出结果,即将输入数据判断为真的概率,且y∈[0,1]。判别模型设计为将自然数据判断为真的概率,以及将生成数据判别为伪的概率要高。通过网络D1的正向传播获得判别结果,根据结果对网络D1进行优化,其损失函数为

式(5)中对lg(d(x,θD))的损失值取负的物理解释为将x判断为真的不确定性越小越好,其最佳状态为d(x)=1;而对lg(1-d())的损失值取负的物理解释为将判断为伪的不确定性越小越好,即将判断为伪的概率越大越好;将所有判定的不确定性进行求和,便得到熵。根据熵对模型的参数θD进行优化。在对判别模型D的参数进行更新时,对于来自真实分布Pdata的样本x而言,因为期望都能够识别为真,因此D(x)的输出越接近于1越好,即lg(D(x))越大越好;对于通过噪声z生成的数据G(z)而言,因为期望都能够识别为假,因此D(G(z))越接近于0越好,即lg(1-D(G(z)))越大越好。
通过设计好的损失函数(式(2)和式(5)),使用梯度下降法对(θG,θD)参数交替优化,使网络G和网络D1接近纳什均衡。
1.4 筛选判别器
完成古彝文动态字库的设计后,针对古彝文字符缺损的修复问题可以描述为图像的比对问题。通过对古彝文字符生成器的训练,可以获取100维列向量的随机数和古彝文字符的映射关系,但是生成器输出的古彝文字符是随机的,要完成特定的彝文字符修复,还需要建立起100维列向量与特定字符之间的映射。假设待修复的图像为A,设置一个初始随机值z作为生成器G(z)的输入,正向传播后可得到一幅图像B′。此时的图像B′与图像A可能毫无关联或相关性不大,无法用图像B′完成图像A的修复。筛选判别器的作用在于找到一个H,使得生成器G(z)的输出图像B′与图像A无限接近。即,使生成器自动生成的古彝文字符与需要修复的特定古彝文字符尽量接近。
本文通过两幅图像的欧氏距离d(A,B),即

建立起两幅图像间概率分布的差异,根据差异设计出损失函数对筛选判别器进行优化。但仅以此作为损失值对z进行优化还不够,还需限定图像B′必须是一个古彝文字符,本文将彝文字符判别器对图像A的判定结果,也作为优化目标之一。结合两个损失值就可以得到优化z的函数,即

式(6)中,a代表图像A中的像素值,b代表图像B′中的像素值。筛选判别器期望比较出更符合古彝文字符规律的字符图像,因此D(z)的输出越接近1越好,即lg(1-D(z))越小越好。生成数据的分布特性尽最大可能与真实古彝文字符数据一致,即判别器将生成图像都识别为真。最小化Lasso,如式(5)所示。因为期望判别器识别为真,因此D(z)的输出越接近1越好,即lg(1-D(z))越小越好。lossz为凸函数,通过梯度下降法[26-27]对z进行优化,使得z无限接近于期望的H以此得到图像B,从而完成古彝文字符修复。
2 模型结构
2.1 古彝文字符判别器模型
古彝文字符判别器模型的输入为字符图像,通过判别器判断该图像是否为古彝文字符。模型包括1个输入层、4个卷积层和1个输出层。其模型结构如图5(a)所示,其中层与层之间的黑色连接圆,代表卷积的方法和激活函数,如图5(b)所示。
图5 古彝文字符判别器模型详细结构
古彝文字符判别器由4层CNN(不包含输入层)组成,图5(a)中第1层为输入层,输入原始数据,该数据源于古彝文字符图像,大小为64×64像素,因为古彝文字符是灰度图像,因此将图像的3通道修正为单通道。最后为输出层,只有1个节点。卷积层用C表示,详细信息如表1所示。OUTPUT层计算输入向量和权重向量之间的点积,再加上一个偏置,然后将其传递给sigmoid函数输出结果[28]。输出层的节点值表示是否为古彝文字符。如果节点的值为1,则表示网络识别结果为古彝文字符,0则相反。
表1 判别器模型参数表

2.2 古彝文字符生成器模型
古彝文字生成器模型由4层CNN(不包含输入层)组成,图6(a)中第1层为输入层,输入为服从均匀分布的100维向量的随机数。最后为输出层,输出数据为64×64×1的矩阵,希望通过训练,该数据能表示古彝文字符图像,其模型如图6(a)所示。其中层与层之间的白色连接圆,代表反卷积的方法和激活函数(如图6(b)所示)。反卷积层用DC表示,全连接层用F表示,详细信息如表2所示。
表2 生成器模型参数表

图6 古彝文字符生成器模型详细结构
2.3 古彝文字符筛选判别器模型
在筛选判别器训练及彝文字符修复阶段,古彝文生成器和古彝文判别器停止优化。在没有约束的情况下,生成器的生成效果,只具有古彝文字符的分布特征,而并不一定是真正的古彝文[29-30]。本文增加筛选判别器之后,通过与待修复古彝文字残字图像做比较,进一步对古彝文字符生成器进行约束,使得生成的结果更符合古彝文的正常书写规范,且更接近于待修复的古彝文。其结构如图7所示。

图7 古彝文字符筛选判别器模型
筛选判别器的输入为残缺的字符和生成的字符,仅有1个全连接层。该全连接层神经网络的每层神经元权重的个数,Param=(输入数据维度+1)×神经元个数,加1是因为每个神经元都有一个偏置值。输入数据维度为100,该层使用了1×64×64个节点,所以参数数量为(100+1)×1×100=10100.全连接层输出作为字符生成器的输入,是一个100维的向量。
筛选判别器模型优化方法如下。
1)从古彝文数据集B中选取一个样本作为修复对象(如图8)。因为该样本是完整的古彝文,并无缺失。为验证效果,使用一个20×20的全1矩阵对图像的中间部分进行覆盖(如图9)。为验证模型的鲁棒性,除矩形外,本文还使用了三角形和圆形等多种形状进行区域覆盖。
2)将进行覆盖的字符(残缺字符)和生成器生成的字符作为输入,用1个全联接网络构成筛选判别器的隐层,同时,把古彝文筛选判别器的输出z,作为古彝文生成器的输入,通过正向传播可以得到输出G(z),如图10所示。
3)从图8~10可以看出,此时古彝文字符生成器输出的G(z)与待修复的古彝文残字(图9)之间并无关联。将G(z)与残字进行对比,根据式(6)得到损失值lossz。
4)用lossz对筛选判别器进行优化。
3 训练与实验
3.1 数据集与模型训练
实验样本来源于37万字的《西南彝志》中选取的2142个常用古彝文字符[31],并邀请彝族老师和学生进行临摹,发放了1200份采集表(如图11所示),其中古彝文正体采集表800份、软笔风格采集表200份、硬笔风格采集表200份,如图12所示,共得到了151200个字体样本。同时,为了便于后期处理分析,设计了相应的字体库(如图13所示)和古彝文输入法。
图11 原始样本
图12 古彝文硬笔(上)和软笔(下)
图13 待修复古彝文
将古彝文字体库中的样本转换为64×64个像素点构成的图片,每个像素点用0~255灰度值表示,对采集到的样本,每个字按7.3的比例分为训练集A和测试集B,部分样本如图14所示。
图14 古彝文手写数据集样例
实验环境。CPUIntel(R)core(7M)i7-7700,3.6GHz;内存DDR4,8.00GB;GPUNVIDAGe-ForceRTX2080SUPER,基础频率1650MHz,加速频率1815MHz,显存。GDDR6,8GB,显存位宽256bit,显存频率15.5GHz,显存带宽496GB/s。
3.2 彝文字符生成器和彝文字符判别器训练过程
实验使用训练集A对模型进行训练,每次训练以32个样本为单位,进行批量训练,过程为。
1)从训练集A中抽取32个彝文数据,将其作为彝文判别器的输入,通过彝文判别器的正向传播,得到d(x,θD),即彝文是否为“真”的概率,将其代入式(8),得到损失值d1

2)随机产生32个服从均匀分布的100维向量,将其作为彝文生成模型的输入,通过正向传播获得32个64×64×1的矩阵,将这批矩阵作为彝文判别模型的输入,通过正向传播也得到d(),将其代入式(9),得到损失值d2

3)将d1和d2代入式(5),得到彝文判别器的损失值lossd,通过Adam[32-33]算法,对彝文判别的参数进行优化。
4)彝文字符生成器输出的32个图像通过彝文字符判别器得到d(),在作为彝文字符判别器的损失值d2的同时也作为彝文字符生成器的损失值。因为对彝文字符生成器的期望是所有生成出的数据,彝文字符判别器都将其判别为真,所以将d()代入式(2)得到彝文生成器的损失值lossg,用Adam算法对彝文字符生成模型进行优化。
重复一次上述的过程,称为完成一次训练。通过不断重复训练,对彝文字符判别器和彝文字符生成器同时进行优化。
模型采用tensorflow框架提供的Adam随机梯度下降优化算法进行训练,在训练时,需要设置学习率(Learningrate)控制参数的更新速度。该参数会极大地影响模型收敛速度,过小会收敛太慢,增加训练成本;过大会导致参数在最优解附近振荡,无法获取得最优解[34]。本文对多个学习率下损失值的变化进行对比,当训练次数为2000时,学习率分别为0.2,0.02,0.002的判别器损失函数曲线如图15所示。横轴代表训练次数,纵轴代表损失值大小,单位为px(像素)。
图15 学习率0.2,0.02,0.002的损失值变化曲线
通过观察图15可以发现,学习率在0.2时,损失值在1240次之后就开始剧烈振荡,这是明显的学习率过高,导致无法收敛到最优点的情况。将学习率0.002和0.02的损失值进行比较,学习率0.002的损失值更接近于在1附近进行波动,其预测值会更接近于1,因此本文以0.002为基础再次进行实验。当训练次数为2000时,学习率分别为0.0002,0.001,0.002的判别器损失函数曲线如图16所示。通过观察图16,可以判断学习率为0.001时,损失值的波动范围最接近于1,因此本文设置学习率为0.001.
图16 学习率为0.0002,0.001,0.002的损失值变化曲线
训练过程中,设置训练次数为10000次,每次训练输出25幅64×64像素的生成图像。在第1次、第50次、第100次、第500次、第1000次、第2000次、第5000次、第10000次、第15000次、第20000次训练完成后,用生成器生成图像,每次训练完成生成25幅图像,共250幅图像,如图17所示。
图17 不同训练次数下生成器生成图像
经彝文专家判断,在训练超过10000次之后,生成器生成的图像趋于稳定。故采用经过10000次训练的生成器网络。
在训练过程中,每100次记录一次彝文判别器和彝文生成器的损失值,经过10000次训练之后,损失值变化曲线如图18所示。从图中可以看出,彝文生成器模型和彝文判别器模型在训练过程中不断进行博弈。当彝文判别器模型的损失值减小时,判别器判定生成的彝文为假的概率增加。而彝文生成器模型损失值减小时,判别器能较大概率判定生成的彝文为真。当两个模型的损失值交替上升时,表示这两个模型在不断地进行博弈,并交替地对模型参数进行优化。
图18 10000次训练后损失值变化曲线
本文用随机产生的1000个100维向量作为完成10000次训练的生成器模型的输入,通过模型正向传播,得到得到1000个图像,经彝文专家判断生成结果与真实彝文字符的形态非常接近。部分数据如图19所示。
3.3 筛选判别器的训练及彝文修复
根据第2.3节所述流程,在对筛选判别器的训练过程中,我们设置学习率为0.001,对筛选判别器模型进行2000次优化。过程中lossz的变化曲线如图20所示,横轴代表训练次数,纵轴代表损失值大小,单位为px(像素单位)。可以看出在训练750次后,损失值已经逐步下降到一个范围内,即表示当前生成的字符与待修复的字符之间的差异也下降到一定范围。在2000次优化后,筛选判别器生成的z′,通过在古彝文字符生成器中正向传播得到G(z′),如图21所示,从图中可以看出G(z′)与残字接近,却又保留有残字所残缺的那部分。将待修复古彝文中缺失的部分,用G(z′)进行填充,得到修复后的图像,如图22所示。
图22 修复后的图像
上述实验重复1000次,每一次随机从古彝文测试集B中抽取一个样本制作成待修复的古彝文,然后按本文的方法进行修复,对古彝文字符的修复率为77.3%,如表3所示。
表3中的评价标准如下。修复后的图像与原图像字体形态一致为完全修复;能够知道图像的古彝文字符是哪个古彝文字符,但存在偏旁或部首的缺损为部分修复;通过观察修复后的图像,不能判断出是哪个古彝文字符为未完成修复。图23为1000次实验中的部分数据,从左至右分别为古彝文原始样本图像、生成出的待修复的古彝文图像、生成器生成出来的图像以及修复之后的效果图。图24为多种残缺形状的修复效果。
图23 部分古彝文修复结果
图24 多形状残缺修复结果
表3 古彝文字符修复比例

本文使用上述模型对从彝文古籍中选取出的10个残缺的古彝文字符进行处理和修复,其效果如图25所示。从左至右分别为残缺的古彝文字符、通过模型生成的用于修复的字符以及修复结果。其具体修复方法为,取模型生成的字符图像中某一区域的黑色像素,叠加到待修复的图像中。区域的位置,根据原始古彝文字符的缺损位置来确定。然而,通过专家判别,仍有22.7%是修复失败的。部分样本如图26所示。其原因在于,残字缺失的部分,其笔画较为复杂,且该字符异体字较多,而生成器网络结构对复杂笔画的适应性较弱,因此对残缺部分的重构效果较差。
图25 彝文古籍文献中残缺字符修复效果
图26 古彝文残缺字符修复失败效果
4 结束语
本文采用深度卷积生成式对抗网络来获取古彝文字符的分布概率,并且在该网络结构之上增加一个筛选判别器,形成一个双判别器对抗生成网络。该模型实现从彝文古籍文献中获取古彝文字符图像的概率分布,通过已获得的概率分布去预测待修复古彝文字符图像,完成古彝文字符的修复。这也是对古文字修复的积极尝试,对保存和发扬民族文化进行了有益探索。然而,本文对筛选判别器的优化函数是图像间像素的差值,其并不能很好地代表字符图像间概率分布的差异,后续研究会尝试使用多种度量标准作为损失函数。同时,文字修复判断的可量化指标没有一个统一标准,因此建立统一的修复标准也是未来研究的方向。
原载:《自动化学报》2022年3期;文稿来源:国土名片网。




















