CN114298181A - 一种基于双模态学习的矢量字体生成方法 - Google Patents
一种基于双模态学习的矢量字体生成方法 Download PDFInfo
- Publication number
- CN114298181A CN114298181A CN202111555201.4A CN202111555201A CN114298181A CN 114298181 A CN114298181 A CN 114298181A CN 202111555201 A CN202111555201 A CN 202111555201A CN 114298181 A CN114298181 A CN 114298181A
- Authority
- CN
- China
- Prior art keywords
- font
- vector
- image
- sequence
- learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 120
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000002902 bimodal effect Effects 0.000 title claims abstract description 24
- 238000010586 diagram Methods 0.000 claims abstract description 30
- 230000004927 fusion Effects 0.000 claims abstract description 13
- 238000009877 rendering Methods 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 27
- 238000012549 training Methods 0.000 claims description 27
- 238000009826 distribution Methods 0.000 claims description 20
- 230000001537 neural effect Effects 0.000 claims description 17
- 238000005070 sampling Methods 0.000 claims description 11
- 238000013527 convolutional neural network Methods 0.000 claims description 8
- 238000013528 artificial neural network Methods 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 239000000203 mixture Substances 0.000 claims description 3
- 230000002708 enhancing effect Effects 0.000 claims 1
- 230000000116 mitigating effect Effects 0.000 claims 1
- 230000008447 perception Effects 0.000 claims 1
- 238000012937 correction Methods 0.000 description 12
- 238000012360 testing method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000005094 computer simulation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000002679 ablation Methods 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000002715 modification method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 241000212384 Bifora Species 0.000 description 1
- 241000617388 Glyphis <shark> Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000007794 visualization technique Methods 0.000 description 1
Images
Landscapes
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
Abstract
本发明公布了一种基于双模态学习的矢量字体生成方法,构建双模态学习的矢量字体生成模型DeepVecFont,包括图像编码器、序列编码器、图像解码器、序列解码器;通过学习少量参考字符的字形矢量图和字形位图两个模态的风格特征并进行模态融合,得到融合后统一的字体风格特征;再将融合后的字体风格特征输送到序列解码器和图像解码器中生成目标字符的矢量图和位图;进一步可通过可微分栅格化方法修正矢量字形,对生成的目标字符的字形矢量图进行修正,即得到矢量字体。本发明方法利用了字形位图和矢量图两种模态信息,并可修正生成的矢量字形中存在位置偏移问题,提升矢量字体生成的性能和精度。
Description
技术领域
本发明属于计算机图形学和计算机视觉技术领域,涉及图形和图像生成方法,尤其涉及一种基于双模态学习的生成矢量字体的方法。
背景技术
在计算机图形学和计算机视觉技术领域,字体生成是指利用计算机模型根据给定的条件自动地生成期望的字体,包含但不局限于以下三种场景:(1)给定某种字体风格的少量字符的形状,字体生成计算机模型自动地生成符合给定风格的其他所有字符的形状,从而形成完整的字体;(2)给定两种不同风格的字体,字体生成计算机模型对这两种风格进行融合(插值),得到糅合了这两种风格的新的字体;(3)字体生成计算机模型从学习到的字体风格的分布空间(隐空间)中采样,得到新风格的字体。
字体生成对于图形设计、媒体内容创作等领域具有重要的意义。现有传统的字体设计过程需要设计师的专业知识、灵感和经验,以及耗费设计师大量的工作时间,使用字体生成模型可以辅助或者替代设计师完成字体设计工作,可以极大地提升内容产出的效率。近年来,基于人工智能的字体生成问题引起了学术界广泛的兴趣,然而,学术界大多数提出的方法仅仅能够生成字形图像(glyph image,又称字形位图),并不能够直接生成矢量字体(vector font)。矢量字体由每个字符的字形矢量图构成,每个字形矢量图是通过参数曲线来描述的,它包含了字形轮廓上的关键点,控制点等信息,渲染引擎通过读取这些数学矢量,然后进行一定的数学运算来进行渲染,其优点是字体实际尺寸可以任意缩放而不模糊。然而,传统的字形图像矢量化过程较为繁琐,需要设置较多的方法定义,且人工干预的操作较多,非常耗时耗力。并且,模型生成的字形图像质量成为矢量化结果的瓶颈,即模型生成的字形图像中的瑕疵往往会被保留到矢量化的结果中,影响生成矢量字体的精度。
仅有一小部分方法尝试直接生成矢量字体,如文献(Lopes,Raphael Gontijo,etal."A learned representation for scalable vector graphics."Proceedings of theIEEE/CVF International Conference on Computer Vision.2019.)中的SVG-VAE方法,文献(Carlier,Alexandre,et al."Deepsvg:A hierarchical generative network forvector graphics animation."arXiv preprint arXiv:2007.11301(2020).)中的DeepSVG方法,和文献(Reddy,Pradyumna,et al."Im2vec:Synthesizing vector graphicswithout vector supervision."Proceedings of the IEEE/CVF Conference onComputer Vision and Pattern Recognition.2021.)中的Im2Vec方法。然而,上述三种方法在使用神经网络编码字体风格信息时,都仅仅利用了字形位图和矢量图其中一种模态的信息,由于神经网络本身功能的局限性,这种编码方式得到的字体特征并不完善,例如,仅编码字形位图容易丢失细节信息(如笔端的尖锐或者圆润性),仅编码字形矢量图容易丢失字形的宏观属性(如笔画粗细的一致性)。另一方面,由于矢量字体使用的贝塞尔曲线(Bézier curve)可以被无限分段的特点,字体设计师在标注矢量字体的时候,被标注的字形绘制序列具有不确定性,即相同形状的两条贝塞尔曲线可能会有时候被标注为一段,另一时候被标注为两段。该现象给机器学习模型带来困惑,SVG-VAE方法通过文献(Bishop,Christopher M."Mixture density networks."(1994).)记录的混合密度网络(MixtureDensity Network,MDN),对绘制笔画建模多个潜在的正态分布,来尝试解决这个问题。但是,由于引入多个分布,MDN又带来了位置偏移问题,使得生成的字形的笔画结构存在位置偏差,字形的协调性不佳,精度比较欠缺。
发明内容
为了克服上述现有技术的不足,本发明提供了一种基于双模态学习的矢量字体生成方法(记作DeepVecFont),利用字形位图和矢量图两种模态信息,并可修正生成的矢量字形中存在位置偏移问题,提升矢量字体生成的精度。
本发明对参考字符的矢量图和位图两种模态分别学习字体特征,并对两种模态的特征进行融合,使用融合后的信息生成目标字符的矢量图和位图。同时,使用可微分栅格化方法,进一步沟通生成的矢量字形和位图字形之间的关系,修正生成的矢量字形中存在位置偏移问题。
为了方便说明,本方法约束以下属于术语定义:
字形:指单个字符的外观形状,常见的表达形式是位图和矢量图。
字体:指一个具有同一外观样式或风格、同一排版尺寸的字形的集合。
字形绘制序列:字形矢量图的数据结构,包含有序的若干条绘制指令(如画曲线、画直线、移动笔端、终止绘制等),用来描述字形的轮廓。
字形位图,又称字形图像,字形栅格化图像,字形图片:是指根据字形绘制序列渲染得到的字形图像,以图片的形式呈现。字形位图和字形绘制序列是一一对应的关系。
本发明提供的技术方案如下:
一种基于双模态学习的矢量字体生成方法。构建双模态学习的矢量字体生成模型(命名为DeepVecFont模型),包括图像编码器、序列编码器、图像解码器、序列解码器;对于任意一个字体,将少量参考字符的字形矢量图的绘制序列和对应的字形位图(字形图像)作为输入,通过学习矢量图和字形位图两个模态的风格特征并进行模态融合,得到统一的字体风格特征,再将字体风格特征输送到序列解码器和图像解码器中,可输出任意目标字符的绘制序列(即矢量图)和位图。进一步使用可微分栅格化器(DifferentiableRasterizer)修正矢量字形,对生成的目标字符的矢量图进行形状上的修正,即得到矢量字体。具体包含如下步骤:
3)通过融合fimg和fseq,得到字形图像层面和字形绘制序列层面统一的风格表征,记为f。
6)使用可微分栅格化器去修正从Γt采样得到的矢量字形,使它们看起来更加协调。
具体而言,使用若干个参考字形来学习字体风格特征。在DeepVecFont模型的训练和推理阶段,使用不同的可微分栅格化器修正从Γt采样得到的矢量字形。在模型训练阶段,输入字形和和目标字形是属于同种字体,输入字形的字符种类和目标字形的字符种类都是从字符集里随机采样得到的。字符集可采用英文a-z,A-Z、中文6763个常见汉字字符集。在模型测试(推理)阶段,目标字符类别将遍历字符集,以得到完整的字体。
在步骤1)中,图像编码器采用卷积神经网络(CNN)模型结构,由于在CNN中每个特征通道是被并行计算的,将所有参考字形的图像进行通道维度的拼接操作(concatenation)再送入图像编码器,即学习得到图像层面的字体风格特征fimg。
在步骤2)中,序列编码器采用长短时记忆网络模型(LSTM)结构,采用如下的方式编码绘制序列:首先,将每个参考字形的矢量绘制序列并行地送入序列编码器,并且得到它们编码后的特征。接着,通过一个线性映射将这些特征映射为字形绘制序列层面的全局的字体风格特征fseq。
在步骤3)中,采用模态融合策略,即拼接+多层感知机(Concat+MLP),去学习字形图像和字形绘制序列两种模态联合表示的特征f。MLP(Multilayer Perceptron)代表多层感知机。该联合表示的特征所在的空间(又被称为隐空间)被KL(Kullback-Leibler)损失项约束。
在步骤4)中,图像解码器采用反卷积神经网络(Deconvolutional NeuralNetwork,DCNN)结构。将f和目标字形的字符类别t送到图像解码器中,得到目标字形图像。采用L1范数损失函数loss和文献(Johnson,Justin,Alexandre Alahi,and Li Fei-Fei."Perceptual losses for real-time style transfer and super-resolution."Europeanconference on computer vision.Springer,Cham,2016.)记载的感知损失函数(perceptual loss)来联合监督生成字形图像的重建质量。
在步骤5)中,序列解码器采用长短时记忆网络模型(LSTM)结构,它接收f和t作为输入,输出状态ht用于最终的序列预测。使用softmax分类器和一个MDN网络(混合密度网络)接在LSTM结构的序列解码器的最后一层,用来分别预测重建绘制序列中每条指令的类别和坐标。值得注意的是,MDN网络为每个绘制指令的每个坐标预测NG个正态分布。定义两个损失函数,即交叉熵损失CE,和混合密度网络损失MDNLoss,去衡量指令类别和坐标的重建质量。
在步骤6)中,利用可微分栅格化器(rasterizer)对步骤5)生成的绘制序列进行修正操作。其中,在DeepVecFont模型的训练阶段,使用神经可微分栅格化器(NeuralDifferentiable Rasterizer,NDR),将生成的绘制序列栅格化得到的图像,向真实的字形图像进行对齐,完成生成的绘制序列的修正。在DeepVecFont的测试或者推理阶段,使用文献(Li,Tzu-Mao,et al."Differentiable vector graphics rasterization for editingand learning."ACM Transactions on Graphics(TOG)39.6(2020):1-15.)记载的diffvg方法,将生成的绘制序列栅格化得到的图像(即生成的绘制序列对应的字形位图),向步骤4)生成的字形图像进行对齐,完成生成的绘制序列的修正。
在训练阶段,DeepVecFont整体模型的损失函数定义包括目标字形图像的重建损失,和目标字形绘制序列的类别和坐标重建损失,以及双模态融合后的特征空间的规范性损失。
与现有技术相比,本发明的有益效果:
本发明提供一种基于双模态学习的矢量字体生成方法,利用字形位图和矢量图两种模态信息,对参考字符的矢量图和位图两种模态分别学习字体特征,并对两种模态的特征进行融合,得到统一的字体风格特征,再将融合后的字体风格特征输送到序列解码器和图像解码器中,生成目标字符的矢量图和位图;再使用可微分栅格化方法进一步沟通生成的矢量字形和位图字形之间的关系,修正生成的矢量字形中存在的位置偏移问题。采用本发明的技术方案,可大大提升矢量字体生成的性能和精度。
附图说明
图1是本发明实施例使用的字形图像示意图。
图2是本发明提供的矢量字体生成方法的流程框图。
图3是本发明的网络结构的数据流示意图。
图4是本发明方法在训练阶段使用的可微分栅格化器的结构示意图。
图5是本发明方法在测试或者推理阶段对字形进行修正的流程示意图。
图6是本发明根据少量字符的形状作为参考,生成完整矢量字体的实验结果;
其中,输入的参考字形由矩形框标注,“w/o refinement”和“w/refinement”分别表示在测试阶段不使用和使用修正策略得到的结果。
图7是本发明和其他三种矢量字体生成方法的对比实验结果;
其中,Ours代表本发明生成的结果,“w/o”表示不使用,“w/”表示使用,“R”表示测试或者推理阶段使用的字形修正方法,“Syn.Imgs”代表生成的字形图像,“GT”表示设计师设计的真实的字形。在第一组例子中,参考字符是“A”和“B”;在第二组例子中,参考字符是“a”和“b”。
图8是本发明方法的消融实验结果,用来验证每个模块提出的策略有效性;
其中,第一行到第四行是本模型在去掉不同的模块后生成的结果,“w/o”表示不使用,“w/”表示使用,“Img Enc”表示不使用图像编码器(不对字形图像模态进行编码),“LSTMEnc”表示LSTM序列编码器(不对字形绘制序列模态进行编码),“NDR”表示神经可微分渲染器,“&”表示且,“Full Model”表示本发明提供的完整的方法,“R”表示测试或者推理阶段使用的字形修正方法,“Ground Truth”表示设计师设计的真实的字形。参考字符是“A”和“B”。
图9是本发明对两种任意字形进行风格插值得到新字体的实验结果;
其中,λ是插值系数,表示在插值过程中,字体a被分配权重1-λ,字体b被分配权重λ。
图10是本发明在风格空间中随机生成新字体的实验结果。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供了一种基于双模态学习的矢量字体生成方法。对于任意一个字体,本发明接收少量参考字符的绘制序列和对应的位图作为输入,通过学习矢量图和位图两个模态的风格特征并进行模态融合,得到统一的字体风格特征,再将其输送到解码器中,可输出任意目标字符的绘制序列(即矢量图)和位图。结合可微分栅格化器(DifferentiableRasterizer),对生成的矢量图进行形状上的修正,最后得到完整的矢量字体。
本发明方法使用的字形图像和绘制序列的数据结构定义如下:一个矢量字体的字形集合可以表示为其中Nchar是字符的类别数。对于英文字符而言,Nchar=52,字符集包括“a”全“z”和“A”全“Z”。Gi代表第i个字形的绘制序列,可以被表示为:
Gi={Ci,j|1≤j≤li},
Ci,j=(zi,j,pi,j),
pi,j={(xi,j,k,yi,j,k)|1≤k≤Np},
其中li代表Gi中绘制指令的数量,Ci,j代表着G(i)中第j个指令,zi,j代表Ci,j的指令类别,pi,j代表Ci,j中的指令坐标参数,Np是每个指令中坐标对的数量。使用固定的坐标参数数量,即Np是固定的,没有使用到的坐标参数被置为0。
图1是本发明实施例使用的字形图像示意图,其中标注的数字坐标是每条绘制指令的控制点坐标。。该字形绘制序列的数据结构如表1所示。表1中,绘制指令的类别有四类,即zi,j∈{move,line,curve,end},在表1中对应地简写为m,1,c和end,分别代表(1)移动绘制的位置(开启一段新的轮廓);(2)画直线;(3)画一个三阶的贝塞尔(Bézier)曲线;(4)结束绘制过程。因为数据结构使用相对坐标,并且三阶贝塞尔曲线有4个控制点,所以对于所有绘制指令,设置Np=3。更具体地来说,对于zi,j∈{move,line},只有(xi,j,3,yi,j,3)被使用,它代表着终止点(目标点)。对于zi,j=curve,(xi,j,1,yi,j,1)和(xi,j,2,yi,j,2)是中间的两个控制点,(xi,j,3,yi,j,3)代表着终止点。对于zi,j=end,没有参数被使用。对于没有使用到的参数,将它们的值设置为0。在准备数据的时候,将这些绘制序列渲染成字形图像即通过传统的基于计算机图形学的栅格化方法,将Ci栅格化成Xi。
表1字形绘制序列的数据结构
本发明方法的流程和网络结构数据流分别如附图2和附图3所示,为了便于理解实施细则,在此将所有的参数符号进行统一说明:
Nr:参考字符的数量,在附图2中,Nchar=4;
Nchar:字符集的大小,对于英文字符集“a”-“z”和“A”-“Z“,Nchar=52;
一个矢量字体中,第i个字符的绘制序列(矢量字形)记作Gi,经过图形学栅格化算法,可以渲染得到字形图像Xi;
是参考字符的字符序号,t是目标字符的字符序号;在DeepVecFont的训练阶段,和t均是从{1,2,…,Nchar}中随机采样得到;在DeepVecFont的测试或者推理阶段,由用户指定,t则通常是一一遍历{1,2,…,Nchar},以得到每个字符的矢量字形,从而得到完整的字体。
具体实施时,基于双模态学习的矢量字体生成包括如下步骤:
输入Nr个参考字形来学习字体风格;图像编码器是卷积神经网络(CNN)结构,由于在CNN中每个特征通道是被并行计算的,将所有参考字形的图片进行通道维度的拼接操作(concatenation)再送入图像编码器:
其中方括号代表有序的拼接,如图2所示,所有的字形图片是根据其字符类别放置到对应的通道上再输入到图像编码器中的。
序列的编码器是长短时记忆网络(LSTM)结构,采用如下的方式编码绘制序列:首先,将每个参考字形的矢量序列并行地送入序列编码器,并且得到它们编码后的特征:
接着,序列层面的全局特征采用如下的计算方式:
其中,Wa是一个线性映射,用来聚合所有的序列特征;方括号表示特征拼接(concatenation)。
3)通过融合fimg和fseq,得到图像层面和序列层面统一的风格表征f。
具体实施时,可采用最常见的模态融合策略,即拼接+多层感知机(Concat+MLP),去学习图像和序列两种模态的联合表示:
f=MLP([fimg;fseq])
其中MLP(Multilayer Perceptron)代表多层感知机;方括号表示特征拼接(concatenation)。
该联合表示的特征f所在的空间(隐空间)被KL(Kullback-Leibler)损失项约束:
图像解码器采用反卷积神经网络(Deconvolutional Neural Network,DCNN)结构。将f和目标字形的字符类别t送到图像解码器中:
采用L1 loss和文献(Johnson,Justin,Alexandre Alahi,and Li Fei-Fei."Perceptual losses for real-time style transfer and super-resolution."Europeanconference on computer vision.Springer,Cham,2016.)记载的感知损失函数(perceptual loss)来联合监督目标图像的重建:
其中,Xt是真实的字形图像(Ground Truth),Lrec是图像重建的损失函数,Lpercep代表感知损失函数。
序列解码器采用长短时记忆网络模型(LSTM)结构,它接收f和t为输入,输出状态ht用于最终的序列预测:
ht=LSTMDec(f,t)
使用softmax分类器和一个MDN网络接在LSTM解码器的最后一层,用来分别预测指令的类别和坐标:
{(λ_{k},μ_{k},σ_{k})|1≤k≤N_{G}}=MDN(h_{t})
其中,是参数坐标潜在的所有高斯分布,且带有归一化的权重即值得注意的是,本模型为每个绘制指令的每个坐标预测NG个正态分布,为了简洁起见,它们对应的下标并没有列出来。最后,这一步骤定义了两个损失函数,表示为:
LMDN=MDNLoss(pt,MDN(ht))
其中,CE表示交叉熵损失,MDNLoss计算了pt偏离这些正态分布的程度。LMDN的具体计算方式可以参见文献(Bishop,Christopher M."Mixture density networks."(1994).)。
7)在训练和推理阶段,使用可微分栅格化器去修正采样得到的矢量字形,使它们看起来更加协调。利用可微分的栅格化器(rasterizer)对生成的绘制序列和对应的图像进行直接的对齐,完成修正操作:
在训练DeepVecFont的主模型(包括图像编码器、序列编码器和图像解码器、序列解码器)之前,首先预训练神经可微分栅格化器,它的结构如图4所示。该栅格化器由一个序列编码器(LSTM结构)和一个图像解码器(CNN结构)组成。给定训练集里的任意一个字形绘制序列G,该栅格化器(记作)学习去栅格化得到它对应的字形图像
损失函数由L1 Loss和perceptual Loss构成。DeepVecFont在训练初期会产生很多无效的指令,该栅格化方法对于无效的绘制指令,它仍然能够输出结果,而现有方法(diffvg)是无法合理处理这种情况的,本发明提出在训练阶段使用NDR方法来修正矢量字形。通常来说,指令类别的预测和MDN损失函数的优化都是将注意力放在局部,而神经可微分栅格化器将注意力集中在全局。从这个角度上来说,神经可微分栅格化器为MDN损失和交叉熵损失提供了有意义的补充信息。用来预训练神经可微分栅格化器的损失函数表示为:
其中,Lp是Lpercep的缩写。当预训练完成后,将神经可微分栅格化器接入主模型,用来增强预测得到的结果。神经可微分栅格化器的参数在主模型训练的时候是固定的。在训练的每一步,从预测得到的分布中随机采样一组绘制序列:
其中,GMM表示高斯混合模型。尽管GMM被用来预测中的参数坐标指令类别也被GMM影响的。这是因为在序列模型中,某一步的绘制指令是受到之前所有的移动影响的。因此,为了简洁起见采用这个公式,即GMM控制着指令类别和指令坐标的采样。采样得到的序列被送到神经栅格化器中。使用Lras作为重建矢量字形的一个辅助损失函数:
具体而言,Lras被设计用来减轻之前提到的位置偏移问题。至此,DeepVecFont在训练阶段整体的损失函数Ltotal定义为:
Ltotal=Lrec+LCE+LMDN+Lras+Lkl
其中每一项上文已经提及,具体来说,Lrec是字形图像重建的损失函数,LCE+LMDN+Lras是矢量字形重建的损失函数,Lkl是规范字体风格隐空间的损失函数。
7b)在测试或者推理阶段,使用文献(Li,Tzu-Mao,et al."Differentiablevector graphics rasterization for editing and learning."ACM Transactions onGraphics(TOG)39.6(2020):1-15.)记载的diffvg方法对字形进行进一步修正。
图5展示了在测试(或者推理)阶段如何进一步修正生成的矢量字形。首先,从得到的高斯分布中采样得到一些候选矢量字形:
进行多重采样的原因是,在每一个时间步选取最有可能的分布得到的候选字形,未必是最好的候选字形。该现象在自然语言处理任务中很常见,通常采用束搜索(beamsearch)来解决,但是本任务的搜索空间是过于巨大,所以采用一定量的候选字形。如之前的步骤所示,每个字形是由指令类别和指令坐标构成:
首先,合并每个轮廓的起始点和终止点(因为它们从分布中采样得到,未必是重合的)。接着,使用diffvg方法,其功能记作去进一步修正之前生成的矢量字形。具体来说,固定指令类别并调整指令坐标值去最小化栅格化后的结果与生成的字形图像的L1距离:
其优化过程使用梯度下降算法。然后,得到了所有候选字形修正后的结果:
从所有修正后的矢量字形中挑选出最好的结果:
最好的结果具有和对应生成字形图像最小的L1距离。从图5可以看出,该修正过程是被初始的字形结构显著影响的。如果初始的绘制指令的数量和类别和ground truth较为接近,该修正过程大概率会得到高质量的矢量字形。
图6展示了本发明提供的方法在给定少量(4个,即Nr=4)参考字形情况下生成完整字体的能力。在第二个例子中,本发明生成的矢量字形与人工设计的字形(groundtruth)几乎完全相同。对于第一个例子,有些生成的字形和设计师设计的字形(groundtruth)有些轻微的不同,尤其是很多大写字符。考虑到本发明方法仅接受“A”,“B”,“a”和“b”作为参考输入,生成的其他字符的字形已经充分地体现了输入字形的风格特点。更重要地是,对于本发明生成的结果,同种字体的不同字符的风格一致性是很统一的。
图7将本发明提供方法和其他现有的三种矢量字体生成方法,包括SVG-VAE,DeepSVG和Im2Vec,用于生成矢量字体的结果对比。其中,Im2Vec方法采用本模型生成的字形图像进行矢量化。因为SVG-VAE和DeepSVG都是从单个字符中学习字体风格特征,这里将Nr个参考字形分别送入它们的风格编码器再取平均,作为最终使用的字体风格特征用于后续的重建。从图7可以看出,DeepSVG和SVG-VAE倾向于生成带有严重扭曲和瑕疵的矢量字形。Im2Vec主要存在三个问题:(1)它倾向于首先拟合大的轮廓而忽略了小的轮廓,如“B”,“a”和“d”。(2)对于具有连续多个凹区域的字形,如“m”,“M”和“k”,它倾向于陷入局部极值。(3)字形中的直线并没有被很好地拟合,拟合后的曲线也不如DeepVecFont的结果平滑。因此可以得出:如果只使用图像模态做为监督,矢量字体的细节不可能被重建得非常好。借助于本发明提出的双模态学习策略,在没有修正的情况下,本发明生成的字体已经显著好于现有的方法,并且在修正之后,质量是和人类设计的结果可比的。
图8通过消融实验展示了本发明方法提出的每个模块或者策略的有效性。如果不对绘制序列模态进行特征编码,生成的字体则会丢失细节(在本例中是拐角的圆润性);如果不对字形图像模态进行特征编码,生成的字体会出现较多的扭曲和形变;如果在训练阶段不使用神经可微分渲染进行修正,生成的字体的位置偏移问题会比较严重,在测试的最后阶段,结合diffvg方法进行进一步修正,本方法可以得到高质量的字形矢量图。
图9展示了本发明方法通过操纵隐空间特征,可以对不同的字体进行插值。图中结果展示了本方法可以在不同的字体之间实现平滑的渐变,从而得到更多的视觉效果好的矢量字体。从图中可以看出,字体的粗细、斜体、衬线等属性平滑地发生了变化。
图10展示了本发明方法可以从隐空间中进行采样生成新的字体风格。具体来说,从标准正态分布中随机采样128维向量,作为本模型的字体风格特征f,去生成字形图像和矢量字形。图中展示了一些随机生成的字体(修正后的),并且通过可视化方法将其呈现在二维坐标系中。其中,实线+箭头指向的是本发明随机生成的字体,虚线+箭头指向的是与这些生成字体风格最相近的训练字体。可以观察到,本发明生成的字体是视觉上让人愉悦的,并且和最相近的训练字体有着风格上的差异。
以上结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。可以理解的是,所描述的实例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
Claims (9)
1.一种基于双模态学习的矢量字体生成方法,其特征是,构建双模态学习的矢量字体生成模型DeepVecFont,包括图像编码器、序列编码器、图像解码器、序列解码器;通过学习少量参考字符的字形矢量图和字形位图两个模态的风格特征并进行模态融合,得到融合后统一的字体风格特征;再将融合后的字体风格特征输送到序列解码器和图像解码器中生成目标字符的矢量图和位图;进一步可通过可微分栅格化方法修正矢量字形,对生成的目标字符的字形矢量图进行修正,即得到矢量字体;包括如下步骤:
1)将参考字符的字形图像送至图像编码器,用于学习字形图像层面的字体风格特征,记为fimg;
2)将这些参考字符的绘制序列送至序列编码器中,用于学习字形绘制序列层面的字体风格特征,记为fseq;
3)通过模态融合策略融合fimg和fseq,学习得到字形图像和字形绘制序列两种模态联合表示的特征,记为f;所述模态融合策略采用拼接+多层感知机;所述两种模态联合表示的特征f所在的空间为被KL损失项约束的隐空间;
6)再使用可微分栅格化方法修正从Γt采样得到的矢量字形;
在DeepVecFont模型的训练阶段,输入的参考字形的字符种类和目标字形的字符种类均从字符集随机采样得到;DeepVecFont模型训练的损失函数包括目标字形图像的重建损失、目标字形绘制序列的类别和坐标重建损失,生成字形绘制序列栅格化后的图像重建损失,以及双模态融合后的特征空间的规范性损失;所述可微分栅格化方法具体使用神经可微分栅格化器NDR,将生成的绘制序列栅格化得到的图像,向真实的字形图像进行对齐,对生成的绘制序列进行修正;执行上述步骤1)~6),即得到训练好的DeepVecFont模型;
在DeepVecFont模型的推理阶段,利用训练好的DeepVecFont模型,遍历字符集,得到目标字形的矢量字体;所述可微分栅格化方法具体采用diffvg方法,将生成的绘制序列栅格化得到的图像,向步骤4)生成的字形图像进行对齐,即对生成的绘制序列进行修正;
通过上述步骤,即实现基于双模态学习的矢量字体的生成。
2.如权利要求1所述基于双模态学习的矢量字体生成方法,其特征是,字符集可采用英文a-z,A-Z或中文6763个常见汉字字符集。
3.如权利要求1所述基于双模态学习的矢量字体生成方法,其特征是,所述图像编码器采用卷积神经网络模型结构,模型中每个特征通道为并行计算;将所有参考字形的图像进行通道维度的拼接操作,再送入图像编码器,即学习得到图像层面的字体风格特征fimg。
4.如权利要求1所述基于双模态学习的矢量字体生成方法,其特征是,所述序列编码器采用长短时记忆网络模型结构,采用如下编码方式编码绘制序列:
首先,将每个参考字形的矢量绘制序列并行地送入序列编码器,并得到编码后的特征;
接着,通过线性映射将得到编码后的特征映射为字形绘制序列层面的全局的字体风格特征fseq。
6.如权利要求1所述基于双模态学习的矢量字体生成方法,其特征是,所述序列解码器采用长短时记忆网络模型结构;输入为f和目标字形的字符类别t;输出状态ht,用于序列预测;使用softmax分类器和混合密度网络接在LSTM结构的序列解码器的最后一层,用来分别预测重建绘制序列中每条指令的类别和坐标;所述混合密度网络为每个绘制指令的每个坐标预测NG个正态分布;采用交叉熵损失函数和混合密度网络损失函数,用于衡量指令类别和坐标的重建质量。
字形图像和绘制序列的数据结构定义如下:
Gi={Ci,j|1≤j≤li},
Ci,j=(zi,j,pi,j),
pi,j={(xi,j,k,yi,j,k)|1≤k≤Np},
其中,li代表Gi中绘制指令的数量;Ci,j代表着G(i)中第j个指令;zi,j代表Ci,j的指令类别;pi,j代表Ci,j中的指令坐标参数;Np是每个指令中坐标对的数量;
Gi经过图形学栅格化算法渲染得到字形图像Xi;
A.在训练DeepVecFont模型之前,预训练神经可微分栅格化器;该栅格化器包括一个序列编码器和一个图像解码器给定训练集里的任意一个字形绘制序列G,通过使用该栅格化器学习去栅格化得到对应的字形图像表示为:
损失函数包括采用L1范数损失函数和感知损失函数;表示为:
其中,Lp是感知损失函数;
B.当预训练完成后,将神经可微分栅格化器接入DeepVecFont模型,用来增强预测得到的结果;神经可微分栅格化器的参数在DeepVecFont模型训练时固定;在训练的每一步,从预测得到的分布中随机采样一组绘制序列表示为:
其中,GMM表示高斯混合模型;
C.将采样得到的绘制序列送到神经可微分栅格化器中;
D.设计一个重建矢量字形的辅助损失函数Lras,表示为:
其中,辅助损失函数Lras即用于减轻位置偏移。
9.如权利要求8所述基于双模态学习的矢量字体生成方法,其特征是,在DeepVecFont模型推理阶段,使用diffvg方法对采样得到的矢量字形进行修正,具体方法包括:
首先,从得到的高斯分布中进行多重采样,得到候选矢量字形,表示为:
合并每个轮廓的起始点和终止点;
接着使用diffvg方法进一步修正之前生成的矢量字形;具体包括:
使用梯度下降算法进行优化,得到所有候选字形修正后的结果,表示为:
通过下式从所有修正后的矢量字形中挑选出最好的结果:
即最好的结果具有和对应生成字形图像最小的L1距离,从而得到高质量的矢量字形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555201.4A CN114298181B (zh) | 2021-12-17 | 2021-12-17 | 一种基于双模态学习的矢量字体生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555201.4A CN114298181B (zh) | 2021-12-17 | 2021-12-17 | 一种基于双模态学习的矢量字体生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114298181A true CN114298181A (zh) | 2022-04-08 |
CN114298181B CN114298181B (zh) | 2024-06-21 |
Family
ID=80968279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111555201.4A Active CN114298181B (zh) | 2021-12-17 | 2021-12-17 | 一种基于双模态学习的矢量字体生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114298181B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115796119A (zh) * | 2023-02-02 | 2023-03-14 | 合肥高维数据技术有限公司 | 基于渲染效果的字体校准方法 |
CN117291138A (zh) * | 2023-11-22 | 2023-12-26 | 全芯智造技术有限公司 | 用于生成版图元素的方法、设备和介质 |
CN117474956A (zh) * | 2023-12-25 | 2024-01-30 | 浙江优众新材料科技有限公司 | 基于运动估计注意力的光场重建模型训练方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804397A (zh) * | 2018-06-12 | 2018-11-13 | 华南理工大学 | 一种基于少量目标字体的汉字字体转换生成的方法 |
CN111881648A (zh) * | 2020-08-06 | 2020-11-03 | 上海触讯信息科技有限公司 | 一种生成电子书字体文件的方法 |
KR20210037280A (ko) * | 2019-09-27 | 2021-04-06 | 이현규 | 손 글씨를 이용한 폰트 제작 방법 |
US20210248432A1 (en) * | 2020-02-12 | 2021-08-12 | Adobe Inc. | Differentiable rasterizer for vector font generation and editing |
-
2021
- 2021-12-17 CN CN202111555201.4A patent/CN114298181B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804397A (zh) * | 2018-06-12 | 2018-11-13 | 华南理工大学 | 一种基于少量目标字体的汉字字体转换生成的方法 |
KR20210037280A (ko) * | 2019-09-27 | 2021-04-06 | 이현규 | 손 글씨를 이용한 폰트 제작 방법 |
US20210248432A1 (en) * | 2020-02-12 | 2021-08-12 | Adobe Inc. | Differentiable rasterizer for vector font generation and editing |
CN111881648A (zh) * | 2020-08-06 | 2020-11-03 | 上海触讯信息科技有限公司 | 一种生成电子书字体文件的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115796119A (zh) * | 2023-02-02 | 2023-03-14 | 合肥高维数据技术有限公司 | 基于渲染效果的字体校准方法 |
CN115796119B (zh) * | 2023-02-02 | 2023-04-18 | 合肥高维数据技术有限公司 | 基于渲染效果的字体校准方法 |
CN117291138A (zh) * | 2023-11-22 | 2023-12-26 | 全芯智造技术有限公司 | 用于生成版图元素的方法、设备和介质 |
CN117291138B (zh) * | 2023-11-22 | 2024-02-13 | 全芯智造技术有限公司 | 用于生成版图元素的方法、设备和介质 |
CN117474956A (zh) * | 2023-12-25 | 2024-01-30 | 浙江优众新材料科技有限公司 | 基于运动估计注意力的光场重建模型训练方法及相关设备 |
CN117474956B (zh) * | 2023-12-25 | 2024-03-26 | 浙江优众新材料科技有限公司 | 基于运动估计注意力的光场重建模型训练方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114298181B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114298181B (zh) | 一种基于双模态学习的矢量字体生成方法 | |
Li et al. | Differentiable vector graphics rasterization for editing and learning | |
CN108921926B (zh) | 一种基于单张图像的端到端三维人脸重建方法 | |
CN107256557B (zh) | 一种误差可控的细分曲面图像矢量化方法 | |
CN108830913B (zh) | 基于用户颜色引导的语义级别线稿上色方法 | |
Wang et al. | Deepvecfont: synthesizing high-quality vector fonts via dual-modality learning | |
CN113111861A (zh) | 人脸纹理特征提取、3d人脸重建方法及设备及存储介质 | |
US20230044644A1 (en) | Large-scale generation of photorealistic 3d models | |
JP5916758B2 (ja) | Gpu上でのcadモデルの直接的なレンダリング | |
CN106408626A (zh) | 图形处理系统 | |
EP2528042B1 (de) | Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen | |
CN113066171A (zh) | 一种基于三维人脸形变模型的人脸图像生成方法 | |
CN113129447A (zh) | 基于单张手绘草图的三维模型生成方法、装置和电子设备 | |
CN115689869A (zh) | 一种视频美妆迁移方法及系统 | |
US20230186430A1 (en) | Systems and Methods for Image Transformation using Distance Field Procedures | |
CN115984441A (zh) | 一种基于神经着色器的快速重建带纹理三维模型的方法 | |
Song et al. | Clipvg: Text-guided image manipulation using differentiable vector graphics | |
Xia et al. | Vecfontsdf: Learning to reconstruct and synthesize high-quality vector fonts via signed distance functions | |
CN111666739A (zh) | 基于Potrace算法的中文矢量字库生成方法 | |
US11908114B2 (en) | Systems and methods for image transformation | |
Dai et al. | Automatic image vectorization using superpixels and random walkers | |
CN113112596A (zh) | 人脸几何模型提取、3d人脸重建方法、设备及存储介质 | |
US11557066B1 (en) | Systems and methods for image transformation based on API calls | |
US11544882B1 (en) | Systems and methods for image transformation based on transformation instructions | |
Sun et al. | Building coarse to fine convex hulls with auxiliary vertices for palette-based image recoloring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |