一种基于CycleGAN的个性字体生成方法

文档序号:29073871发布日期:2022-03-01 22:09阅读:449来源:国知局
一种基于CycleGAN的个性字体生成方法
一种基于cyclegan的个性字体生成方法
技术领域
1.本发明属于风格图像生成领域,特别涉及针对手写个性字体的基于循环生成对抗式网络的字体图像生成模型。


背景技术:

2.中文字体风格设计是指以现有的少量风格字体为基准,将目标内容的字体直接转换成风格字体。作为一种十分复杂的表达意思的语种,中文字体的设计显得极为复杂。汉字的数量和种类远远多于表音的英文字母,因此完成覆盖范围比较全的汉字字体设计需要十分巨大的工作量。除此之外,在追求个性化的时代,许多人要求建立属于个人的字体库。但字体库的建立需要个人对大量的汉字进行书写并上传,个人字库建立的门槛较高。
3.近几年,人们在进行图像风格迁移的研究时,尝试多种模型,并取得了较好的效果。现有的较为成熟的技术包括生成对抗式网络(generative adversarial network,gan)、pix2pix等。在汉字图像风格迁移上,图像风格迁移起到了很重要的借鉴作用。在该思想的影响下,将汉字直接作为图片,向网络中输入少量的汉字图片,学习其风格并输出具有该风格字体。
4.shamir等人提出了一种参数化特征建模的方式进行字体设计,但是这种方法是非自动的,需要人为地对特征和约束进行提取,过程十分复杂。suvveerannont等人提出了一种自动生成新字体的方法,该方法依赖于用户定义的实例(exampled-based)。该方法是从每个字的轮廓中提取出对应的拓扑特征,然后保留这个提取的特征,与原本的字体进行运算,加上相应的权重,生成新的字体。曾理等人提出了一种自动识别技术,该技术可以在不同的字体和不同的格式情况下,识别出文字图像里的具体内容。xu等人提出了一种智能算法,该算法能模拟手写汉字的风格,通过分解和重组字符组件来实现,但这个算法复杂,不适用。对比汉字字体和英文字体,汉字的笔画和结构都更加复杂,所以在生成结果上并不太理想,会出现扭曲、断裂等情况。
5.随着深度学习技术的发展,图像风格迁移领域有了重大突破,出现了基于生成式对抗网络的图像到图像翻译的方法。图像到图像翻译是指给定一张特定领域的图像,将其按照内容特点,“翻译”到另一个领域中,生成对应的图像。生成式对抗网络将风格迁移的适用范围极大地扩展,由画风迁移扩展到了任意图像集合之间的迁移。因此,研究者们不断探索,希望利用深度学习技术进行字体的风格迁移。首先,研究者们将目标放在较为简单的英文字体上。2017年,baluja等人提出了一种深度模型,该模型利用深度神经网络进行学习,然后对英文字体进行建模。在该实验中,研究者们把4个英文字母作为研究对象,学习其风格,然后生成了同样风格的剩下22个字母。2017年,azadi等人为了合成艺术体英文,提出了一个基于堆栈条件生成对抗网络(stacked cgan)的模型。这个模型可以直接输入原始特征,输出预测的结果,不需要进行特征提取,是一个端到端的模型,并用该方式实现了字体风格迁移。该方法可以输入少量的字母例子,然后合成需要的艺术体英文字母。除此之外,该模型具有很广泛的应用,能够学习各种数据集,并生成对应的风格迁移字体。
6.但是,汉字字体不论是从笔画、结构和字形上都比英文字体复杂得多,对英文字体效果较好的风格迁移方法应用到汉字风格迁移上就不理想。于是,更多的研究者开始开展汉字字体风格迁移的研究工作。2017年,luy等人为了实现中国书法汉字的字体风格迁移,提出了一个基于深度神经网络(dnn)的模型。该模型借鉴了普通图像的风格迁移的想法,实现了汉字图像到汉字图像的风格迁移,完成了汉字图像风格迁移任务普通的深度学习网络需要大量配对的图像进行训练,但是有些配对图像的获取较为困难,适用范围较窄。
7.综上,针对汉字个性字体,如何实现非配对图像之间的风格迁移是本领域研究人员重点关注的问题。


技术实现要素:

