基于残差生成对抗网络的书法字体生成方法
2021-09-23吴晓军杨红红苏玉萍
赵 静,吴晓军,杨红红,苏玉萍
(陕西师范大学 计算机科学学院,陕西 西安 710119)
书法艺术是中华民族文化最具代表性的标志之一,它不仅在内容上记录了历史文化、历史事件、历史环境,而且在书写形式上也具有鲜明的历史特色和个人特色[1-2]。传统的书法家字体创作方法主要是通过现代书法家手工绘制字模,然后经过数字化处理存储在电脑中。手工创作一整套字体需要耗费巨大的时间和人力,并且质量不高。随着现代计算机行业的发展,字型创作也有了新的方向。目前,字型创作主要分为两类:基于形态学的字型创作和基于深度学习的字型创作。基于形态学的字型创作方法一般以特定字形为基础,通过改变或组合某些结构特征和几何形状,设计出具有一定风格特征的字型。2014年,栗青生等[3]提出基于特征加权的汉字点笔画生成方法,在汉字字型生成的过程中,对相应的特征点进行加权来灵活控制汉字字型生成后笔画的粗细、形状和大小,从而提高汉字字型的生成效率。因该方法在汉字点笔画生成过程中,需要对每一个汉字的每一个笔画进行参数设置,对于细节处理仅采用B样式曲线方法,因此存在算法计算复杂、实时性差、样式少等问题。为了解决此问题,熊晶等[4]提出基于字形动态描述库的Webfont 汉字生成方法,该方法中字型描述库综合每一个字型的所有特征点,生成每个字型的基本骨架,然后通过抗锯齿优化、B样条曲线和贝塞尔曲线对字型曲线进行曲线生成和优化,从而生成样式更多的字型。但是,该方法需要对每一个字型进行人工定位,同时当某一个笔画对应大量特征点时,进行多段曲线生成会在曲线连接处产生多余笔画。随后,刘成东等[5]提出一种基于部件拼接的高质量中文字库自动生成方法,该方法优先选择常用汉字,根据用户书写的少量汉字字型进行部件分割,然后根据分割后生成的部件进行不同比例的缩放拼接,最终生成完整的汉字。虽然,上述方法在一定程度上可以生成独具风格的汉字,但是在字体生成过程中需要进行人工干预,不能完全实现自动化[5]。
随着深度学习理论的提出和计算设备的改进,基于卷积神经网络的深度学习算法广泛应用于计算机视觉领域,一些学者将汉字字体生成问题转化为风格迁移问题[6-8],将字体生成视为汉字从一种字体到另一种字体的映射。Wen等[9]提出了基于卷积神经网络模型的协作字形生成架构,针对笔画缺失问题,提出协作策略训练和笔画修正技术,同时利用数据增强技术来充分复用字体笔画以减小训练集大小,使字形产生自适应的预变形、标准化和配准。传统的风格迁移主要是通过卷积神经网络实现,存在生成速度慢、生成图片质量不高等问题。生成对抗网络的出现[10],为字体风格迁移任务提供新的解决方案。生成对抗网络在传统神经网络中加入鉴别器网络,并通过对抗训练,提高图片生成效果。Isola等[11-12]提出基于条件对抗网络的图片到图片的转换方法Pix2pix,在网络输入端增加特定的额外信息y,实现端到端的图像转换,但是存在图片细节模糊的问题。Azadi等[13]提出基于GlyphNet和OrnaNet两个生成对抗网络的Multi-Content GAN,用于字体轮廓生成和纹理生成。但是Multi-Content GAN针对英文字母的字体生成,由于英文字母与汉字字体差异较大,汉字结构繁多,细节更复杂,因此该方法在汉字字体生成方面具有一定的局限性。针对汉字字体的生成,Tian[14]提出Zi2zi经典字体生成网络,并采用多种损失函数同时对生成结果进行修正。Jiang等[6]提出基于生成对抗网络的DCFont网络,生成器利用两个独立的卷积神经网络分别对字体的内容和风格进行编码,然后再进行连接解码和特征重构,从而实现字体生成,但是两个独立网络参数过多、训练复杂。Chang等[15]提出一种基于分层生成对抗网络的字体生成方法,通过引用分层生成器与分层鉴别器,提取局部特征与整体特征,从而生成更高质量的汉字字体。Lin等[16]提出基于最小二乘生成对抗生成网络的字体生成方法,让训练更加稳定,但是需要提前对笔画进行处理。Wen等[17]提出基于协同笔画的字体生成方法,但是这种方法需要对每种笔画的不同风格进行提取,而书法字体具有不同风格,笔画多变并且连笔情况较多,无法准确提取。此外,这些方法大多针对硬笔书法,对于书法字体生成具有局限性,同时这些方法网络结构复杂,不易训练。
综上,目前主流的汉字字体生成方法存在字体结构模糊、笔画细节不清晰、生成字体质量不高以及生成字体库不完整等问题。当前的汉字字体生成方法大多采用硬笔书法,而书法大家多采用毛笔或雕刻,对细节有更高的要求,为了更好地进行书法家字体的迁移学习,实现高质高量的书法字体自动生成,本文提出一种基于残差单元的生成对抗网络汉字生成模型,该方法首先以Zi2zi网络为骨干网络,构建基于残差单元的生成器,优化字体生成效果;其次,对骨干网络中的编码器进行修正,将其低层中的卷积层修改为残差单元以捕获更丰富的字体细节特征;然后设计三要素损失函数,克服生成字体模糊问题,提高生成字体效果;最后,通过对抗训练对不同书法家字体进行学习。通过实验,本文所提出的方法可以实现书法风格汉字字体的自动生成,并且生成的字体效果优于其他经典算法,生成的字体不仅结构清晰、线条优美,而且更接近真实书法风格。此外,通过对字体进行大规模字库生成,利用MOS指标进行质量评价,进一步证明本文方法具有生成完整字体库的能力。
1 算法背景
本文以Zi2zi为骨干网络,该网络是基于条件对抗网络的字体风格转换方法,网络结构如图1所示。该网络由两部分组成:生成器G和鉴别器D,生成器G采用U-Net结构,由编码器和解码器组成,其学习源字体图像到目标字体的映射;鉴别器D为全卷积网络,用来计算目标字体与生成器生成字体的真假概率。网络训练时,鉴别器增强自身鉴别数据真假的能力,而生成器逐渐生成足够逼真的字体样本以欺骗鉴别器,随着两者交替训练,最终生成器和鉴别器会达到 “纳什均衡”,即鉴别器可以正确区分生成字体与真实字体,而生成器可以生成足够逼真的字体样本以欺骗鉴别器,网络停止训练,最终实现字体生成。
图1 Zi2zi网络
2 基于残差生成对抗网络的字体生成模型
基于条件对抗网络的汉字风格转换方法Zi2zi可以实现字体的风格转换,但是存在图片细节特征缺失、生成效率慢等问题。针对以上问题,本文提出一种基于残差网络的生成对抗网络模型的书法字体生成方法,网络结构如图2所示。该模型采用编码器-解码器结构,其编码器分为两阶段:首先是五层传统卷积结构,之后进行五层残差与卷积交替操作,同时与解码器进行跳跃连接来更好地捕捉细节特征。针对网络生成效率慢的问题,本文通过构造三要素损失函数,添加重构损失、对抗损失和L1损失作为总体损失函数,达到提高网络生成速率的目的。
图2 基于残差网络的生成对抗网络
在进行网络训练时,首先输入源字体图片,通过生成器进行下采样操作,对输入字体图片进行降维处理并提取字体中的有效信息,然后经过残差单元增加字体特征多样性,再经过上采样层放大图像,输出与源字体图片同样格式的图片。随后,将生成器生成的图片分别输入生成器和鉴别器网络进行重构,并判断字体为真的概率。最后,经过损失函数反向传递更新网络参数,实现书法字体的自动生成。
2.1 改进的残差单元
如图3所示,传统的残差单元[18]通常由两个卷积层和残差输入组成,通过近路连接(shortcut)进行恒等映射y=F(x)+x形成,但是这种经典的残差网络卷积核尺寸过大,使参数增多,会造成网络不易训练的问题。
图3 传统的残差单元
因此,本文提出改进的残差单元,如图4所示。改进残差单元包括3个分支:恒等映射分支、卷积分支和池化分支,同时将多分析信息进行融合,并利用1×1的卷积进行通道降维,在降低网络参数的同时更好地保存汉字结构和细节特征。改进残差单元的计算公式如下:
图4 改进的残差单元
fout=σ(Conv1D(x,f卷积(x),f池化(x)))。
(1)
其中:fout表示改进残差单元的输出;Conv1D表示一维卷积;x代表改进残差单元的输入;f卷积(x)代表卷积分支的输出;f池化(x)表示池化分支的输出;σ表示激活函数。本文激活函数采用带泄露修正线性单元(leaky ReLU)的激活函数
(2)
其中:z为函数输入值;leaky ReLU通过给所有负值赋予一个非零斜率α,进行神经元的激活,使其导数恒不为零,保留更多的字体细节。
2.2 基于残差的生成器
在骨干网络中,生成器仅采用U-Net编码-解码结构,无法完整表达汉字结构,在生成字体过程中,会出现细节缺失的问题。因此,本文方法在原生成器的编码器低层添加两层残差单元,组成5层卷积与残差单元交替结构,并将编码器与解码器利用跳跃连接相连,最终构成基于残差的生成器,以更好地保存汉字结构和细节特征,其网络结构及网络输入及输出参数如图5所示。
图5 基于残差的生成器
2.3 三要素损失函数
在Zi2zi中,损失函数由对抗损失、L1损失构成。对抗损失分别计算鉴别器D产生的对抗损失,L1损失计算生成图片与真实图片的差距。本文损失函数增加重构损失,提高网络生成效率。生成对抗网络不同于传统的神经网络,其训练过程中生成器参数的更新来自于鉴别器的反向传递,因此对抗损失函数定义为
Ex~pdata(x)[logD(x)]+
Ez~pz(z)[log(1-D(G(z)))]。
(3)
其中:x表示真实图片数据分布;z表示输入生成器G的随机噪声;pdata(x)表示真实的数据分布;pz(z)表示输入噪声z的数据分布;G(z)表示生成器G生成图片的数据分布;D(·)表示鉴别器D判断图片是否真实的概率;E(·)表示分布函数的期望值。在此,鉴别器的目的是使D(x)接近1,而使D(G(z))接近于0。因此,鉴别器D要最大化损失函数,生成器G要最小化该损失函数。
L1损失是生成器生成的假图片与真实数据的绝对差值,公式为
LL1=|Gn(z|y)-xn|。
(4)
其中:Gn(z|y)表示经过增加条件信息y后生成器生成的第n个假数据;xn表示第n个真实数据。
由于L1损失计算生成图片与真实图片之间基于像素的差值,其容易造成生成图片模糊的问题,因此为了保证生成图片的质量,进一步提高生成效率,本文引入重构损失,定义为
Lr=Ez,y[‖G(z|G(z|y)),G(z|y))‖MSE]。
(5)
重构损失用来计算重建图像G(z|G(z|y)与生成图像G(z|y)的损失,损失采用均方误差MSE计算。因此,本文基于三要素损失函数的总目标函数为
L=LcGAN(G,D)+λ1LL1(G)+λ2Lr(G)。
(6)
3 实验及分析
3.1 数据集
在深度学习训练时,需要使用大量的训练数据。由于传统书法字体生成方向目前没有公开的数据集,本文源字体采用默认黑体字体,生成的目标字体选择颜真卿颜体、欧阳询楷体、启功简体和文征明小楷四种字体。在建立数据集时,由于目标字体是根据古代书法家书写的原稿后期制作而成,目标字体字库中会缺失部分汉字。因此,本文在不同字体中选择数据时,选取源字体和目标字体中相同的字型作为数据集。如图6所示,每两列为一组,每组左侧为源字体,右侧为目标字体。
图6 书法字体数据集
3.2 实验过程与对比算法
3.2.1 实验过程 本文实验使用的操作系统为Ubuntu 16.06,图像处理器(GPU)采用NVIDIA GTX 1080Ti,网络框架使用基于GPU版本的Tensorflow1.2深度学习框架。实验数据从制作的数据集中随机选取900个作为训练样本,设置图片大小为256×256像素,迭代次数为500,批处理大小设为16,初始化学习率为0.001。基于本文的网络结构对4种不同风格字体进行训练学习。
3.2.2 对比方法与评估指标 为了验证本文方法的有效性,本文采用消融实验定性分析网络中的残差单元和损失函数对实验结果的影响。此外,为了进一步验证本文方法的可行性,本文除了主观的定性分析外,以均方误差MSE和SSIM为衡量指标进行定量分析,判定网络训练生成效果,与其他2种经典图像生成算法:Pix2pix和CycleGan进行对比分析。此外,为了探究在完整字体库生成方面本文所提出方法的有效性,本文对字体进行大规模生成,并通过MOS指标对生成字体库进行评价。
3.3 实验结果分析
3.3.1 消融实验分析 本文在骨干网络的基础上增加了残差单元结构,为了分析残差单元对字体生成效果的影响,在不改变其他网络结构的条件下,对本文方法和骨干网络进行实验对比。以生成文征明的字体为例,对比结果如图7所示。实验结果表明,本文提出方法相对于骨干网路Zi2zi具有更好的生成效果,并且增加残差单元的效果优于去掉残差单元的效果,且噪声更少。
图7 残差单元分析
为了探究本文所提出的三要素损失函数对字体生成效果的影响,以文征明字体为例,损失函数消融分析结果如图8所示。通过结果图可以发现,当三要素损失函数共同作用时,生成效果明显好于只有一种损失函数或某两种损失函数作用时,只有一种损失函数或某两种损失函数作用时,生成的字体会产生笔画缺失等问题,如图8中第二行和第四行的“趟”字。
图8 损失函数分析
3.3.2 与主流算法的对比分析 将本文算法与骨干网络Zi2zi及其他2种经典的图像生成算法Pix2pix和CycleGan[19]进行对比试验定性分析,实验结果如图9所示。
图9 实验结果对比
通过图9可以看出,在学习颜真卿颜体、欧阳询楷体、启功简体和文征明小楷4种风格字体时,本文算法能够实现字体生成中对字型和风格轮廓的特征学习,字体生成效果明显优于其他3种算法。本文将残差单元融入卷积网络,同时重新构造基于三要素的损失函数,实现对字体细节的准确描述。实验结果表明,本文方法在生成字体字型结构和笔画细节等方面具有较好的效果,字型结构更清晰,细节更逼真,其生成字体效果基本与目标字体媲美;而Pix2pix和CycleGan两种方法生成存在明显的字体结构模糊、笔画细节不清晰等问题,这是由于Pix2pix仅采用对抗损失和L1损失进行优化,无法控制字体细节;CycleGan网络为无监督学习,对于汉字生成具有局限性。骨干网络Zi2zi在特征提取中仅使用普通的卷积网络,存在对字体特征细节描述不准确,生成字体模糊的问题。
定量分析如表1所示,本文所构建的网络优于其他方法,具有最低的MSE值和最高的SSIM值,表明本文所提出的算法具有较好的字体生成效果。
表1 定量测量结果
3.3.3 MOS评价指标 本文以启功字体和文征明字体为例,利用所提出的算法进行字库完整生成,目前实验生成7 552个启功字体和文征明字体,利用MOS指标对生成字体进行人工评判。其中,每一项的最高评分为5分,最低评分为0分,分值越高,代表字体的效果越好。请5名书法老师和10名具有研究生学历的评估者分别对生成字体进行评分,计算每个字的MOS值,以总体平均分作为生成字体库的最终得分,结果见表2。同时,对字库进行统计分析,如图10所示,本文算法生成字体具有良好的生成效果,超过生成字库总数55%的字体MOS评分在3分以上,符合实际应用的需求。
图10 生成字体失败示例
表2 MOS评价结果
此外,通过对字库的扩充实验发现,本文方法仍有不足之处,生成字体失败示例如表3所示。当字体笔画稠密或者字形复杂时,网络对特征学习存在困难,生成的字体虽然具有书法风格,但是字体笔画细节存在模糊问题,因此网络在极精细的字体细节生成方面还有待改进。
表3 MOS统计
4 结论
本文针对传统书法字体生成问题,提出了一种基于残差单元的生成对抗网络的书法风格字体生成方法,该方法通过生成器与鉴别器对抗训练,学习书法字形的特征。通过建立4种不同风格的书法字体数据集并进行实验,结果表明本文算法在书法字体生成方面具有很好的效果,能够实现字体细节的描述,解决生成字体结构模糊、笔画细节不清晰的问题。本文方法不仅能够生成高质量的字体,而且可以应用于完整字体库的生成,在一定程度上具有补充字体库的能力。