一种基于字体流形的中文字库自动生成方法与流程

文档序号:14990489发布日期:2018-07-20 22:07阅读:2433来源:国知局

本发明属于计算机图形学和人工智能领域,涉及字库生成方法,尤其涉及一种能无需人工干预的中文字库自动生成方法。



背景技术:

随着智能终端以及移动互联网的飞速发展,人们的日常生活中会接触到各种各样的字库。而这些字库,大多是由专业的字库设计团队,人工设计,逐字制作而成,耗费大量的人力物力,成本高昂。随着人工智能的兴起,字库制作中大量的重复性机械性工作,可借助计算机完成,从而大量节省字库制作的成本。

目前,国内的字体设计和制作技术还不够先进,现有的中文字库制作方法大多依赖于人工经验和设计,自动化程度很低,一般先由书法家书写或字体设计师制作几百到几千个基准字,包含目标字库所有汉字出现的全部笔画和部件,并将这些字形的边缘轮廓用曲线和直线来存储。然后,字体制作人员将基准字的笔画和部件进行加工修改,来生成完整的字库。最后,每个汉字字形还要经过精细的调整。大量的人工字形调整与设计造成字库制作技术自动化程序低,制作周期长,效率低下。

近些年来,大量的研究人员,希望借用人工智能技术,来辅助实现中文字库的设计。文献(zhouhuilian,bozhao,andjianguoxiao.2016.automaticgenerationoflargescalehandwritingfontsviastylelearning.inproc.siggraphasia2016tb.acm,12.)使用人工神经网络的方法,对汉字的书写风格建模,从而生成中文字库。但该方法需要事先由用户书写若干汉字,对已经书写的汉字建模。在已有的汉字较少的情况下,建模的效果不甚理想。文献(yuejiang,zhouhuilian,yingmintang,jianguoxiao.2017.dcfont:anend-to-enddeepchinesefontgenerationsystem.inproc.siggraphasia2017tb)对上一种方法进行了改进,在风格建模部分使用了深度神经网络,有了更好的建模效果。但该方法依然需要用户事先书写或设计若干汉字,且建模效果与数量成正比。因此,现有采用人工智能技术的字体生成方法仍需要借助人工设计/书写较大数量的汉字,无法实现自动化生成字体。



技术实现要素:

为了克服上述方法中存在的问题,本发明提出了一种基于流形学习和深度神经网络的中文字库生成方法。本发明不需要用户事先书写/设计新字库的汉字,能实现完全自动生成包含所有汉字的完整的中文字库。

本发明从已有的汉字字库入手,提取每个字库的风格特征向量和字形特征向量,建立每个汉字的风格流形,每个已有的字体对应流形空间中的一个点。再训练一个字体渲染网络,实现从特征向量到汉字图像的映射。通过在流形空间中遍历或插值,可获得新的特征向量,将其放入字体渲染网络,即可得到新风格的汉字字库。

本发明采用的技术方案如下:

一种中文字库自动生成方法,基于流形学习和深度神经网络,针对已有的汉字字库,提取字库的风格特征向量和字形特征向量,建立每个字的风格流形;再训练字体渲染网络,实现从特征向量到汉字图像的映射;通过在流形空间中遍历或插值,获得新的特征向量,将其放入字体渲染网络,得到包含所有汉字的新风格的汉字字库;主要包含以下步骤:

第一步,收集已有字库,提取其风格特征向量和字形特征向量;

第二步,将提取到的风格特征向量和字形特征向量,用降维方法降维,建立流形空间;

第三步,训练字体渲染网络,实现从风格特征向量与字形特征向量到汉字图像的映射;

第四步,从流形空间选择新的特征向量,包含字形特征向量和风格特征向量。将两个特征向量放入训练好的字体渲染网络,得到新的字库。

具体来说,在第一步中,本发明将汉字分解为两个组成部分:风格和字形。风格即为字体的风格,如楷体、宋体、黑体等。字形为字的内容,如“你”、“你”、“你”、“你”均为不同字体的“你”字,有相同的字形结构。针对每个已有字库,本步需要将字库中每个字的风格特征和字形特征提取出来,分别用一个向量来表示。