8.针对现有技术中存在的问题,可以将汉字个性字体生成看作图像风格迁移任务的一种变形,充分运用cyclegan网络,实现非配对图像之间的风格迁移。
9.本发明提出一种基于cyclegan的汉字图像风格迁移模型,对cyclegan网络中的生成器结构进行改进,更改成适用于汉字图像风格迁移的改进的编码-解码器结构,增加对汉字风格的学习能力。具体包括如下步骤:
10.步骤1,采集图像数据集,对图像数据集中的图像数据进行预处理,构建实验所需训练数据集,包括汉字图像数据集和手写汉字图像数据集;
11.步骤2,构建循环生成对抗式网络模型,实现汉字图像的风格迁移;
12.所述循环生成对抗式网络模型是将原始的cyclegan网络中的生成器结构替换为u-net结构,判别器中使用patchgan网络;
13.所述循环生成对抗式网络模型的目的是实现一个域到域的映射,即学习输入域a和目标域b之间的风格转换的映射关系,而不是两个数据域中具体的输入图片a和目标图片b之间的一一映射的关系,解决模型高度依赖配对图片的问题;
14.步骤3,利用步骤1中的训练数据集对步骤2中构建的循环生成对抗式网络模型进行训练,生成风格图片;
15.步骤4,根据生成的图片效果,不断地对循环生成对抗式网络模型的参数进行修正,并对模型的损失函数进行修改,得到效果更好的风格图片,最后确定效果最好的参数,生成相应的结果图。
16.进一步的,实验所需训练数据集包括宋体汉字图像数据集和手写汉字图像数据集,两个数据集分别包含n张128*128大小图像,图像内容包含n个宋体汉字和对应的手写体汉字,数据集中选出n张图像作为测试集,在进行训练前,为了构建数据集,进行了如下处理:
17.步骤11:宋体汉字图像选择
18.宋体汉字图像数据集构建时,先按照汉字的ascii码范围生成若干个字并存储在txt文件中;将txt文件中存储的字按照顺序生成对应的128*128的宋体图片;对这些宋体图片进行预处理,选出平时使用率较高的宋体字图像n张;
19.步骤12:手写汉字图像获取
20.选取n个汉字进行书写,保证风格的统一,同时确保图片的大小相同;
21.步骤13:数据增强
22.为了扩充数据量,将数据集的每张图片进行倒置,生成新的图片,保证其笔画特征不发生变化,通过这种方法,大大扩充数据量。
23.进一步的,所述的循环生成对抗式网络模型具体结构包括;
24.两个生成器generator a2b和generator b2a,以及两个判别器discriminator a和discriminator b;
25.其中生成器采用u-net网络,u-net网络被分为左部的编码部分和右部的解码部分,编码部分用来提取图片的比较表面的特征,特征的提取过程靠下采样和卷积来实现,在这个过程中,图片的尺寸减小的同时通道数会增加,解码部分用来提取图片的较深的、比较内核的特征,这个过程通过上采样和反卷积实现,反卷积的填充方式选用stride和valid中的valid方式,解码过程中,图片的尺寸会增大,通道数会减小,u-net网络中间的连接方式为跳跃连接,该方式将编码部分和解码部分获得的特征结合,实现了浅层特征和深层次特征的融合,得到最终的特征图像,对得到的特征图像进行细分,并进行预测分割,得到最后的预测分割图;具体为:将手写字体图片输入u-net网络,交替通过3*3的卷积层和2*2最大池化层,提取浅层特征,通过反卷积层和上采样提取图片的深层特征,上采样的过程中图片的尺寸会变大,最后输出特征图像;中间通过跳跃连接,将编码部分提取的特征与解码部分拼接,将浅层特征与深层结合;
26.判别器使用的是70*70的patchgan网络,判别器中使用了三个sequential层对拼接的图像进行下采样,另外,还添加了zero_padding层对图像进行边缘填充,判别器输出的图像大小为30*30,通道数为1。
27.进一步的,循环生成对抗式网络模型从输入域a中获取输入图像input_a,并将input_a传至第一个生成器generator a2b,生成器将输入图像转换到目标域b中,生成具有目标风格的图像generated_b,生成的风格图像generated_b将会进入判别器discriminator b,判别器判断该生成的图像是否为真,与此同时,生成图像generated_b又会经过生成器generator b2a生成与原始输入图像相似的图cyclic_a,并与原始输入图像input_a作一个损失函数计算,当这个损失函数的值小于一定阈值时,循环生成对抗式网络模型的训练满足要求。
28.进一步的,循环生成对抗式网络模型的损失函数由三部分组成:两个gan的损失函数和一个循环一致损失函数;
29.其中两个gan的损失函数分别为如(1)和(2)式所示:
[0030][0031][0032]
式(2)中,p
data
是真实的图像的数据分布,ie表示期望函数,x和y分别表示宋体汉字图像域和手写体汉字图像域,x表示x域中的图像数据,y表示y域中的图像数据,g表示x域到y域的生成器,dy是判别y域图片真假的判别器;dy(y)表示判别器判别y域中对应图片的y的真假,g(x)表示通过生成器生成y域的假图片,dy(g(x))是用判别器判别生成的y域的假图;式(3)中,d
x
是判别x域图片真假的判别器,d
x
(x)表示判别器判别x域中对应图片的x的真假,f表示从y域到x域的生成器,f(y)表示生成x域的假图片,d
x
(f(y)是用判别器判别生成的x域的假图;
[0033]
循环一致损失函数是计算输入图片x与经过两个生成器后生成的假图f(g(x)),以及y与经过两个生成器后生成的假图g(f(y))之间的损失函数,其具体公式如下(4)所示:
[0034][0035]
最后所有的损失函数如下(5)所示:
[0036]
l(g,f,d
x
,dy)=l
gan
(g,dy,x,y)+l
gan
(f,d
x
,y,x)+λl
cyc
(g,f)
ꢀꢀꢀꢀ
(5)
[0037]
其中λ为循环一致损失的权重系数,可以自行进行调节。
[0038]
与现有技术相比,本发明的优点和有益效果为:本发明中采用的cyclegan模型的训练不需要配对的图像,使得数据集的获取更加容易。该模型使用生成对抗网络,生成图像更加真实、清晰度和一致性高。将cyclegan模型中的生成器结构替换为u-net结构,更加符合字体笔画线条的特点,更加适用于字体的风格迁移的特点。
附图说明
[0039]
图1为本实验中原始cyclegan生成器结构;
[0040]
图2为u-net网络结构;
[0041]
图3为patchgan结构图
[0042]
图4为改进cyclegan结构图;
[0043]
图5为实验虚拟环境。
[0044]
图6为生成字体效果图。
具体实施方式
[0045]
本发明提供一种一种基于cyclegan的个性字体生成方法,研究内容包括以下几个部分:
[0046]
(1)使用宋体汉字数据集和自建的手写汉字数据集作为训练集,并采取数据增强方法,将汉字倒置,使数据集数量翻倍,且保证宋体和手写体内容一致。
[0047]
(2)构建循环生成对抗式网络(cycle generative adversarial network,cyclegan),实现汉字图像的风格迁移。将预处理后训练(train)数据集中的图片输入,进行模型训练,用测试集(test)中的数据进行测试,观察字体风格迁移效果。在此基础上,对模型的参数、损失函数和生成器结构进行改进,输出更好效果的汉字图像风格迁移图片。
[0048]
循环生成对抗式网络模型构建步骤包括:
[0049]
步骤1:构建清晰地宋体汉字数据集和手写汉字数据集。改进原始cyclegan网络的生成器结构(图1),将生成器结构替换为u-net结构,u-net网络模型由下采样、上采样和跳跃连接组成(图3)。将手写字体图片输入u-net网络,交替通过3*3的卷积层和2*2最大池化层,提取浅层特征。通过反卷积层和上采样提取图片的深层特征,上采样的过程中图片的尺寸会变大,最后输出特征图像。中间通过跳跃连接,将编码部分提取的特征与解码部分拼接,将浅层特征与深层结合。cyclegan网络中的判别器使用的是70*70的patchgan网络(图4)。判别器中使用了三个sequential层对拼接的图像进行下采样,除此之外,网络中还添加了zero_padding层对图像进行边缘填充。判别器输出的图像大小为30*30,通道数为1,patchgan网络将输入图像处理为70*70patches,就是根据判别器最终输出的特征图进行回溯,最终对应到输入图像70*70的区域。改进cyclegan网络(图5)中有两个生成器
(generator a2b(u-net)和generator b2a(u-net))和两个判别器(discriminator a和discriminator b)。该模型从输入域a中获取输入图像input_a,并将input_a传至第一个生成器generator a2b(u-net)。生成器将输入图像转换到目标域b中,生成具有目标风格的图像generated_b。生成的风格图像generated_b将会进入判别器discriminator b,判别器判断该生成的图像是否为真。与此同时,生成图像generated_b又会经过生成器generator b2a(u-net)生成与原始输入图像相似的图cyclic_a,并与原始输入图像input_a作一个loss计算,当这个loss小于一定值时,模型的训练才能满足要求。对改进的cyclegan网络进行训练,生成128*128大小的手写字生成图像,经过多次迭代,直到网络可以生成较为真实的图像。
[0050]
步骤2:使用步骤1中保存的模型,输入测试集中的图片,经过生成器和判别器的博弈,生成手写字体图片。
[0051]
步骤3:计算损失函数,包括两个gan网络的基础损失函数和循环一致损失函数。
[0052]
cyclegan网络的损失函数由三部分组成:两个gan的损失函数和一个循环一致损失函数。gan网络的优化问题其实是一个极小极大化问题,即先保持生成器g不变,对判别器d进行优化,使得判别器判别的准确率最大;然后保持判别器不变,对生成器g进行优化,使得生成的假图片接近真实图片,当两者相同时,达到最好的效果。
[0053][0054]
式(1)中,x表示图像数据,z为g的输入噪声,g(z)表示通过生成器生成的假图片,p
data
是真实的图像的数据分布,pz表示由噪声z通过g网络后产生的噪声分布,ie表示期望函数。公式表达的意思是保持生成器g不变,让判别器尽可能地最大化判别出数据是来自生成的假图像还是真实的图像。然后将这部分看做一个整体,令公式表达的意思就是保持判别器d不变,使得生成器生成的假图与真实图像的差距最小化。
[0055]
由于在cyclegan网络中,有两个对称的gan网络,因此gan网络的损失函数也有“对称”的两个,分别为如下(2)和(3)所示:
[0056][0057][0058]
式(2)中,x和y分别表示宋体汉字图像域和手写体汉字图像域。x表示x域中的图像数据,y表示y域中的图像数据,g表示x域到y域的生成器,dy是判别y域图片真假的判别器。dy(y)表示判别器判别y域中对应图片的y的真假,g(z)表示通过生成器生成的假图片,dy(g(z))是用判别器判别生成的y域的假图。式(3)的含义相似,只是域发生了变化;d
x
是判别x域图片真假的判别器,d
x
(x)表示判别器判别x域中对应图片的x的真假,f表示从y域到x域的生成器,f(y)表示生成x域的假图片,d
x
(f(y)是用判别器判别生成的x域的假图。
[0059]
除了常规的gan网络的损失函数外,cyclegan还自己独特的损失函数,即循环一致损失函数。为了保证模型是一对一的映射,cyclegan网络引入cycle-consistency loss,该loss计算了输入图片x(和y)与经过两个生成器后生成的假图(和)之
间的损失函数。其具体公式如下(4)所示:
[0060][0061]
最后所有的损失函数如下(5)所示:
[0062]
l(g,f,d
x
,dy)=l
gan
(g,dy,x,y)+l
gan
(f,d
x
,y,x)+λl
cyc
(g,f)
ꢀꢀꢀꢀ
(5)
[0063]
其中λ为循环一致损失的权重系数,可以自行进行调节。
[0064]
步骤4:通过损失函数计算结果,更新模型参数,并且不断迭代(即:重复步骤2、3、4),直到生成与手写字体风格接近的图片。不断地对模型的参数进行修正,得到效果更好的风格图片。最后,确定效果最好的超参数,生成相应的结果图。
[0065]
本发明可以使用计算机来进行网络的训练和推断,在ubuntu 16.04lts操作系统下使用pytorch深度学习框架实现。具体的实验环境配置如下:
[0066][0067][0068]
具体实施方式如下:
[0069]
步骤1:数据集构建。实验所用训练数据集为宋体汉字数据集和自建的手写字体数据集,两个数据集分别包含750张128*128大小图像,图像内容包含750个宋体汉字和对应的手写体汉字,数据集中选出50张图像作为测试集。在进行训练前,为了构建数据集,进行了如下处理:
[0070]
(1)宋体汉字图像选择
[0071]
宋体汉字图像数据集构建时,先按照汉字的ascii码范围生成20869个字并存储在txt文件中。将txt文件中存储的字按照顺序生成对应的128*128的宋体图片,总共有20869张图片。对这些图片进行预处理,选出平时使用率较高的宋体字图像750张。
[0072]
(2)手写汉字图像获取
[0073]
本文构建了属于自己的手写汉字的数据集。该数据集由本人同学亲自书写。她在《千字文》中选取750个汉字进行书写,保证风格的统一,同时确保图片的大小相同。
[0074]
(3)数据增强
[0075]
训练深度学习网络模型需要大量的数据,为了扩充数据量,我们将数据集的每张图片进行倒置,生成新的图片,保证其笔画特征不发生变化。通过这种方法,大大扩充了数据量,使训练集由原来的750张图片,扩充到1400张;
[0076]
步骤2:cyclegan模型训练。将构建好的训练集放入对应的数据文件夹(datasets)中,并对原始的cyclegan模型进行改进,按照设置好的超参数对模型进行训练,改进的cyclegan模型结构如下:
[0077]
(1)cyclegan网络中有两个生成器(generator a2b和generator b2a)和两个判别
器(discriminator a和discriminator b)。cyclegan网络为了实现非配对图像的训练,就要保证其映射关系不能是多对一,即输入域x中的数据x1、x2、...等不能经过映射关系转换后变为目的域y中的同一个数据y。为了满足上述条件,cyclegan网络中引入了新的概念cycle(循环)。在cyclegan网络中,cycle也就是将被映射的数据y再映射回输入域x中,生成一个对应的假图片,通过cycle-consistency loss来实现真图与假图相似,保证模型是域对域的一一映射又不需要图片配对。
[0078]
(2)改进的生成器网络结构,采用u-net网络。u-net网络结构图被分为左部的编码部分和右部的解码部分,编码部分用来提取图片的比较表面的特征,特征的提取过程靠下采样和卷积来实现,在这个过程中,图片的尺寸减小的同时通道数会增加,解码部分用来提取图片的较深的、比较内核的特征,这个过程通过上采样和反卷积实现,反卷积的填充方式选用stride和valid中的valid方式,解码过程中,图片的尺寸会增大,通道数会减小,u-net网络中间的连接方式为跳跃连接,该方式将编码部分和解码部分获得的特征结合,实现了浅层特征和深层次特征的融合,得到最终的特征图像,对得到的特征图像进行细分,并进行预测分割,得到最后的预测分割图;
[0079]
(3)cyclegan网络中的判别器使用的是70*70的patchgan网络。cyclegan网络模型中有两个判别器,用其中的一个判别器discriminator b进行分析。判别器中输入生成器generator a2b生成的假图generated_b和目标域中的风格图片,并利用concatenate函数将两者拼接,进行下采样获取图像特征并判断真假。
[0080]
(4)在生成器中,下采样部分使用的是leaky relu激活函数,上采用部分使用的是relu激活函数。在判别器中,由于只存在下采样的操作,因此只使用了leaky relu激活函数。
[0081]
步骤3:使用测试集中的宋体汉字图像,通过计算损失函数(包括两个gan网络的基础损失函数和循环一致损失函数),更新模型参数,不断地对模型的参数进行修正,得到效果更好的风格图片。
[0082]
图6选取了生成字体中的一部分进行比较,总共包括四种不同的字体:宋体字,原始cyclegan网络生成字体,改进的cyclegan网络(生成器替换为为u-net)的生成字体和手写体。比较原始的cyclegan网络和改进的cyclegan网络生成结果之间的差异,明显可以看出,改进的cyclegan网络效果要好,不论是在字体笔画的流畅性和字体结构组合等角度,改进的cyclegan网络的生成图片都做到了较好的效果。
[0083]
本文中所描述的具体实施仅仅是对本发明作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1