APP下载

基于DCGAN的手写汉字图像生成研究

2024-01-08孟先新李俊伟韩立伟朱永萍

现代计算机 2023年20期
关键词:手写卷积汉字

孟先新,李俊伟,韩立伟,朱永萍

(华北水利水电大学信息工程学院,郑州 450046)

0 引言

汉字作为一种独特的文字,数量众多且具有丰富的文字结构特征。另外,由于人们书写习惯的差异,要实现手写汉字的识别就需要大量丰富的数据。当前,在计算机视觉领域,生成具有真实视觉效果的图像已成为研究的热点之一[1]。随着深度学习的发展,图像识别研究取得了许多显著的成果,识别准确度已经相当高。然而,在实现图像识别的过程中离不开预处理这一前提步骤,但在实验数据量不足的情况下预处理远远达不到预期的效果。若通过生成图像技术进行数据增强,生成具有与原数据相同特征规律的实验数据,则可以解决样本不足的问题。

目前的图像生成研究主要是采用基于对抗生成网络(GAN)的思想[2],该方法通过判别器(discriminator)和生成器(generator)之间的对抗博弈,去实现图像数据内在特征分布规律的平衡。在GAN 模型中,深度卷积网络(deep convolutional neural network)和深度反卷积网络(deep transpose convolutional neural network)被用作判别器和生成器,就形成了深度卷积生成对抗网络(DCGAN)。本文研究基于DCGAN 构建了手写汉字图像的生成模型,并在HWDB1.1 数据集上进行了测试。实验结果表明,该模型能够生成具有良好视觉效果的手写汉字图像。

1 GAN模型

生成对抗网络(GAN)[3]的核心结构由生成器G(generator)和判别器D(discriminator)组成。GAN 模型的训练过程是通过两者之间的对抗博弈实现的:在给定输入样本的情况下,生成器G试图生成逼真的样本,而判别器D则努力区分生成器生成的样本和真实样本,以达到最大的分辨能力。通过不断迭代训练,期望生成器G能够生成与真实样本难以区分的高质量样本,使判别器D无法准确区分生成样本和真实样本。

生成器是一种神经网络结构,它的输入通常是从随机分布(如高斯分布或均匀分布)中采样得到的噪声。生成器的训练目标是通过生成样本,在后续的判别阶段能够获得更高的概率。判别器则可以采用任意神经网络结构,它的输入是待判别的样本。判别器的训练目标是能够准确地区分生成样本和真实样本,并给予它们相应的概率(通常是二分类问题)。在训练过程中,生成器和判别器两个网络交替进行训练,相互博弈并逐渐提高其能力。这种对抗训练的机制可以通过不断调整生成器和判别器的参数来使二者的性能同步提高,最终实现更好的生成样本效果。如图1所示。

图1 GAN训练过程

GAN 训练过程是一个min-max 问题的求解,对应的目标函数如式(1)所示:

以上目标函数是有全局最优解的:当且仅当PG=Pdata时,

在交替优化的过程中,通常会对判别器D进行多轮优化,而对生成器G 只进行一轮优化。这样的设计是基于一个重要的观察:通过多轮优化判别器D,可以使其更加准确地区分生成样本和真实样本,提高判别器的判别能力。当判别器能够更好地区分真实样本和生成样本时,它能够给予生成样本更低的概率,从而提供更准确的反馈信号给生成器G。然而,如果对生成器G进行多轮优化,可能会导致生成器过度拟合判别器,降低了生成样本的多样性和质量。因此,通过只对生成器G进行一轮优化,可以避免这种情况发生,保持生成器的多样性和创造力。

2 DCGAN模型结构

深度卷积生成对抗网络(DCGAN)是对抗生成网络(GAN)的一种变体。按照理论上的描述,一个对抗生成网络由两个多层神经网络模型组成:生成模型(generative model)和判别模型(discriminative model)。生成模型,也称为生成器,用符号G 表示,其作用是生成类似于真实数据分布的合成数据;判别模型,也称为判别器,用符号D 表示,用于区分输入数据是来自生成器产生的合成数据还是真实数据。

对抗生成网络的训练过程旨在使生成器产生的合成数据尽可能逼近真实数据的分布,并且使判别器能够准确地区分合成数据和真实数据。其目标是使生成器生成的数据足够逼真,以至于判别器将合成数据和真实数据的判别概率都趋近于0.5。因此,DCGAN 作为一种对抗生成网络的变体,在训练过程中通过生成器和判别器之间的对抗博弈,致力于提高生成器合成数据的质量,以及判别器对真实与合成数据的准确判别能力。

DCGAN[4]的基本思想是通过使用卷积神经网络替代传统的多层神经网络,以生成尽可能逼近真实图像的合成图像。DCGAN 具有以下特点:①判别器用卷积层代替池化层,生成器用反卷积产生仿真图像;②除了生成器的输出层和判别器的输入层外,网络其他层都使用Batch Normalization;③生成器和判别器均无全连接层;④生成器的输出层使用Tanh 激活函数,其他层使用ReLU 激活函数;⑤判别器使用Leaky ReLU激活函数。