其中,风格特征的提取,用到了深度神经网络模型。本步使用深度神经网络模型建立一个字体风格的分类器,将现有的字库放入分类器中进行训练。训练完成后,将模型中的某中间层输出,作为字体的风格特征向量。这里要注意,分类器的输入为每个字的图像,所以每个字有一个对应的风格特征向量。本步骤用一个向量值表示整个字库的风格,具体采用了求平均值的方法,将字库中所有字的风格特征向量的特征值取平均值,得到整个字库的风格特征表示。

字形特征的提取,主要通过人工标注和点集匹配算法。由于字形特征不包含任何风格,所以可以用几条相同粗细的线段对字形特征进行表示。为了记录这些线段,需记录下线段的关键点,即每个线段的起始点和结束点。又因为同一个字在不同的字库中,其字形有不同的变化,所以人工标注了已有字库中常用的6763个汉字的字形关键点,将每个汉字的关键点视为这个字的字形特征。将这些关键点依次排列,就得到了字形的特征向量。但是,字形的差异导致了同一个汉字在不同的字库中关键点的数目不同,这对后面步骤进行降维建模有很大的影响。所以,本发明采用了上采样和点集匹配算法(cpd--coherentpointdrift)(myronenko,a.,song,x.pointsetregistration:coherentpointdrift.ieeetransactionsonpatternanalysisandmachineintelligence.2010:32(12),2262–2275)来保证关键点的数目一致。通过点集匹配后,不同字库中的同一个字就有了相同个数的关键点。

在第二步中,将特征向量连接,建立字体的流形。本发明对每个字建立一个独立的流形空间。同一字库中的不同字,有不同的字形特征,但共享相同的风格特征。针对每个字,通过连接其风格特征向量和字形特征向量,得到一系列高维空间向量。再使用gplvm降维算法(lawrencen.:probabilisticnon-linearprincipalcomponentanalysiswithgaussianprocesslatentvariablemodels.journalofmachinelearningresearch6,nov(2005),1783–1816.)对这些高维向量进行降维,得到低维(二维)流形空间。gplvm算法为降维算法,能够找到一个低维空间的向量集合x,与高维空间向量集合y一一对应。同时,gplvm还能够实现从低维空间到高维空间的映射。即从低维空间任意选取一个点x,根据非线性映射变换,可得到其在高维空间的对应点y。

在第三步中,使用深度神经网络模型,在本发明中称为字体渲染网络,实现从特征向量到图片的映射。从第一步中可知,特征向量包括字形特征向量和风格特征向量,其中字形特征为关键点集合,所以本步骤首先要将关键点转化成图片,即在空白的图片上根据关键点坐标描点、连线,得到对应字的字形图像。之后,将字形图像和风格特征向量,放入字体渲染网络中,得到具有相应风格的汉字图像。字体渲染网络的结构分为两部分:编码部分和解码部分。编码部分包括若干下卷积层,最后输出1×1的特征图。之后本步骤将特征图和风格特征向量连接到一起,输入到解码部分。解码部分包括若干上卷积层,输出为相应风格的图像。

在训练过程中,我们用已有字库的风格特征及字形特征进行训练。网络的损失函数包括两部分,第一部分为带权重的pixel-wise损失函数(l1损失函数)。pixel-wise损失函数生成图片和目标图片每个像素的l1距离之和。本发明对pixel-wise损失函数的每个像素赋予了不同的权重,由于汉字图像更注重字的轮廓部分,所以在计算pixel-wise损失时,轮廓部分的像素点有更高的权重;第二部分为对抗损失函数,这里本发明使用了对抗学习的训练方法。在对抗学习中,有两个网络模型:生成网络模型和辨别网络模型。字体渲染网络相当于生成网络,用以生成图片,还存在一个辨别网络,用以区别图片为真实图片还是生成图片。生成网络的目的就是尽可能生成逼真的图片,进而欺骗辨别网络,降低损失函数;辨别网络的目的就是增强自身辨别能力,尽可能去区别真实和生成的图片。

在第四步中,从某个字的流形空间随机采点,可得到不同于已有字库的特征向量。此向量包含了风格特征向量和该字的字形特征向量。如果要生成整个字库,还需得到在该风格特征向量下,其他汉字对应的字形特征向量。本发明通过求解一个最优化问题来解决。假设已有的向量包含了风格特征向量vst和字形特征向量vsk,在另一个字的流形中,我们需要找到一个点其对应的风格特征向量本发明使用了模拟退火算法(kirkpatricks.,gelattc.d.,vecchim.p.,etal.optimizationbysimulatedannealing.science220,4598(1983),671–680.)来求解该问题。在找到字库中其他字对应的字形特征向量后,将每个字形特征向量与风格特征向量一起放入字体渲染网络中,即可得到对应的图像。

