基于生成对抗网络的手写汉字字库生成的设计和实现

2023-11-20 10:59石裕林
科学技术创新 2023年25期
关键词:样本空间手写字体

石裕林

(长江大学,湖北 荆州)

1 基于生成对抗网络的手写汉字图片生成模型的原理

1.1 生成对抗网络(GANs)基本原理

GANs 的基本原理是通过生成器G 和判别器D 的训练,使两部分相互对抗的过程[1]。GANs 的任务是训练一个尽可能完美的生成器G,从而实现随机的噪声z 到生成的数据x 的映射:G(z)->~x。同时训练一个尽可能完美的判别器D,用来判断其输入的数据是来自真实样本数据集还是生成的数据。

图1 GAN 网络的基础框架

生成器G 和判别器D 模型之间进行着极大值和极小值的博弈中分别是对方的竞争对手,它用下列公式表示。

式(1)中的x 表示为真实图片,输入生成器G 的z,G(z)代表其为生成器G 输出结果,D(x)为判别器D判断输入的真实图片是否属于为真实数据,D(G(z))为判别器D 的输出结果,其表示输入的图片来自真实样本数据的可能性。

训练过程如图2 所示。

图2 生成器判别器与样本示意

图2 中曲线的起伏表示其各自的数据分布,曲线Pdata(x)代表的是真实数据,曲线D 为判别的概率,曲线Pg(x)代表生成器生成样本的分布状况。图片下部分z 表示随机噪声,z 到x 表示噪声输入生成器之后的分布情况。

(a)状态是训练刚开始的时候,多次训练之后达到(b)状态,当训练达到(c)状态,此时生成样本已经比较接近真实样本了。反复对以上训练过程进行迭代最终达到理想状态(d)。

1.2 基于生成对抗网络的CycleGAN 实现汉字字体生成的原理

CycleGAN 由两个相互对应的GAN 网络所组成,这样就形成了一个环状的网络结构。这两个GAN 网络使用两个生成器,并且自身拥有专属自己的判别器也就是说其一共有2 个生成器和2 个判别器[2]。其网络模型如图3 所示。

图3 CycleGAN 模型

如图3 所示,X 代表X 样本空间的数据,Y 代表属于Y 样本空间的数据。生成G 通过输入X 产生Y样本空间的数据,生成的Y 样本空间再由生成器F 重构为X 样本空间的原图像;与之对应的生成器F 输入为Y 生成的为X,再由生成器G 重构为Y 样本空间图像。DX 和DY 分别是两个判别器用来判断各自的生成数据是否满足对应的样本空间,从而使两种不同域的图片进行很好的转换。

因此,实际上CycleGAN 模型的目标就是学习X样本空间到Y 样本空间的映射。我们将这种映射关系称为G,也就是模型中的生成器G,G 可以将输入的样本数据X 转换为Y 域的样本数据即:G(X)->Y。同样的,Y 样本空间到X 样本空间的映射可以表示为:F(Y)->X。对于映射G(X)->Y,我们还需要一个判别器DY对输入的生成数据判断其是否来自真实数据。由现在生成器G 以及判别器DY,则GAN 损失如公式(2)所示:

实际上该损失其实与原始的GAN 损失如出一辙,如果仅仅使用这一个损失进行训练明显是不行的。这是因为映射G 完全可以将X 域的图像全都映射为Y域中的同一张图片,这样损失就失去了它的作用。所以,作者又提出了叫做循环一致性损失。同样的对于映射F(Y)->X,我们定义器判别器为DX器,根据F(G(X))近似于X 和G(F(Y))近似于Y,循环一致性损失就为如公式(3):

对另一个GAN 的损失进行定义为LGAN(F,DX,X,Y)。最终的损失就由三个部分所组成如公式(4)所示:

那么CycleGAN 的原理可以简单理解为:对两种不同风格的图片进行相互转换。

1.3 基于生成对抗网络的Pix2pix 实现汉字字体生成的原理

Pix2pix 是基于CGAN 的网络模型,CGAN 与传统的GAN 不同,传统的GAN 生成器输入的数据只是一个随机的噪声,通过随机噪声来生成一张图片。从随机噪声~z 来学习到目标图片y:G:~z→y;而CGAN 的生成器输入的数据不再只是单单一个随机的噪声,而是传入某一张图片x 和某一个控制条件z 来生成一张假图片,那么CGAN 能通过输入的x 和z 来生成目标图像y:G:(x,z)→y。那么CGAN 的生成器G 的目标就不仅仅是为了欺骗判别器D 而且还需要让生成的图片满足控制条件z。而CGAN 中的判别器的输入数据为一个真(假)的样本图片和控制条件y 用来判断是否满足控制条件y。在以前的研究中我们发现,对于CGAN 来说,如果增加一个另外的损失,例如L2 距离(生成图片与样本图片),会有更好的效果。这样判别器的损失不发生变化,而生成器的损失发生了变化。但是,在P.Isola, J.Zhu 等人文献中使用了L1 距离(公式(5)),这是因为与L2 距离相比较,L1 距离所生成的图像会更清晰,能减少模糊的产生。

Pix2pix 的生成器使用了U-Net 网络结构,U-Net加入了残差连接,将对应的feature maps 和解码之后的与之具有相同大小的feature maps 按照各自的通道拼接在一起,这样就可以将样本卷积之后的不同分辨率的细节保存下来。