一个DCGAN 的生成器结构如图2 所示,判别器结构与生成器结构相反,如图3所示。

图2 DCGAN生成器结构

图3 DCGAN判别器结构

生成器的主要目标是将输入向量z映射到真实数据空间。如果数据是图像,那么生成器需要将输入向量z转换为图像。为了实现这一目标,生成器使用一系列的二维转置卷积(反卷积)操作,并在每个转置卷积之后添加二维批归一化层(batch norm)和ReLU 激活函数层。具体而言,生成器通过一系列的转置卷积操作逐渐将输入向量z转化为与真实图像具有相似特征的输出图像。每个转置卷积操作后都会应用二维批归一化层来提高模型的训练稳定性,并通过ReLU 激活函数层引入非线性特征。最后,为了确保生成器的输出范围在[-1,1]之间,通常会将输出连接到Tanh 函数。这样的设计使得生成器能够学习到将输入向量映射为逼真图像的能力,并保证生成的图像具有适当的范围和质量。

判别器是一种二元分类器,用于评估输入图像的真实性,并输出图像为真实图像的概率。判别器接受3×64×64 尺寸的图像作为输入,经过一系列的卷积层、批归一化层(BN 层)、Leaky ReLU 层的处理,最后通过Sigmoid 激活函数输出图像为真实图像的概率。判别器的具体结构可以根据实际情况进行调整。在判别器的结构中,Strided 卷积层、BN 层和Leaky ReLU 层是常用的组件,它们被广泛应用于提升判别器的性能和稳定性。DCGAN[5]的研究指出,相较于传统的池化层,Strided 卷积层在下采样方面表现更出色。使用Strided 卷积层可以使网络学习到自身的下采样函数,而不是依赖于固定的池化函数。此外,BN 层和Leaky ReLU 层的应用可以提高梯度传播的效率,对判别器和生成器的学习过程有着积极的帮助。

3 手写汉字图像生成模型结构

根据对DCGAN 模型结构的分析,本文设计了一个用于生成手写汉字图像的DCGAN 生成模型,该模型的生成器G的详细结构见表1。

表1 DCGAN生成器G网络结构表

生成器G是一个反卷积神经网络,用于从随机噪声中生成图像[6]。首先,输入一个100维度的随机噪声,然后使用ConvTranspose2d-1进行反卷积操作,输出为512 通道、4×4 像素大小的特征图,并对输出进行批归一化处理,使用ReLU激活函数进行激活;随后,使用ConvTranspose2d-4 进行反卷积操作,输出为256 通道、8×8 像素大小的特征图,并对输出进行批归一化处理,使用ReLU 激活函数进行激活;接下来,使用ConvTranspose2d-7 进行反卷积操作,输出为128通道、16×16像素大小的特征图,并对输出进行批归一化处理,使用ReLU 激活函数进行激活;然后,使用ConvTranspose2d-10进行反卷积操作,输出为64通道、32×32像素大小的特征图,并对输出进行批归一化处理,使用ReLU 激活函数进行激活;最后,使用ConvTranspose2d-13 进行反卷积操作,输出为3 通道、64×64 像素大小的特征图,并使用Tanh 激活函数对输出进行激活,将像素值缩放到[-1,1]的范围内。

通过以上的生成器结构设计,可以将随机噪声映射为具有逼真视觉效果的手写汉字图像。每一次反卷积操作有助于将随机噪声逐步转换为图像特征,而批量归一化处理和ReLU 激活函数的应用则能够增强模型训练的稳定性并提高生成图像的质量。

本文提出的判别器模型D与生成器G基本上呈现互为逆向运算的关系,其具体结构见表2。首先,判别器模型包含一个2D卷积层(Conv2d),输入图片大小为64×64×3,使用64 个3×3 卷积核,步长为1,padding 为1。接下来是一个Leaky ReLU 激活函数,其负斜率为0.2,用于激活神经元。随后,判别器模型又包含一个2D卷积层(Conv2d),使用128 个3×3 卷积核,步长为2,padding 为1。之后,模型应用了Batch Normalization对特征图进行归一化处理,以缓解训练过程中的梯度消失和梯度爆炸问题,并提高模型的稳定性。最后,再次使用LeakyReLU 激活函数进行激活。这个过程不断重复,随着步长的逐渐加深卷积核的数量逐渐增加,直到最后一层输出大小为1×1×1 的特征图。通过应用Sigmoid 激活函数,将特征图的值压缩到[0, 1]的范围内,表示输入图片为真实图像的概率。

表2 DCGAN判别器D网络结构表

总的来说,判别器网络的主要任务是将输入的图片判别为真实图像(1)或生成图像(0),并输出对应的概率。通过构建逐层卷积操作和应用适当的激活函数,判别器能够学习图像的特征并具备区分真实与生成图像的能力。判别器模型的设计旨在提高对真实与生成图像的判别能力,并为生成器提供有效的反馈信号,以促使生成器生成更加逼真的图像。

4 实验