与现有技术相比,本发明的有益效果是:本发明从流形空间得到新的特征向量,并实现了从特征向量到字体的自动生成。不需人工书写汉字,无需人工干预。同时,流形空间的创建基于已有字体的特征向量,所以保证了新的特征向量不会出现巨大的偏差,保证了汉字原有的字形,风格特征可解释性也较高。

本发明提供一种字体自动生成方法,针对已有的汉字字库,提取字库的特征向量,建立风格流形;再训练字体渲染网络,实现从特征向量到汉字图像的映射;通过在流形空间中遍历或插值,获得新的特征向量,将其放入字体渲染网络,得到新风格的汉字字库。

附图说明

图1为本发明方法的流程框图。

图2为本发明实施例中特征提取过程的示意图;

其中,(a)为用分类模型提取字库风格特征的示意图;(b)为人工标点得到每个字字形特征(关键点)的示意图;(c)为分类器得到的特征向量可视化后的示意图。

图3为本发明实施例中建立流形空间步骤和采点获得特征向量步骤的示意图;

其中,(a)为连接字形特征向量和风格特征向量步骤;(b)为用降维算法得到的二维空间流形可视化后的结果;(c)为在流形中采点后得到新的特征向量。

图4为本发明实施例中字体渲染网络步骤的示意图;

其中,(a)为将字形特征向量,描点画出字形步骤;(b)为将字形存储为256×256分辨率图片;(c)为将图片和风格特征向量放入字体渲染网络中得到相应风格的汉字图像。

图5为本发明实施例中使用修改过的pixel-wise损失函数的结果和使用未修改l1损失函数的结果的对比图;

其中,(a)为使用本发明提出的修改过的pixel-wise损失函数得到的字体生成图像;(b)为使用原pixel-wise损失函数得到的字体生成图像。

图6为本发明在流形空间采点生成的结果示意图。图7为本发明实施例中用求解最优化问题得到的字体图片示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,可以理解的是,所描述的实例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种字体自动生成方法,针对已有的汉字字库,提取字库的特征向量,建立风格流形;再训练字体渲染网络,实现从特征向量到汉字图像的映射;通过在流形空间中平移采点或在两点之间插值,获得新的风格特征向量,将其放入字体渲染网络,得到新风格的汉字字库。本发明方法的总流程如附图1所示;包括以下步骤:

a.风格特征;

如图2(a)所示,本发明使用文献(simonyank,zissermana.verydeepconvolutionalnetworksforlarge-scaleimagerecognition[j].arxivpreprintarxiv:1409.1556,2014.)记载的vgg19神经网络模型提取字库的风格特征。具体来说,本发明训练一个字库分类网络,并将vgg19的fc7(fullyconnectedlayer7)层神经元数目,从4096改为128,每个汉字在fc7层的输出被视为其风格特征。一个字库中所有字的风格特征平均值,作为整个字库的风格特征值。图2(c)为10个字库的字的风格特征值在二维空间可视化后的结果,如图所示,每个字库的风格特征值都聚集在一起。所以,采取均值的方式得到的风格特征值能够代表每个字库的风格。

b.字形特征。

如图2(b)所示,本发明人工标注了每个汉字的关键点。同时使用了文献(cpd--coherentpointdrift)(myronenko,a.,song,x.pointsetregistration:coherentpointdrift.ieeetransactionsonpatternanalysisandmachineintelligence.2010:32(12),2262–2275)记载的上采样和点集匹配的方法,来保证关键点的数目一致。具体来说,针对每个汉字,我们选择关键点最多的字体的关键点作为目标关键点,对其他字体中的点进行上采样。上采样的结果保证了其他字体的关键点个数远远大于目标关键点。之后再进行点集匹配,在每个字体的众多关键点中,找到和目标关键点最匹配的点,并去除其他点。点集匹配后,不同字体中的同一个字就有了相同个数的关键点。

