黄子君,陈 琪,罗文兵
1.南昌师范学院 数学与信息科学学院,南昌330022
2.江西师范大学 计算机信息工程学院,南昌330022
汉字作为中华民族文化的重要载体,其书写作为一种文学艺术,能够让人感受到中华文化的博大精深。目前,手写汉字生成在馆藏学特别是在古文献修复、名人书法鉴别等应用中有广泛的应用前景[1-8],区别于图像模式识别[9-10]任务主要通过对图像进行分割、特征提取等方式实现图像识别的目的,汉字生成任务主要是通过学习不同汉字表示域之间的映射,实现从一种汉字风格迁移到另一种汉字风格[11-12]。手写汉字生成任务研究工作前驱是标准字体的风格迁移,例如从楷体到宋体汉字的风格转换。由于手写汉字的生成任务更为复杂,所以在现阶段想要生成效果上乘的手写汉字仍亟待进一步研究。
回顾机器学习历史,采用机器学习的方式解决手写汉字生成任务的方法可以总体概括为两大类,一种是基于浅层学习的手写汉字生成方式[13-22],该方法是将汉字拆分之后提取汉字的层次结构、笔画、大小等局部信息,通过一定的算法合成手写汉字。另一种是基于深度学习的手写汉字生成方式[23-26],该方式是将单个汉字看成一个基本单元,是一个不可分割的整体,关注的是汉字的整体风格,基于这样的想法采用以卷积神经网络[27](Convolutional Neural Networks,CNNs)为代表的深度学习模型实现手写汉字生成。
一般而言,基于浅层学习的手写汉字生成方式的关注点在汉字的局部信息上,在生成汉字的过程中需要对汉字的笔画大小与位置进行控制调整,除此之外,在对数据进行预处理的时候,往往需要大量的人力物力去进行手工标注[12-16]。最后,基于浅层学习的手写汉字生成方法面临硬件计算能力不足及数据集规模较小等瓶颈问题。
近些年来,随着硬件计算能力的极大提升及大规模数据集的出现,深度学习在图像、语音和自然语言处理等应用领域取得了巨大的成功[28-30]。深度学习的一个核心要素便是神经网络结构的搭建,其中一些典型的深度神经网络结构包括卷积神经网络(CNNs)、循环神经网络[31-33](Recurrent Neural Networks,RNNs)和深度残差网络[34-35](Deep Residual Networks,DRNs)。特别地,作为深度学习新的研究热点,生成对抗网络[36-37](Generative Adversarial Networks,GANs)被逐步应用到手写汉字生成任务中[23-26],所生成的汉字质量显著优于基于浅层学习的汉字生成方法的效果,从而为手写汉字生成研究开辟了一个新的方向。基于深度学习的汉字生成方法通常存在训练方式复杂,训练不稳定,对数据集规模及存储空间需求较高等问题。目前,一些典型的基于深度学习的汉字生成研究见文献[23-25],其中白海娟等人采用了生成对抗网络实现手写汉字生成,取得了较好的实验效果[24];Chang和Zhang等人采用循环生成对抗网络实现手写汉字的生成任务[23],这种网络结构在损失函数部分添加了循环一致性损失,该方法除了对普通的手写汉字有好的效果之外,对于王羲之这样的书法艺术字也能够有较好的生成效果;在滕少华和孔棱睿[25]的工作中除了采用生成对抗网络作为手写汉字生成的基本模型,还通过增加迁移条件,控制生成模型的目标输出,进而实现了一对一、一对多等字体风格迁移。
基于深度学习的手写汉字生成方法的关注点在于汉字的整体风格上,利用该方法生成的汉字能够有效地关注到汉字的整体风格,通过端到端的方式实现汉字的自动生成。该方式无需人工提取汉字的结构信息且不需要对汉字的局部进行调整。
但现有的基于深度学习的汉字自动生成方法仍然存在一定的局限性,如该方法实现的前提是需要大量的数据集训练模型,才能产生较好的效果,对硬件配置的要求也比较大。目前现有的手写汉字生成的方法所得到汉字仍然会有一些生成错字、生成笔画非美学形式扭曲、生成的汉字结构错乱等错误[17],并且在手写汉字生成的应用上也没有大规模的推广应用,相关软件产品的生成效果还有待改善。因此,现阶段的研究方法生成手写汉字,仍然还有很大的提升空间。可以说手写汉字生成是一个仍未完全解决且极富挑战性的研究课题。这些挑战主要表现在以下几个方面[8]:
(1)中国汉字字符类别繁多,相较于拉丁语与英语来说,它们通常只有几十个数目的字符组成单词,然后再通过单词组成句子表达所需要表达的含义。而对于中文汉字来说,在1980年制定的国际标准GB 2312—80编码就定义了多达6 763类常用汉字,这远远高于英语和拉丁语。然而这些编码还远远不能满足人们汉字处理信息的需求。在2000年发布的国标18010第一版中大幅度扩展了字符集,定义了27 533类汉字编码标准。在之后的第二版包含42 711个汉字和多种少数民族文字等字符,所收录的字符种类高达70 244类。如果要生成一套符合GBK(中国政府规定的字符集)的字体,需要一个设计师花几年的时间设计大约几万字。
(2)虽然汉字的印刷体有固定的格式,但是针对于手写汉字生成任务来说,手写体的汉字随意性很大,并且缺乏规范性。对于不同的人来说,同一个汉字可能会写成不同的形态,或是同一个汉字的同一个笔画可能都会写成不同的长短,甚至可能会出现写错的现象。例如应该写的笔画没写上、多写了本不该存在的笔画,或者是某些结构出现了错乱。同时人们在用笔书写汉字的时候,根据个人的书写习惯,连笔书写汉字,这样不该连上的笔画就会连上。如果这样的汉字作为手写汉字生成的数据集,也许会给生成汉字的任务带来一定的困难。除此之外,中国书法汉字生成也是一项非常困难的任务,大多数书法创作时有很多的个人感情包含在内,中国书法注重的是意念而不是形态,可能会因为个人感情的原因而将汉字大程度的扭曲。此外,中国上下五千年孕育了太多字体,从最早的甲骨文到后来的楷、隶、行、草等,每一种字体都有他们自己的风格,这无疑增加了手写汉字生成的难度。
(3)中文汉字中有许多汉字都非常的相似,例如大-太、嫒-媛、往-住等,对于手写汉字来说,如果不联系上下文去判别写的非常相似的两个汉字准确率也许会大大降低。所以在生成手写汉字的时候,这些相似的汉字会大大提高生成汉字的错误率,给生成任务带来巨大的挑战。
(4)无论是生成任务还是识别任务,想要得到很好的效果必须要依赖大量的数据集。越多的数据集会给实验带来更好的效果。如果想要生成具有个人风格的手写汉字无疑需要大量的手写汉字的数据集,但是现阶段手写汉字数据库明显不足。在大数据时代,数据的采集和整理都需要花费大量的人力物力,在采集数据集的过程中还需要估计搜集汉字数据集的完整性和正确性。现阶段所拥有较好的数据集包括:①中文手写数据集是由模式识别国家实验室(NLPR)和中国自动化研究所科学院(CASIA)共同整理的,这个数据集是由171个字母数字字符和符号以及3 866中文汉字(DB1.0)或3 755中文汉字(DB1.1)组成。②华南理工大学发布的涵盖单词、词组、文本行、数字、字母、符号等综合手写数据集SCUT-COUCH。③清华大学与腾讯共同推出了中文自然文本数据集(Chinese Text in the Wild,CTW)——一个超大的街景图片中文文本数据集,为训练先进的深度学习模型提供了重要的数据集来源。该数据集包含32 285张图像和1 018 402个中文字符。前两个数据集的总量相对于本文的生成任务来说不够大,而第三个数据集虽然数量庞大,但是由于是街景采集的中文数据集,干扰性太强,更适合运用于自然场景文字的检测和识别中。
针对手写汉字生成的相关研究,本文主要综述以及分析近些年来手写汉字生成任务的发展过程和最新进展。
本章主要介绍与汉字生成相关的深度学习模型与算法。
深度学习是近些年发展起来的机器学习的一个新的分支。深度学习的神经网络的起源要追溯到20世纪40年代的McCullock-Pitts(MCP)[38]人工神经元模型。反向传播(Back Propagation)算法[39-40]的出现加上随机梯度下降(Stochastic Gradient Descent)算法[41]为训练浅层神经网络提供了有力的支撑。1986年Hinton发明了适用于多层感知器(MLP)的BP算法,并采用Sigmoid进行非线性映射。LeCun等人在1989年提出了LeNet的最初模型[42]并在多年的研究改进之后提出了改进模型LeNet-5[43]。2006年Hinton利用一种无监督的方式[28]——“逐层初始化”(Layer-wise pre-training)首次实现了DNNs的模型训练并取得了很好的效果,这为深度学习的兴起带来了曙光。典型的网络结构有卷积神经网络[42-43]、循环神经网络[31-33]、深度残差网络[34-35]和生成对抗网络[36-37]等。下面将对这几种网络做简单的介绍。
卷积神经网络(CNNs)是目前在深度学习中被广泛应用的网络框架,其早期雏形可以追溯到1980年Fukushima发表的关于自组织神经网络模型的论文[44]。在20世纪90年代,LeCun将反向传播和随机梯度下降算法运用于卷积神经网络训练,搭建了LeNet。现有CNNs的基本框架大体可分为卷积层、池化层和全连接层。后续许多深度神经网络如AlexNet等都是在LeNet的基础上所发展出来的。
由于CNNs的输出只考虑前一个输入的影响而不考虑其他时刻输入的影响,这种模型对简单的图片的识别会有较好的效果,如果是一些与时间相关的任务如在篇章中预测一个字是什么等,CNNs这类模型有时会表现得不尽人意。针对此类任务,循环神经网络(RNNs)是一种有效的解决途径。区别于CNNs,RNNs不仅依赖于当前的输入,还依赖于过去的输入。这种方式赋予了神经网络“记忆”的功能。RNNs的权重参数也可以采用反向传播的方式,与前面提到的网络不同的是,由于每一步的输出不仅仅依赖的是当前的网络,还需要前若干步的网络状态,根据这种BP改版的算法叫做Backpropagation Through Time[45](BPTT)。
深度残差网络[34](DRNs)是一种非常深的前向反馈神经网络(这样的网络结构信息流是单向的,不会构成回路)。它有一种特殊的链接,能够将信息从某一层传到后面的好几层。按照惯性思维会认为神经网络的层数越深,所训练的效果会越好。但实际情况往往是由于常规网络的堆叠,当网络很深的时候,梯度消失的现象会越来越不好,同时难以训练,深度残差网络就是解决这个问题的。
近年来,还有一类特别值得关注的神经网络生成对抗网络[36-37](GANs)。对抗生成网络由两个网络组成,一个生成器网络和一个判别器网络,这两个网络可以按照自己的需求设计(如卷积神经网络、循环神经网络和自编码器等)。GANs训练是无监督的,它也不需要标记数据。在训练的过程中,可以看作是两个网络相互博弈竞争的过程,双方在不断地博弈过程中让自身变得更完美。GAN的应用非常广泛,如可以生成高质量的图片,还可以增强照片,从文本生成图片,或是将图像从一个域转换到另一个域等。然而,由于存在训练不稳定、模式坍塌等问题,如何有效训练GAN是一个极富挑战性的课题。
目前深度学习已在众多的领域中被广泛应用。相应的深度学习框架也如雨后春笋般被不断推出。现有比较主流的开源深度学习训练平台主要有Caffe(http://caffe.berkeleyvision.org/)、Torch(http://torch.ch)、TensorFlow(https://tensorflow.google.cn)等。这些训练平台的搭建为深度神经网络的训练提供了极大的便利。
在这部分主要介绍几种利用深度学习的方式生成手写汉字的方法。有学者认为,通过深度学习的方式不仅能够避免传统方式那样需要对数据进行繁杂的预处理,还能够获得比传统方式更好的生成效果。所以近年来提出了不少基于深度学习的手写汉字生成的方法。区别于基于深度学习的方法,基于浅层学习的方法通常关注的是汉字的局部信息。利用算法提取汉字的笔画、部首等局部特征,然后生成目标字符。而基于深度学习的方式通常关注的是汉字的整体风格,对汉字进行风格迁移,将标准字体风格转换为想要生成的手写汉字的风格。下面将详细介绍现有基于深度学习的手写汉字生成方法。
在深度学习的领域中,以卷积神经网络(CNNs)为基础的模型最受关注,在语音处理、自然语言处理、图像处理等任务中都能看到CNNs的身影。CNNs的网络结构与生物神经网络结构相类似,其复杂度相比于全连接神经网络大大降低,在图像处理方面的优势尤为明显。CNNs发展过程已在第1章中简要提及,虽然CNN在图像识别(例如AlexNet在2012ImageNet(ILSVRC12)竞赛中获得大幅度超过第二名的冠军成绩以及2014年在ImageNet挑战赛(ILSVRC14)获得第一与第二名的GooLeNet[46]和VGGNet[47])的任务中表现不俗,但是在生成任务中的应用要少得多,所以将CNNs用到手写汉字生成的相关文献的报道一直很少。这主要是由于手写汉字的类别数很多,而能够运用的手写汉字的数据集却不多。这使得常规的仿真实验难以训练或是需要很长的时间训练。在2010年中科院自动化所(CASIA)公布的脱机手写汉字样本库为手写汉字生成提供了良好的数据集,基于深度学习的手写汉字生成的方法得到了学者们的重视,近几年不断有人利用不同的方式生成手写汉字。下面将详细介绍基于CNN实现手写汉字生成。
研究者肖奋溪所发表的文献[26]中提到Baluja实现了利用神经网络对汉字分类[48],并进行了测试,平均准确率可以达到90%以上,说明深度学习的模型对字体的风格特征提取有很好的效果,证明了深度学习模型用于汉字风格迁移的可行性。该类方法主要涉及如下几个相关处理模块:
(1)数据处理技术:在训练的过程中为了避免出现过拟合的现象以及提高模型的鲁棒性,除了采用Dropout一些经典的技术之外,还采取了一些其他的方法。根据网络的输入输出特点对输入数据进行适当的处理,例如数据增强、调整大小、主成分分析、去噪等操作。在上面所提到的文献中所采用的训练图片均是像素点图片,在送入模型训练的时候将像素值等比例映射到一定范围。由于其采用的是TTF(True Type Font)文件生成的矢量图,所以需要将字体文件进行转换。
(2)模型设计:文献[26]中采用的CNNs一共有15层,其中9层为卷积层。在每一层卷积层后会伴随一个批量正则化,调整该层输出的均值与方差,使得输出的结果为高斯分布。在之后采用线性整流函数[49](Rectified Linear Unit,ReLU)作为激活函数,使得梯度下降算法能够更快地收敛。模型中还额外添加了总变误差(Total variation loss),使得生成的图片更为平滑,能够避免出现过多的噪点以及中断。总变误差为:
在网络末尾输出层并没有采用常用的结构全连接层,这是因为中文汉字生成时,采用全连接层生成的图片的噪声过于明显。图1[26]展示了使用该方法实现的汉字风格迁移的实验效果。
图1 卷积神经网络模型在测试集中的表现Fig.1 Performance of convolutional neural network model in test set
虽然使用这样的方式生成图片的清晰度不是很好,但是在风格辨识方面还是很明显的,能够轻易地识别生成的汉字。但该方法仍然存在一定的缺陷,例如只能进行一对一风格转换,即只能一种字体转换成手写汉字。除此之外参数训练量大,存储空间要求高,使得模型训练时对设备有一定的要求。
上文中作者[26]认为卷积神经网络模型对于汉字风格迁移有着较大的局限性与不足,所以尝试采用另一种基于编码-解码器[50](encoder-decoder)的网络模型对字体风格迁移任务进行尝试。
在文献[26]中,编码器与解码器采用的是卷积、转置卷积和连通结构U-Net。编码器由多层卷积层构成,卷积通道不断增加,单个卷积通道的尺寸不断减少,解码器由转置卷积层构成,卷积通道不断减少,单个卷积通道尺寸不断增加。编码器与解码器都为8层。每层卷积都包含了批量正则化与激活函数,除了最后输出层的激活函数是双曲正切函数(tanh)之外,其他层的激活函数均为Leaky ReLU。在实验中将标签引入U-Net结构,在编码器完成的编码中拼接一段长度为40的标签编码。该网络结构如图2[26]所示。
图2 编码-解码器汉字字体风格迁移模型结构示意图Fig.2 Encoder-decoder Chinese character font style migration model structure diagram
该模型能够在大样本训练下对字体进行风格迁移,特征提取的效果较好,除此之外还通过U-Net实现了在编码中嵌入标签,对生成类别有十分显著的影响。虽然生成的效果优于卷积神经网络的效果,但是该模型对小样本的处理仍然不佳,生成的效果明显有所降低。图3至图4[26]是分别在大样本与小样本的情况下训练的效果图。
图3 在大样本的数据集下生成的结果Fig.3 Results generated under large sample data set
图4 使用小样本数据集生成的结果Fig.4 Results generated using small sample data set
在手写汉字生成的领域里,为了进一步地扩大手写汉字生成的应用领域和提高生成效果,研究人员将生成对抗网络运用在手写汉字中[23-25]。生成对抗网络对于图片的生成有着较好的效果,如白海娟与周未等人的工作[24]所提到的:生成对抗网络模型的训练方式是一种典型的非监督学习,需要大量的训练数据。在每次小批量样本训练时,判别器试图区分真实字体和生成的假字体,而生成器不断地提高自己的性能希望尽可能地欺骗判别器,在二者不断抗衡的过程中提高生成字体的质量。虽然生成对抗网络是近几年才出现的新模型,但是它在生成图像的任务中有着自己的优势,现阶段在高分辨率的图像生成任务中也有优异的表现。图5[24]是使用GANs生成的汉字。
图5 金陵宋体转换手写刻印宋体Fig.5 Jinling Song type conversion handwritten and engraved Song type
滕少华和孔棱睿[25]首先采用端到端的方式实现一对一的字体风格迁移,但是这一对一的映射关系,无法满足多种字体转换的实际运用需求,所以在一对一的字体风格迁移方法的基础上增加了迁移条件,从而实现一对多的字体风格迁移。该方法主要是通过在生成对抗网络的损失函数上添加一个额外的信息作为字体风格迁移条件,将输入字体图像与转换条件(不同的数字代表不同的字体之间的相互转换)进行组合后送到网络模型中。图6和图7[25]展示了一对一的汉字风格迁移与多对多的手写汉字风格迁移的实验结果。
图6 一对一字体风格迁移实验结果Fig.6 One-to-one font style transfer experiment results
图7 多对多的字体风格迁移实验结果Fig.7 Many-to-many font style transfer experiment results
除此之外,研究人员还将汉字生成的任务拓展到具有个人风格的手写汉字生成任务上。虽然从标准字体转换到手写汉字也是图像风格迁移的一种,但是与标准字体迁移到另一种标准字体不同。因为每个人的手写字体都有自己独特的风格,没有一个统一的标准。虽然手写汉字生成任务面临着巨大的挑战,但是研究人员在基于深度学习的手写汉字生成任务中仍然拓展出一片天地。在Chang与Zhang等人2018年的研究工作文献中[23],针对汉字数量多,但是手写汉字数据集较少,并且大多数数据集都是非配对的问题,提出了一种利用循环生成对抗网络(CycleGANs)的方式生成手写汉字,解决了训练数据不足的问题。在手写汉字生成的过程中,要求用户写出大量的汉字作为转换字体的训练数据是不符合实际的,而且用户每天每次写同一个可能都会发生一些细微的变化,这种现象充分说明了一个能够利用非配对的训练集的深度学习模型是有价值的。采用这样的方式使深度学习模型关注于汉字的整体风格,不需要对生成的汉字进行微调。该模型将DenseNet-5与DenseNet-7[51]运用于CycleGAN的生成器的构架中,在CASIA-HWDB1.1和兰亭字体数据集上以生成汉字内容的准确性评价指标,获得最好成绩达到90.03%的准确率。图8与图9[23]分别为模型生成器的结构图与生成的结果图。
图8 DenseNet-5 CycleGAN中生成器的构架Fig.8 Architecture of generator in DenseNet-5 CycleGAN
图9 采用DenseNet-5和ResNet-6在兰亭数据集上生成的实验结果Fig.9 Experimental results generated on Lanting dataset using DenseNet-5 and ResNet-6
使用上述方式生成的手写汉字在整体风格上有较好的效果,生成的汉字的识别率也比较高,虽然有少量的生成汉字字体模糊,但总体来说是较好的手写汉字生成方式。同样的它也存在着与卷积神经网络同样的问题,大多数生成模型只能进行一对一的风格转换,在要将其他字体转换成手写汉字的时候就需要重新训练模型。此外,模型复杂,训练时间长,存储量大也是神经网络的一大劣势。
本文回顾了手写汉字生成的研究背景,系统地介绍了基于深度学习的手写汉字生成方法的基本思想、主要步骤及关键技术,并指出了相应方法的优点及局限性。
随着移动端智能设备在人们日常生活中的广泛普及,特别是触摸屏的迅速普及促使传统的键盘输入发展为虚拟键盘、手写和语音等其他方式。在相关的调查中发现,手写输入方式占总输入的13.1%,按照使用汉字的人口比例来算,这无疑是一个巨大的数字。这种输入方式潜在给手写汉字生成任务的研究者们提供了一定数量的手写汉字研究样本。这种输入方式能够更便捷地获取具有个人风格的汉字样本,给未来具有个人风格的手写汉字生成模型迁移到移动端提供了一定的数据集支撑,使得手写汉字生成任务的应用前景更加宽阔。因此,手写汉字生成技术仍值得人们更深入地研究。
手写汉字生成经过多年的发展,生成的汉字的正确性与多样性有了很大的提高,特别是在以CNNs为代表的一系列深度学习模型的出现,使得手写汉字生成工作有了很大的提高。在大数据集的支持下,节约很多人力物力并能够生成效果较好的手写汉字。虽然在研究者们的共同努力下,手写汉字生成任务有了很大的进展,但是仍然有很多问题尚待解决。根据现阶段存在的问题,如下研究方向仍值得深入研究:
(1)在汉字生成的领域中,基于深度学习的方式,采用卷积神经网络等深度学习模型只能实现一对一的汉字风格转换,例如从楷体字转换成宋体字。如果要实现其他风格的转换则需要重新训练模型,这样的方法无疑花费了大量的时间。如何实现多种字体域之间的相互转换仍然是一个值得深入研究的问题。
(2)因汉字的结构复杂,存在大量结构相似的字体,使汉字生成的效果不能达到令人满意的程度。特别是在手写汉字生成中,手写汉字的数据集通常存在一定的噪声,这种噪声可能会带来汉字的形变或是结构错误。到目前为止,还没有一个抗干扰能力强的高效生成方法,如何利用存在一定噪声的数据集生成效果较好的手写汉字仍值得深入研究。
(3)无论是基于浅层学习的方式还是深度学习的方式或多或少都需要人工进行标注,需要人工处理就意味着需要耗费一定程度的人力资源。因此,利用现有互联网未标注数据,实现手写汉字生成的高效方法仍值得深入研究。
(4)在利用生成对抗网络生成手写汉字的过程中,不可避免地会出现模式崩溃的现象。产生模式崩溃的现象的原因主要有以下两点:①生成对抗网络本身就易产生模式崩溃的现象;②对于手写字体,经常会出现相似的字,由于手写汉字可能会产生连笔等,可能会出现两个字非常接近甚至难以区分,这也会导致模式崩溃。除此之外,不同的字体之间也可能会出现相似的字。以上这两种现象都会导致模式崩溃。因此,如何解决GAN在汉字生成任务中的训练不稳定及模式坍塌问题,是GAN在该任务中取得成功的关键。
(5)另外手写汉字生成成果缺乏标准的鉴定和评价依据,而且并未建立标准的汉字生成成果测试的数据库与测试机制,大多数评价是通过肉眼结合少量的评价指标判别生成效果好坏,评价指标通常为多样性与准确性等。因此建立统一的汉字字体库并且制定一套完整的测试、评价以及鉴定机制也是必要的。
总之,手写汉字生成任务现阶段仍需要研究者们在该领域进行不断的探索。希望通过本文能够让研究者们对手写汉字生成的研究工作有较为全面的认识。