对于汉字字体图片生成来说,采用Pix2pix 网络模型需要相互匹配的数据集。两种风格字体图片的样本域中的图片需要进行配对处理。

2 相关数据集的处理

2.1 手写汉字图片的单字切割

本文所使用的数据有人工手写的近600 多个手写汉字图片作为目标生成字体和用于参考字体图片的方正楷体、方正黑体,每个共3 755 个印刷字体图片。首先对手写汉字图片进行单字切割工作。其次利用垂直投影算法对手写汉字图片进行处理,达到单字分割的目的[3]。分割完成后将每张图片的背景处理为白色,得到599 张白底黑字的手写汉字图片。最后选择方正黑体和方正楷体作为参考字体,使用python 生成字体库中常用汉字3 755 个汉字图片,同样调整生成图片的大小与手写汉字图片相一致[4]。

2.2 配对数据集的生成

Pix2pix 网络模型的训练需要相互匹配的数据。利用华为OCR 对单个手写汉字图片进行识别,对处理好的599 个手写汉字图片进行识别建立其汉字索引,用于与参考字体图片进行匹配。

进行识别之后,我们就得到了即将进行训练的手写汉字索引,将参考字体图片与手写字体图片进行配对。即新建两个文件夹A 和B,文件夹A 用来放参考字体图片,文件夹B 用来放手写汉字图片,对于文件夹A 中的每一个参考字体图片在文件夹B 中都能找到与之同名的手写汉字图片[5]。将两个相互配对的字体图片进行拼接,我们能更清晰的看到参考字体与目标字体的对应关系。

以上工作全部完成后,我们基本已经完成了对Pix2pix 模型数据集的处理。

3 手写汉字图片生成模型的设计与实现

3.1 基于CycleGAN 的手写汉字生成方法的设计与实现

将参考字体图片作为X 样本空间,手写汉字图片作为X 迁移的对象Y 样本空间,使用两个对称的GAN 网络进行训练[6]。模型如图4 所示。

图4 CycleGAN 网络模型结构

我们希望将汉字图片样本记为A 转换为手写汉字图样本记为B,于是构建了两个生成器GAB 和GBA。代表将A 域的图片转换为B 域的图片、将B 域的图片转换为A 域的图片。

使用预先处理好的数据集,共有1 198 张汉字图片,包括599 张方正黑体汉字图片与599 张手写汉字图片,作为样本空间A 和B。将A,B 样本空间中的图片各取出500 张为训练集,剩下的为测试集。

数据集准备完毕后,进行网络的搭建,定义两个生成器和两个判别器。将判别器的loss 定义为生成图片与真实图片的差异,假图判定的概率趋向于0,真图判定的概率趋向于1。使用Adam 优化算法,初始学习率定义为0.0002。

经过150 轮训练之后结果如图5 所示。

图5 生成过程图片展示

图5 中其左边两列为的inputA 表示生成器GAB的输入,FakeB 则为生成的样本空间B 的假图片。右列的inputB 表示生成器GBA 的输入,FakeA 则为生成的样本空间A 的假图片。

3.2 基于Pix2pix 的手写汉字生成方法的设计与实现

Pix2pix 网络模型是基于CGAN,需要一一配对的数据集,在本次实验中,我们选择方正黑体作为参考字体,手写汉字作为迁移目标图片。

在进行对Pix2pix 训练数据进行处理时,要保证每个相对的汉字图片在轮廓、位置上大致相同。所以需要对数据集进行优化、检查。

对网络的基本模型确定之后,我们开始对基于Pix2pix 的手写汉字方法进行实现。

定义一个生成器GTrainer 用与训练风格A 向风格B 的转换和一个判别器DTrainer 用于在输入条件为参考字体的情况下,判断输入的图片是否为真实图片。其loss 定义为判别输入的图片是否为手写汉字的二分器,使用Adam 优化算法将loss 尽量降低。初试学习率设定为0.0001,batch_num 设置为1,每200 个批次的训练固化一次模型[7]。在进行200 轮的训练之后,使用固化的模型进行预测,其结果如图6 所示。

图6 Pix2pix 汉字生成图片

如图6 所示,经过200 轮训练后其生成的汉字图片与目标汉字各方面都比CycleGAN 模型的效果要好。

综上所述,本文使用Pix2pix 网络模型,在手写汉字的生成方面具有巨大的优势。对于一些笔画少,简单的汉字生成效果与目标汉字的相似度较大,而对于一些笔画复杂的汉字生成效果有待改进。

结束语

本文提出了一种比较有效的使用CycleGAN 和Pix2pix 网络模型的手写汉字生成方法。分别使用配对的和不配对的数据集对手写汉字的生成进行了尝试。分别测试了CycleGAN 和Pix2pix 网络模型,并在使用配对数据集的Pix2pix 网络模型上取得了预期的结果。

猜你喜欢
样本空间手写字体
概率统计中样本空间刍议
我手写我心
抓住身边事吾手写吾心
字体的产生
基于集成学习的MINIST手写数字识别
浅谈高校古典概率的教学
古典概型中一道易错题的思考
全概率公式的教学方法研究
深度学习在手写汉字识别中的应用综述
组合字体