2)建立低维流形空间,如图3所示;

a.连接字形特征与风格特征。

以“大”字为例,其风格特征为128维特征,其关键点数为26个,所以其字形特征为52维。将两个特征拼接,得到180维高维特征向量。并做归一化和减去均值处理。

b.使用gplvm算法,建立低维流形空间。

本发明为了可视化,将低维空间设为二维空间。gplvm算法实现了二维空间的点到180维高维空间上点的映射。

3)训练字体渲染网络,如图4所示;

a.网络结构。

网络结构分为两部分,第一部分为8层下卷积层,每个卷积层有256个3×3的卷积核和2×2的步长,每个卷积层前有batchnorm层进行归一化,每个卷积层后紧接一个relu层。第二部分为8层上卷积层,和下卷积有相同的卷积核、步长以及前后的batchnorm和relu层。

b.损失函数。

损失函数包含两部分,第一部分为本发明定义的带权重的pixel-wise损失函数(l1损失函数),第二部分为对抗损失函数。

第一部分带权重的pixel-wise损失函数表示如式1:

l(pixel)=∑iwi‖yi-g(xi)‖1(式1)

式1中,l(pixel)为带权重的pixel-wise损失函数,wi为第i个样本的权重,g(xi)为第i个样本在字体渲染网络中的输出,yi为第i个样本的目标图片。

第二部分的对抗损失,采用文献(goodfellowi.,pouget-abadiej.,mirzam.,xub.,warde-farleyd.,ozairs.,courvillea.,bengioy.:generativeadversarialnets.innips(2014),pp.2672–2680.)定义的对抗损失函数,表示如式2、式3:

l(g)=∑ilog(1-d(g(xi))(式2)

l(d)=-∑ilog(1-d(yi))-∑ilog(1-d(g(xi))(式3)

式2中,l(g)为字体渲染网络的对抗损失函数,d为对抗训练中的辨别网络,d(g(xi))为字体渲染网络的第i个输出在辨别网络中的输出。式3中,l(d)为对抗训练中辨别网络的损失函数,d(yi)为第i个目标图片在辨别网络中的输出。d(g(xi))为字体渲染网络的第i个输出在辨别网络中的输出。

所以,整个网络的损失函数表示为式4:

lloss=l(g)+l(pixel)(式4)

图5为实施例中使用本发明提出的修改过的pixel-wise损失函数的结果和使用未修改pixel-wise损失函数的结果的对比图;其中,(a)为使用修改过的pixel-wise损失函数得到的字体生成图像;(b)为使用原pixel-wise损失函数得到的字体生成图像。4)流形空间采点,生成新字体。

a.得到特征向量。

gplvm算法可以实现从低维空间到高维空间的映射。假设从低维流形空间选择一个点x,其对应高维空间的特征向量可通过式6得到,式5为高维空间的特征向量表示:

式5中,为高维特征向量,vst为字的风格特征向量,vsk为字的字形特征向量。式6中,为流形空间某个点,为该点对应的高维空间特征向量,y为已有字体在高维空间的向量集合,x*为已有字体在流形空间的点集合,θ*为gplvm算法的参数集,c表示协方差矩阵。

b.获取整个字库的特征向量。

由式5和式6,我们可以得到一个字的风格特征vst和字形特征vsk。再通过最优化问题求解方法,找到在另外一个字的流形空间中的一个点其对应风格特征值为找到该点后,同时也可获得其字形特征向量。最优化问题表示为式7:

式7中,所对应的风格特征向量。

本发明使用文献(kirkpatricks.,gelattc.d.,vecchim.p.,etal.optimizationbysimulatedannealing.science220,4598(1983),671–680.)记载的模拟退火算法求解该问题。在找到字库中其他字对应的字形特征向量后,将每个字形特征向量与风格特征向量一起放入字体渲染网络中,即可得到对应的图像。

通过上述步骤实现自动生成字体。图6为本发明在流形空间采点生成的结果示意图。图6的结果表明,本发明实现了从流形空间的点,到字体图片的映射,在保留汉字字形的同时,保证了字体的多样性。图7为实施例中用求解最优化问题得到的字体图片示意图。图7的结果表明,通过求解最优化问题,本发明在生成字体图片时,保证了不同汉字在同一风格特征向量上能生成相同风格的结果。

需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1