本文的实验旨在探究深度卷积生成对抗网络在生成手写体汉字图像方面的应用。为了探究实验,采用了中科院平台提供的手写汉字图像数据集HWDB1.1。该数据集包含了来自300人的3755 个常用汉字的手写图像。实验环境是在PyCharm 中的PyTorch 框架下使用CPU 进行的。通过该实验,旨在验证深度卷积生成对抗网络在手写体汉字图像生成方面的性能,并评估其生成质量和多样性。实验结果将为深入理解手写体汉字生成的问题提供重要的参考和洞察。

本文的实验主要分为三个步骤:首先,对备选数据集进行预处理,将HWDB1.1 数据集转换为PNG 格式并进行标记序号存储,然后对图像进行灰度化、归一化和平滑去噪处理。其次,搭建了生成手写汉字图像的网络模型。本实验采用了基于深度卷积生成对抗网络的模型。在模型搭建过程中,主要关注生成器G和判别器D的网络结构,具体的模型构建可以参考第3节中关于手写汉字图像生成模型结构的介绍。在完成网络模型的搭建后,对输入的数据集进行预处理和尺寸归一化操作,设置训练的超参数、Adam 优化器和二元交叉熵(BCE)损失函数。这些设定将有助于训练过程的优化和网络参数的更新。最后,利用搭建好的生成器和判别器模型进行训练。通过调整参数和数据集,旨在达到更好的生成效果。

本文的实验内容主要包括两个方面:一是对3755 个手写汉字的生成效果进行实验探究;二是对特定的手写汉字的生成效果进行研究并提升。通过训练过程中的参数调整和数据集的使用,期望能够得到预期的生成效果。

(1)3755个汉字的生成实验。

通过构建好的手写汉字生成模型对3755 个汉字进行50 人、100 人的生成实验,图4 是50人、100人实验模型对3755个汉字迭代5次训练后的生成效果。这两次实验的生成效果差,难以主观识别汉字。

图4 3755个汉字迭代5次的生成效果

实验生成效果不佳可能是由多种因素导致的。首先,生成手写汉字图像是一项复杂且具有挑战性的任务,需要模型能够准确捕捉汉字的结构和细节,并生成逼真的图像。其次,仅进行5 次迭代可能限制了模型的优化和收敛程度,对生成效果的提升产生了限制。此外,模型的架构和超参数的选择也可能对生成效果产生影响。虽然此次实验生成效果不理想,但通过进一步的优化,如增加迭代次数、调整网络架构和优化超参数,有望提高生成手写汉字图像的质量和准确性。

DCGAN 的网络架构和超参数都是经过多次实验探究的最佳组合,考虑到上述实验因硬件CPU 限制,实验模型进行5 次迭代训练。因此,可以得出造成上述实验生成效果不好的原因是实验模型迭代训练次数过少。为进一步探究实验模型并提高模型的生成效果,设计了以下对于特定汉字增加实验模型训练迭代次数的生成实验。

(2)特定汉字的生成实验。

本次实验选取300人手写的“齐”字为数据集,对实验模型进行1000 次迭代训练。随着实验模型迭代次数的增加得到如图5所示的生成效果。通过观察可以发现,生成的“齐”字的效果先变好,之后生成的效果又变差了。结合本次实验的生成损失函数和判别损失函数的变化趋势(如图6所示),可以发现随着训练迭代次数的增加生成损失函数值先下降到一定量后趋于稳定收敛,而后振荡上升,而判别损失函数值则由趋于0的平稳收敛变得波动起伏大的收敛。

图5 “齐”字300人迭代的生成效果

图6 “齐”字300人迭代1000次的生成损失函数和判别损失函数变化趋势

由此可以得出,适当地增加实验模型的训练迭代次数可以提高图像的生成效果,但增加迭代次数超过一定量后实验模型的生成效果不会变好,反而会变差。

综上所述,在一定范围内,适当地增加训练迭代次数对于DCGAN 模型的生成效果具有增益作用。在实际应用中,需要综合考虑模型的训练时间和生成效果,找到最佳的迭代次数,以获得满足需求的高质量生成结果。

5 结语

本文对生成对抗网络(GAN)模型和深度卷积对抗生成网络(DCGAN)模型的结构进行了研究,并利用PyTorch 深度学习框架设计了一种用于生成手写汉字图像的深度卷积对抗生成网络模型。实验首先使用了HWDB1.1 数据集中较少人数的汉字图像进行了较少迭代次数的模型评估训练;然后又在该数据集中选用特定的汉字全部图像并增加训练迭代次数进行进一步的模型优化训练,获得了在手写汉字图像生成方面具有较好效果的实验模型。

猜你喜欢

手写卷积汉字
我手写我心
基于3D-Winograd的快速卷积算法设计及FPGA实现
抓住身边事吾手写吾心
从滤波器理解卷积
基于集成学习的MINIST手写数字识别
基于傅里叶域卷积表示的目标跟踪算法
汉字这样记
汉字这样记
深度学习在手写汉字识别中的应用综述
一种基于卷积神经网络的性别识别方法