CN112784531A - 一种基于深度学习和部件拼接的中文字形及字库生成方法 - Google Patents
一种基于深度学习和部件拼接的中文字形及字库生成方法 Download PDFInfo
- Publication number
- CN112784531A CN112784531A CN201911069573.9A CN201911069573A CN112784531A CN 112784531 A CN112784531 A CN 112784531A CN 201911069573 A CN201911069573 A CN 201911069573A CN 112784531 A CN112784531 A CN 112784531A
- Authority
- CN
- China
- Prior art keywords
- font
- chinese
- character
- component
- chinese character
- 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
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000013135 deep learning Methods 0.000 title claims abstract description 29
- 238000012549 training Methods 0.000 claims abstract description 33
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000005215 recombination Methods 0.000 claims abstract description 3
- 230000006798 recombination Effects 0.000 claims abstract description 3
- 238000001514 detection method Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 239000004576 sand Substances 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 5
- 238000002372 labelling Methods 0.000 claims description 4
- 238000009877 rendering Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000001427 coherent effect Effects 0.000 claims description 3
- 230000004927 fusion Effects 0.000 claims description 3
- 238000003064 k means clustering Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000011176 pooling Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 description 10
- 238000013527 convolutional neural network Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 230000008439 repair process Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 229920004934 Dacron® Polymers 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000001149 cognitive effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000005020 polyethylene terephthalate Substances 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 235000002017 Zea mays subsp mays Nutrition 0.000 description 1
- 241000482268 Zea mays subsp. mays Species 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003321 amplification Effects 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
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公布了一种基于深度学习和部件拼接的中文字形及字库生成方法,对目标字库中的汉字字形进行结构拆分得到用于重组的基础矢量部件;根据目标字库中的汉字字形的布局预测待生成字形的布局,将基础矢量部件拼接生成新的矢量字形;生成方法包括线下处理过程和线上处理过程;线下处理过程对已有字库的字体进行处理,得到训练数据和参考模板,线上处理过程针对任意包含少量特定汉字字形的目标字库,采用部件拼接的方法生成完整的中文矢量字形。采用本发明的技术方案,可根据设计好的少量矢量汉字字形,自动生成一套完整且可以被实际使用的高质量中文矢量字库。
Description
技术领域
本发明属于人工智能、计算机图形处理技术领域,涉及汉字处理技术,尤其涉及一种基于深度学习和部件拼接的中文字库生成方法,通过汉字字形的笔画部件自动提取,采用深度学习方法对目标字库中的字形进行件架结构的预测,并使用部件拼接的方法来生成最终的字形,进而组成一套完整的中文矢量字库。
背景技术
随着计算机技术的迅猛进步,人们对设备中显示的汉字也提出了更高的要求,比如同一个汉字字符要有不同的字形和衬线,于是字体技术便应运而生。除了最初标准的黑体、宋体和楷体等,字体设计者们也创造了许许多多个性化的字库,如“方正静蕾体”、“方正童趣体”和“方正爆米花体”等。这些字体最大的特点就是风格明显,或骨骼清秀、遒劲有力,或简单可爱、打破常规,极大地张扬了汉字的书法艺术,在社交平台、广告宣传、产品包装上都具有广泛的应用价值。
然而,设计一款能够实际使用的个性化字库是一件费时费力的工作,通常需要专业设计师花费数月的时间。一方面,点阵字体如今基本被弃用,以图片形式存储的字形已经无法满足当下的应用需求,因此设计师必须对字形图片进行矢量化或者直接在字体编辑软件中设计矢量字形。另一方面,不同于英文只有26个字母,标准的中文字符集如GB2312,通常包括数以千计的中文汉字,这就使得设计者需要分别对每个字形进行独立设计,极大地增加了人工的工作量。
当前,现有的辅助生成中文字库的技术主要分为两大类别,基于图形学的方法和基于深度学习的方法。图形学方法主要使用笔画或部件的拼接或变换的思想来实现对未知字形的生成。这样的结果因为使用了原始字形的结构,因此能够较好地保留原始字体的风格,但直接按照标准字形放置部件要求目标字形与参考字形在结构上十分接近,这通常是一个难以被满足的要求。基于深度学习的方法主要是利用风格迁移方法或生成对抗网络来实现对新的汉字字形的推理。虽然这些方法能够生成更加逼真的图片,但是应用在汉字字库领域,仍然存在两个重要的缺陷。一方面,训练生成对抗网络是一个无法控制和预测的过程,因此生成的字形图片往往存在笔画模糊和重影等现象,不适于读者阅读。另一方面,所有基于深度学习直接生成的方法都是将字形作为图片来处理,生成的结果也只能以图片的形式展示,这就导致结果在放大后失真严重,无法被直接应用。另外,由于模糊和噪点现象的存在,也无法对结果进行高质量的自动矢量化,而需要大量人工的后期调整。
发明内容
针对现有技术中存在的中文字体设计工作量大以及深度学习方法生成字库往往无法投入实际使用的问题,本发明提供一种基于深度学习和部件拼接的中文字库生成方法,该方法可根据设计好的少量矢量汉字字形,自动生成一套完整且可以被实际使用的高质量中文矢量字库。
本发明的核心是:考虑到虽然不同字体在字形上的风格各异,但对于同一个汉字字符的字形而言,其结构和组成都是类似的,而且同一个字体中的不同字形中也存在大量可以被重复利用的部件。本发明通过对汉字字形的部件进行复用,再根据深度学习模型预测出的汉字字形的件架结构将这些部件进行拼接,从而得到新的字形。在完成汉字字库生成任务的同时,还能够实现直接生成矢量字库的目标,从而解决了字形图片难以被投入到实际应用的问题。
为方便说明,本发明约定以下术语定义:
汉字字符——中文中的一个被编码过的信息单位;
汉字字形——一个汉字字符的视觉表现形式,在不同字体中,同一个汉字字符可能会拥有不同的汉字字形;
汉字字库——一系列汉字字符对应的汉字字形的集合,同一款字库中的汉字字形通常会保持统一的风格;
矢量字形——使用贝塞尔曲线来表示和存储轮廓的字形,目前计算机中使用的大多数字库均属于矢量字库,即字形轮廓用贝塞尔曲线来表示;
交叉字库——中文矢量字库的一种,字库中每个字形均以笔画为单位构成,可以很容易地将各个笔画分离出来;
笔画——书写过程中笔画梯度方向未发生显著变化的连续区域,主要包括横、竖、撇、捺、点、勾、提七大笔画类别;
部件——为了提高部件复用的可用性,将汉字字形中容易粘连或经常按照固定结构出现的若干笔画按照符合大众认知逻辑、重叠少、可拆分性好的原则,组合成为的更高层的结构,可以理解为广义上的偏旁部首;
汉字字形的件架结构——一个汉字字形按照部件划分后,每个部件所在的位置和大小的信息,表现形式为所有部件的包围框组合;
目标包围框——一个汉字字形真实的件架结构,是件架结构学习的对象和预测的目标;
预测包围框——件架结构预测模型在线上测试时实际输出的间架结构,我们希望它与目标包围框尽可能一致;
部件拼接字库——以贝塞尔曲线的形式存储全部的部件轮廓,同时对于每个汉字字形,只存储其组成部件的索引、位置和缩放信息的字库,在体积上比传统矢量字库更小;
参考字库——矢量字库,字库中的字形都标注了笔画、骨架点以及控制点等关键信息,并且字形部件已经拆分好;本发明实施例采用的参考字库为仿宋字体;
目标字库——只拥有少部分字形并需要通过本发明生成其他未知字形的字库;
待生成字形——目标字库中不包含的,需要使用本文方法进行生成的字形;
完整字符集——满足日常使用的中文字库最少需要包含的汉字字符集合,本文以GB6763字符集作为完整字符集,其中包含6763个常用汉字字符,只要一款字库中包含这些字符对应的字形,我们就认为它是一款能够投入实际使用的字库。
输入字符集——具体指定了目标字库中需要包含哪些字符对应的字形,这些字形需要在线上阶段进行采集,通常可以由字体设计师进行设计。本发明具体实施使用的输入字符集共计775个字符,覆盖了完整字符集GB6763中所有字符对应字形所使用到的全部部件类别。
本发明提供的技术方案是:
一种基于深度学习和部件拼接的中文字形字库生成方法,主要包括,1)对目标字库中的汉字字形进行结构上的拆分,以便得到可以用来重组的基础部件;2)根据目标字库中的汉字字形的布局来预测待生成字形的布局,计算这些基础部件放置的位置和缩放比例,进而拼接生成新的字形。由于本发明方法直接使用目标字形的矢量结构来拼接生成新的字形,因此最终产生的结果也是矢量字形,进而能够跳过矢量化的步骤,方便快捷地投入到实际使用当中。
本发明的方法步骤主要包括线下处理和线上处理部分,线下部分主要是对已有字库如方正楷体交叉字库、仿宋体等字体进行处理,得到后期的训练数据和参考模板。线上部分主要是针对任意一款包含少量特定汉字字形的目标字库,采用部件拼接的方法来生成完整的中文矢量字库。
具体包括线下和线上两大步骤,线下处理步骤包括步骤A~D:
A.首先对字库中的汉字字形进行笔画类别标记,得到一套笔画类别;
具体实施时,对方正楷体交叉字库全部GB6763字符集(共6763个常用汉字字符)中的每个汉字字符对应的字形的笔画进行分类,得到一套笔画类别。具体执行如下操作:
A1.开发一套可视化标记系统,用于对汉字字形笔画进行类别标记。系统可以解析字库文件,并对字库中汉字字形的每个笔画进行类别标记。
A2.对方正楷体交叉字库的GB6763字形进行笔画类别标记,标记时按照该笔画的书写习惯和形状进行分类。这一步中,共得到包括点、横、竖、撇、捺、横折等32个笔画类别。
B.对字库中的字形进行部件提取:按照符合大众认知逻辑、重叠少、可拆分性好的原则,将每个汉字字形标记好的笔画进一步组合成不同的部件。具体执行如下操作:
B1.首先依据汉字字形传统的书写习惯,将字库中每个字形中的各个笔画组合成为可拆分性好的部件结构,汉字字形中已有的偏旁部首一般会成为最终的一个部件类。
B2.对每个组合好的部件进行特征提取,通过聚类得到部件类别;
具体实施时,本发明使用了具有缩放不变性的尺度不变特征变换(Scale-invariant feature transform,SIFT)特征,之后我们对每个部件的特征进行K均值聚类(k-means clustering),接着对聚类结果进行校验和微调后,最终得到了共计1086个部件类别。
C.根据上述的部件类别,确定最终输入字符集;
输入字符集内的汉字字符对应的字形需要通过线上处理步骤获取,因此要求输入字符集中:
1)完整字符集(如GB6763)的所有字符对应字形包含的所有部件类别必须全部在输入字符集的汉字字符对应的字形中出现;
2)尽量选择部件数和类别数均小于2的汉字字形;
因为如果一个汉字字形中包含太多的部件,则部件之间会因为存在较强的制约关系而产生书写上的变化,因此这种并不是部件最自然的形状;
3)输入字符集中字符的数量要尽量小,以达到减轻字体设计者工作量的目的。具体执行如下操作:
C1.将所有汉字字形按照部件数量从小到大排序,我们将这一步骤的结果称为“C1表”;
C2.将所有部件按照其在汉字字形中出现的次数从小到大进行排序,如果一个部件出现在了多个汉字字形中,则按照C1表中的顺序,对这些汉字字形进行排序。我们将这一步骤的结果称为“C2表”;
C3.设C2表中排名第一的部件对应的第一个汉字字形为h,h对应的汉字字符设为c,则这时我们将c纳入输入字符集S;
C4.删去C2表中“h”包含的部件对应的行;
C5.不断重复C3-C4步,直到所有部件类别全部被覆盖,即C2表为空。最终的S就是确定好的输入字符集;
本发明具体实施时,通过上述方法得到了1086个部件类别对应的输入字符集,共计775个汉字字符。
D.制作模型预训练的输入数据集;
为了使后期线上预测模型具有良好的泛化能力,具体实施时,我们对已有的60款字库中的汉字字形进行了部件拆分处理,将得到的数据制作成数据集,用作后期模型预训练的输入。具体执行如下操作:
D1.将选出的字体中的字形渲染为图片,并对图片字形的笔画骨架进行标注,得到一系列笔画骨架点的集合;
具体实施时,将选出的60款字体的字形渲染为图片,并对图片字形的笔画骨架进行标注工作,标注的结果就是一系列点的集合,每个点有其对应的坐标(x,y),将属于同一笔画的点相互连接就能得到该笔画的骨架信息;
D2.将渲染后得到的字形的黑色像素点分配到最近的笔画骨架点上,完成图像级别的笔画拆分;
D3.按照步骤B中的部件组合方法,将笔画组合成为部件;
D4.将矢量字形与图像字形对齐,将曲线分配到距离最近的部件像素上,将属于同一部件的曲线进行闭合,完成矢量字形的部件拆分;
D5.对拆分出错的结果进行校正;
D6.最终将拆分好的矢量部件制作成数据集,供后期使用,
线上处理步骤包括步骤E~I:
E.首先需要采集得到目标字库的部分矢量汉字字形,这些字形的字符应对应于输入字符集中的字符。
F.对步骤E中得到的汉字字形进行部件的拆分和提取,用以产生后期拼接过程中需要使用的基础部件。拆分方法同样先在图像级别上进行,最后再转换为矢量字形的拆分。具体执行如下操作
F1.选择具有代表性的字体作为线上拆分的参考字形;
从D步骤得到的包含60款字库的输入数据集中选择5款具有代表性的字体作为线上拆分的参考字形,包括标准楷体、方正黑隶简体、方正兰亭黑体、方正书宋体和方正童趣体。选择参考字形的方法:对于待拆分的目标字形,我们首先挑选GB6763字符集中前N个(如300个)汉字字符对应的字形来进行匹配度计算。具体的,我们对每个汉字字形都计算一个跟标准模板汉字字形的重叠度IOU(Intersection over Union),并取平均值作为目标汉字字形与这款标准模板汉字字形的匹配度。最后我们选择匹配度最高的模板作为后期拆分的参考汉字字形。
F2.使用细化算法将目标字形图片和参考字形图片细化为线性的骨架形式,得到细化后的点集;
F3.使用相干点漂移(CPD,Coherent Point Drift)CPD算法,对F2细化后得到的点集进行匹配,即得到目标字形拆分好的骨架;
F4.使用与D2相同的方法,对目标汉字字形在图像级别上进行拆分。
F5.使用与D4相同的方法,对目标字形进行矢量级别拆分,得到矢量化部件;
拆分的结果就是矢量化的部件,并且完全覆盖1086个类别。这些部件将作为后期我们拼字所使用的基础元素。
值得注意的是,我们在F5中对部件矢量轮廓曲线进行拆分时还引入了一系列先验知识,缓解了部件重合导致的分割不准的问题,使其在部件拆分场景下表现更加优异。首先我们对每种笔画都定义了一些关键点,包括笔画的起止点和角点,之后距离关键点较近的部分我们称为笔画的头部,两个关键点之间的部分称为笔画的中部。我们的两个启发式原则包括:1)分割后属于同一部件的轮廓线,要通过有效的范围进行连接,这里有效的范围指字形中黑色的像素点;2)笔画中部的轮廓线需要跟笔画骨架近似地平行。以上两种启发式原则都能提高我们分割的准确率。
G.构建结构预测模型,通过结构预测模型,对不在输入字符集中的字符对应的字形的件架结构进行预测。
我们使用深度学习中较为流行的目标检测网络框架Faster R-CNN(更快的基于区域的卷积神经网络,Faster region-based convolutional neural networks)来作为我们件架结构预测模型的基础。由于一个字形的件架结构的表示本质上就是目标检测模型的结果,即每个部件各自的包围框,因此我们对目标检测框架进行了一部分改进和适配,使其在字形检测上表现更加突出。件架结构预测过程分为模型构建、预训练和线上训练几个过程。具体执行如下操作:
G1.构建件架结构预测模型;件架结构预测模型包括:特征提取器、生成器和检测器;特征提取器用于对字形图片进行卷积和池化;生成器用于生成特征图并实现对特征图的变换;检测器用于输出对应的预测包围框;
本发明具体实施时,件架结构预测模型结构大致可以分为三个部分:特征提取器、生成器和检测器。对于特征提取器,我们使用ResNet-101的网络结构,对640*640*3的字形图片进行卷积和池化,最后生成尺寸为40*40*1024的特征图。之后我们使用一个3*3的卷积操作,再连接缩小版的U-Net,实现对特征图的变换。这一步我们的目的是希望能够学习到两个特征图之间的对应关系。最后我们的检测器使用Faster R-CNN的后续结构,来输出对应的预测包围框。
G2.训练件架结构预测模型
训练时,传入的是同一个汉字字形在两种字体上的不同图片,其中一种字体我们定义为参考字体,另一种字体定义为目标字体。具体实施时,采用的参考字体均为仿宋体,目标字形则可以根据实验不同而变化。我们的目标就是使得特征提取器能够有效地提取字形图片的特征,生成器能够对参考字体的特征进行变化,而检测器则能够根据特征图对字形图片中不同的部件进行定位。具体的,定义参考字体字形图片为Is、目标字体图片为It,经过特征提取网络后,可以得到两个特征图Fs和Ft,生成器的目标是让Fs和Ft尽量接近,因此,使用如下公式来计算两个特征图的差异,作为生成器的损失函数:
其中,w和h分别为特征图的宽高。对于检测器而言,使用与Faster R-CNN相同的损失函数来衡量检测结果的损失。
件架结构预测模型的损失函数可表示为:
Loss=λ1Lossg+λ2Lossd
其中,λ1和λ2分别表示权重,Lossd表示检测器的损失函数。
G3.件架结构预测模型的优化;
正如在B2中提到的,汉字字形部件具有类内差异大、类间差异小的特点,因此单纯从图像特征上来对部件进行分类和检测对网络而言几乎很难完成地很好。因此我们还提出了两种专门针对汉字字形部件定位的改进方案,即1)五笔编码和2)具有内容意识的候选框。对于五笔编码而言,我们观察到五笔输入法中,每个汉字字符都能被表示成至多4个不同的英文字母,于是我们将每个字母变换为二进制的26位独热编码,这样每个汉字字符的五笔编码就可以用104位的近似独热编码来表示,我们将其加入到特征提取器Resnet第二层网络的输出之后,并用一个3*3的卷积来使得特征维数降到原来的大小,实现特征的融合。值得注意的是,使用五笔编码的一个很重要的原因是由于其本身与字形的部件组成关系很密切,比如汉字字符“啊”、“阿”和“唉”具有相似的五笔编码,而在结构上也拥有明显的相似性。具有内容意识的候选框的设计思想是希望通过汉字字符的先验知识来让网络预先估计某个字形部件所在的位置,因为即使是不同的字体,相同汉字字符在字形的件架结构也是十分相似的。因此在网络中我们去掉了Faster R-CNN的RPN网络,换用已有字形的目标包围框来作为网络回归的候选框。
G4.对件架结构预测模型进行预训练
本发明具体地,对于模型的预训练过程,我们使用步骤D中处理好的60套字库数据。首先我们去掉件架结构预测网络模型的生成器,将特征提取器输出的特征图直接送入检测器,来单独训练检测器。之后我们将特征提取器的参数固定,去掉检测器,单独训练生成器。最终我们使用G2的训练过程完整地训练所有件架结构预测模型的网络结构。
G5.对件架结构预测模型进行线上训练
对于模型的线上训练和推理过程,我们首先使用设计好的输入字符集共775个汉字字符对应的字形作为目标字形,来训练检测器。之后我们训练整个网络,以期学习参考字体(仿宋体)到目标字体的变换,同时保证检测器依然能够维持对目标字形部件的件架结构的检测,由此得到训练好的件架结构预测模型。之后在测试时,我们将输入字符集之外的汉字字符对应的字形送入网络中,经过变化就能够得到目标字形的特征图,之后再送入检测器,就能实现对目标字形件架结构的预测。
H.利用步骤G训练好的件架结构预测模型,从F步骤得到的拆分好的部件中,选择尺寸合适的部件,并将其放置在件架结构预测模型输出的预测包围框中,实现拼字和字体生成。具体执行如下操作:
H1.对于汉字字形h而言,假设其组成包括A、B、C三个部件,预测包围框分别用bA、bB、bC表示。则首先从F步拆分好的所有A类部件中,计算它们与预测包围框在尺寸上的相似程度。使用下面的公式计算部件与预测包围框的尺寸相似度指标Score,作为衡量部件尺寸是否合适的指标:
Score=Ratiow+Ratioh
其中,w1、h1表示部件的宽高,w2、h2表示预测包围框bA的宽高。选择Score最大的部件作为跟bA大小最接近的部件,然后缩放到bA大小后,放置在bA中。对部件B和C执行相同的操作,即得到汉字字形h对应的拼接好的字形。
I.生成TTF(TrueType Font,曲线描边字库)矢量字库。
对所有矢量部件进行存储,同时对每个汉字字形,存储H步中得到的部件索引、部件位置以及部件在水平和竖直方向上的缩放比例,然后存储每个部件的贝塞尔曲线,生成TTF文件。根据TTF文件能够自动按照索引和缩放方法,通过渲染得到对应的字形。
J.后期修复和微调。由于分割、预测不准确或者部件过多,生成的字库中的某些字形可能会存在部件重叠、部件质量不高等问题,这时对于一款矢量字体来说,用户可以简单的使用任何字体编辑软件进行后期修复和微调,使字库最终达到自己满意的效果。
本发明提供的上述方法可根据设计好的少量字形,自动生成一套完整且可以被实际使用的高质量中文矢量字库,可用来解决中文矢量字库的生成问题。
与现有技术相比,本发明的有益效果是:
本发明提供一种基于深度学习和部件拼接的中文字库生成方法,该生成方法通过对目标字形部件的提取、未知字形结构的预测等步骤,将部件通过拼接的方式复用,组成新的字形。在完成字库生成任务的同时,还能够实现直接生成矢量字库的目标,用以解决中文字库生成和字形图片难以被投入到实际应用的问题。
通过本发明所提供的生成方法,我们可以实现预测未知字形的同时,生成高质量的矢量字库,进而直接投入使用。该方法将图形学与深度学习方法相结合,有效提升了中文矢量字库的生成结果。
附图说明
图1是本发明提供的基于拼接生成新字形的示意图。
图2是本发明提供的基于深度学习和部件拼接的中文字库生成方法的流程框图。
图3是本发明提供的汉字字形笔画分类结果示意图。
图4是本发明提供的汉字字形部件分类过程示意图。
图5是本发明提供的汉字字形部件分类结果示意图。
图6是本发明提供的确定输入字符集的方法示意图。
图7是本发明提供的汉字字形拆分指导系统示意图。
图8是本发明提供的汉字字形部件拆分结果和数据集示意图。
图9是本发明提供的汉字字形自动拆分示意图。
图10是本发明提供的改进前后的汉字字形自动拆分结果对比图。
图11是本发明提供的汉字字形件架结构预测模型的结构示意图。
图12是本发明提供的汉字字符五笔编码示意图。
图13是本发明提供的具有内容意识的候选框示意图。
图14是本发明实施字库生成时的结果和与其他方法比较的示意图。
图15是本发明的后处理示意图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于深度学习和部件拼接的中文字库生成方法,该方法可根据设计师设计的少量字形,自动生成一套完整且可以被实际使用的高质量中文矢量字库。简单来说,我们考虑到虽然不同字体的风格各异,但对于同一个汉字字形而言,其结构和组成都是类似的,而且同一个字体的不同字形中也存在大量可以被重复利用的部件,因此一个十分自然的想法就是对汉字字形的部件进行复用,再根据汉字字形固有的布局将这些部件重组,从而得到新的字形。如图1所示,我们对输入字符集中的汉字字形进行部件拆分后,得到组成“涤”字所需的三个部件,其次我们使用深度学习框架来预测出目标字形中“涤”字的件架结构,之后我们将拆分好的部件按照预测得到的结构进行摆放,摆放过程中主要包括对部件进行平移和缩放两种变换。最后我们就能够得到一个拼接好的目标字形的“涤”字。由于部件全部是矢量字形,所以“涤”字最终也是矢量形式,因此可以直接被计算机等系统使用,并且不存在缩放失真的情况。
如图2所示,是本方法的流程图,首先本方法在生成新字库时需要线下和线上两个阶段。线下阶段如图2左边所示,又称预处理阶段,该阶段只需要执行一次,主要目的是准备线上阶段使用到的数据。线下阶段包含四个子步骤,依次为:笔画标记、部件提取、部件分类和确定输入字符集,四个子步骤得到的数据将作为后续线上阶段的训练和参考数据。线上阶段同样可以分为大致四个子步骤,依次为:数据采集、部件提取、件架结构预测以及字形生成,最终得到的结果就是可以直接被使用的矢量字库。
具体实施包括如下步骤:
A.线下处理步骤首先需要对方正楷体交叉字库进行笔画类别标记:对全部GB6763字符集(共6763个常用汉字字符)中的每个汉字字形的笔画进行分类,得到一套笔画类别。实现方法为:
A1.开发一套可视化标记系统,用于对汉字字形笔画进行类别标记。系统可以解析交叉字库文件,并对每个笔画进行类别标记;
A2.对方正楷体交叉字库的GB6763字形进行笔画类别标记,标记时按照该笔画的书写习惯和形状进行分类,如图3所示。这一步中,共得到包括点、横、竖、撇、捺、横折等32个笔画类别;
B.对方正楷体交叉字库进行部件提取和部件分类:按照重叠少、可拆分性好的原则,将标记好的笔画进一步人工组合成不同的部件。实现方法为:
B1.如图4所示,首先我们依据汉字字形传统的书写习惯,将每个字形中的各个笔画组合成为可拆分性好的部件结构,如汉字字形中已有的偏旁部首一般会成为最终的一个部件类。
B2.对每个手动组合好的部件进行特征提取,这里我们使用了具有缩放不变性的SIFT特征,之后我们对每个部件的特征进行K-means聚类,接着我们对聚类结果进行人工校验和微调,最终得到了共计1086个部件类别,图5展示了其中的部分结果,其中第1行展示了类别编号1-6的部件形状,第2行每两列协同展示了中文部件类别在外形上十分相近的特点,即类间差异小,第3行和第4行的对比展示了同一种中文部件类别在不同字体上形状也各不相同的特点,即类内差异小。以上两种特性都对后期基于图像处理的方法的性能提出了挑战,我们必须加入额外的信息才能让模型能够比较好地对不同的部件类进行区分。
C.输入字符集的确定:有了上述的部件类别,我们需要确定最终的输入字符集,输入字符集内的汉字字符对应的字形需要设计师自己来进行设计,因此在确定时我们遵循三个原则:1)完整字符集的所有部件类别必须全部在输入字符集中出现;2)尽量选择部件数量和类别数小于2的字形,因为如果一个汉字字形中包含太多的部件,则部件之间会因为存在较强的制约关系而产生书写上的变化,因此这种并不是部件最自然的形状;3)输入字符集中字符的数量要尽量小,以达到减轻字体设计者工作量的目的。下面以图6为例,详细介绍本发明中确定输入字符集的方法。图中“hx”表示汉字字形,它由对应的部件类别“ABC…”组成,如汉字字形“h2”由两个部件组成,它们的类别为“A”和“B”,之后我们不断执行下面的几个步骤,来最终确定出输入字符集:
C1.将所有汉字字形“hx”按照部件数量从小到大排序,结果如图6(a)所示,我们将这一步骤的结果称为“C1表”;
C2.将所有部件按照其在汉字字形中出现的次数从小到大进行排序,如果一个部件出现在了多个汉字字形中,则按照C1中的顺序,对这些汉字字形进行排序。结果如图6(b)所示,我们将这一步骤的结果称为“C2表”;
C3.设C2表中排名第一的部件对应的第一个汉字字形为“h”,则将“h”对应的汉字字符“c”纳入输入字符集S,如图6(b)所示,对于部件“E”,我们将汉字字形“h5”对应的汉字字符纳入输入字符集;
C4.删去C2表中“h5”包含的部件对应的行,如图6(b)所示,因为“h5”除了部件“E”之外还包含部件“D”,因此我们在C2表中将部件D对应的行同时删去;
C5.不断重复C3-C4步,直到所有部件类别全部被覆盖,即C2表为空。图6的示例中,我们依次选中的汉字字形为{h5,h3,h2},它们对应的汉字字符假设为{c5,c3,c2}会被依次纳入输入字符集S。最终的S就是确定好的输入字符集,我们使用这种方法得到了1086个部件类别对应的输入字符集,共计775个汉字字符。
D.预训练数据集制作:为了使后期线上预测模型具有良好的泛化能力,我们首先对60款字库进行了部件拆分处理,将得到的数据制作成数据集,用作后期模型预训练的输入。具体制作过程如下:
D1.对60款字体的笔画骨架进行标注工作,标注的结果就是一系列的点,每个点有其对应的坐标(x,y),将属于同一笔画的点相互连接就能得到该笔画的骨架信息;
D2.将渲染后字形的黑色像素点分配到最近的骨架点上,完成图像级别的笔画拆分;
D3.按照B中定义的部件规则,将笔画组合成为部件;
D4.将矢量字形与图像字形对齐,将曲线分配到距离最近的部件像素上,将属于同一部件的曲线进行闭合,完成矢量字形的部件拆分;
D5.对拆分出错的结果进行校正,如图7所示,我们开发了一套可视化的部件拆分工具,可以通过圈定或者分割的方式,轻松修复部件自动拆分过程中的错误。图7(a)是原始的分割结果,(b)是校正的两种方式,(c)是校正后的分割结果。
D6.最终将拆分好的矢量部件制作成数据集,供后期使用,图8展示了“畅”字在不同字体上的分割结果。需要注意的是,本步骤需要较多的人工工作量,以确保数据集本身的正确性,但本步骤在配置生成环境时仅需执行一次,一旦数据集制作完成就可以永久为后期的拼接生成任务提供支持。
E.线上数据采集:本步骤主要是由字体设计师来对希望生产的字体字形进行设计。设计师只需要设计输入字符集中包含的775个汉字字符对应的字形即可。
F.输入字符集字形部件拆分:本步骤主要目的是产生后期拼接过程中需要使用的基础部件,因此我们需要对设计师设计的775个汉字字形进行部件的拆分和提取。拆分方法同样先在图像级别上进行,最后再转换为矢量字形的拆分。拆分过程如下:
F1.我们从D步骤中选择了5款具有代表性的字体作为线上拆分的参考字形,包括标准楷体、方正黑隶简体、方正兰亭黑体、方正书宋体和方正童趣体。对于待拆分的目标字形,我们首先挑选GB6763字符集中前300个汉字字形来进行匹配度计算。具体的,我们对每个汉字字形都计算一个跟标准模板字形的重叠度(Intersection over Union,IOU),并取平均值作为目标字形跟这款标准模板字形的匹配度。最后我们选择匹配度最高的模板作为后期拆分的参考字形。如图9所示,左上角两行上面的字体是待拆分字体,而下面的字体是参考模板中的标准楷体,它的部件已经在D步骤中完成了提取;
F2.我们使用细化算法将两个字形图片细化为线性的骨架形式;
F3.使用相干点漂移(Coherent Point Drift,CPD)算法,对F2细化后得到的点集进行匹配,这样就能得到目标字形拆分好的骨架;
F4.使用与D2相同的方法,对目标汉字字形在图像级别上进行拆分,如图9所示,拆分结果可以是部件形式(第2行),也可以是笔画形式(第3-4行),这里我们只需要其部件形式的拆分结果即可。
F5.使用与D4相同的方法,对目标字形进行矢量级别拆分,拆分的结果就是矢量化的部件,并且完全覆盖1086个类别。这些部件将作为后期我们拼字所使用的基础元素。
F6.值得注意的是,我们在F5中对部件矢量轮廓曲线进行拆分时还引入了一系列先验知识,缓解了部件重合导致的分割不准的问题,使其在部件拆分场景下表现更加优异。首先我们对每种笔画都定义了一些关键点,包括笔画的起止点和角点,之后距离关键点较近的部分我们称为笔画的头部,两个关键点之间的部分称为笔画的中部。我们的两个启发式原则包括:1)分割后属于同一部件的轮廓线,要通过有效的范围进行连接,这里有效的范围指字形中黑色的像素点;2)笔画中部的轮廓线需要跟笔画骨架近似地平行。如图10所示,其中子图(a)表示不加启发式规则前的分割结果,在笔画相连处会出现分割不准的现象。而子图(b)则展示了加入启发式规则后的分割结果,在笔画连接处能够得到较好的分割结果。
G.件架结构预测:这一步中,我们使用结构预测模型,对不在输入字符集中的字形的件架结构做预测。我们使用深度学习中较为流行的目标检测框架Faster R-CNN来作为我们件架结构预测模型的基础。主要原因是我们观察到,一个字形的件架结构的表示本质上就是目标检测模型的结果,即每个部件各自的包围框,因此我们对目标检测框架进行了一部分改进和适配,使其在字形检测上表现更加突出。预测过程分为模型构建、预训练和线上训练几个方面。下面具体介绍:
G1.本发明提出的件架结构预测模型如图11所示,网络结构大致可以分为三个部分:特征提取器、生成器和检测器。对于特征提取器,我们使用ResNet-101的网络结构,对640*640*3的字形图片进行卷积和池化,最后生成尺寸为40*40*1024的特征图。之后我们使用一个3*3的卷积操作,再连接缩小版的U-Net,实现对特征图的变换。这一步我们的目的是希望能够学习到两个特征图之间的对应关系。最后我们的检测器使用Faster R-CNN的后续结构,来输出对应的预测包围框。
G2.模型训练时,传入的是同一个汉字字符在两种字体上的不同字形图片,其中一种字体我们定义为参考字体,另一种字体定义为目标字体。对于所有的训练实验,参考字体均为仿宋体,目标字形则可以根据实验不同而变化。我们的目标就是希望特征提取器能够有效地提取字形图片的特征,生成器能够对参考字体的特征进行变化,而检测器则能够根据特征图对字形图片中不同的部件进行定位。具体的,我们定义参考字体字形图片为Is、目标字体图片为It,经过特征提取网络后,我们可以得到两个特征图Fs和Ft,则对于生成器来说,我们的目标是让Fs和Ft尽量接近,因此我们使用如下公式来计算两个特征图的差异,作为生成器的损失函数:
其中w和h分别为特征图的宽高。对于检测器而言,我们使用与Faster R-CNN相同的损失函数来衡量检测结果的损失。最终我们的损失函数可以表示为:
Loss=λ1Lossg+λ2Lossd
其中λ1和λ2分别表示权重,Lossd表示检测器的损失函数。
G3.正如在B2中提到的,汉字字形部件具有类内差异大、类间差异小的特点,因此单纯从图像特征上来对部件进行分类和检测对网络而言几乎很难完成地很好。因此我们还提出了两种专门针对汉字字形部件定位的改进方案,即1)五笔编码和2)具有内容意识的候选框。对于五笔编码而言,我们观察到五笔输入法中,每个汉字字符都能被表示成至多4个不同的英文字母,因此如图12所示,对于汉字字符“阿”,其五笔编码为“bskg”,则我们将“b”变换为二进制的26位独热编码,形式为“0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0”,这样每个汉字字符的五笔编码就可以用104位的近似独热编码来表示,我们将其加入到特征提取器Resnet第二层网络的输出之后,并用一个3*3的卷积来使得特征维数降到原来的大小,实现特征的融合。值得注意的是,使用五笔编码的一个很重要的原因是由于其本身与字形的部件组成关系很密切,如图12所示,汉字字符“啊”、“阿”和“唉”对应的字形在结构上拥有明显的相似性,而这种相似性体现在其对应的五笔编码上就是它们的编码拥有相似的字符。具有内容意识的候选框的设计思想是希望通过汉字字符的先验知识来让网络预先估计某个字形部件所在的位置,因为即使是不同的字体,相同汉字字符对应的字形的件架结构也是十分相似的。因此在网络中,如图11所示,我们去掉了Faster R-CNN的RPN网络,换用已有字形的目标包围框来作为网络回归的候选框。如图13所示,对每个汉字字形而言,我们使用已有字形的目标包围框作为候选框比使用RPN产生的候选框更加具有针对性,因此也更容易得到好的结果。
G4.对于模型的预训练过程,我们使用步骤D中处理好的60套字库数据。首先我们去掉网络的生成器,将特征提取器输出的特征图直接送入检测器,来单独训练检测器。之后我们将特征提取器的参数固定,去掉检测器,单独训练生成器。最终我们使用G2的训练过程完整地训练所有的网络结构。
G5.对于模型的线上训练和推理过程,我们首先使用字体设计师设计好的输入字符集共775个汉字字符对应的字形作为目标字形,来训练检测器。之后我们训练整个网络,以期学习仿宋体到目标字体的变换,同时保证检测器依然能够维持对目标字形部件的件架结构的检测。之后在测试时,我们将输入字符集之外的汉字字符对应的字形送入网络中,经过变化就能够得到目标字形的特征图,之后再送入检测器,就能实现对目标字形件架结构的预测。
G6.值得注意的是,对于输出结果,我们同样放弃了传统检测中的后处理步骤,即非极大值抑制(NMS,Non-Maximum Suppression),转而使用我们自己设计的针对部件检测的后处理步骤。具体的,我们将模型的检测结果定义为D,则D中包含多个d,每个d可以表示为(p,b,c),其中p表示网络检测该预测包围框的置信度,介于0到1之间,b∈R4,表示一个预测包围框的左上和右下坐标,c∈C,表示每个网络输出的每个预测包围框的类别,C则表示部件所有可能的类别,共1086类。由于我们已知汉字字符的类别,因此其部件类别也是已知的,比如汉字字符“啊”,在任何字体中的字形都由固定的部件类别组成,我们用z表示这个正确类别的集合,用G表示后处理后的最终结果。对于检测结果D,我们首先剔除所有的预测包围框,之后对所有剩余的预测包围框,我们按照p来进行降序排列,并依次遍历所有的预测包围框,当G中该类别预测包围框数量不足该汉字字形该类别部件对应的预测包围框数量且b与G中所有预测包围框的IOU值小于一个阈值(实验中采用0.8)时,我们将b纳入G中,并继续执行遍历,直到G中的预测包围框满足该汉字字形正确的目标包围框要求时输出最终结果。
H.选择尺寸合适的拆分好的部件,并将其放置在预测包围框中,实现拼字和字体生成。下面具体介绍:
H1.有了步骤F中拆分好的部件和步骤G中预测得到的件架结构,现在我们需要将部件进行缩放后放置在预测包围框中实现最终的拼字结果。对于汉字字形h而言,假设其组成包括A、B、C三个部件,预测包围框分别用bA、bB、bC表示。则首先我们从F步拆分好的所有A类部件中,计算它们与预测包围框在尺寸上的相似程度。我们使用下面的公式作为衡量部件尺寸是否合适的指标:
Score=Ratiow+Ratioh
其中w1、h1表示部件的宽高,w2、h2表示预测包围框bA的宽高。最终我们选择Score最大的部件作为跟bA大小最接近的部件,然后缩放到bA大小后,放置在bA中。对部件B和C执行相同的操作,最终就能够得到汉字字形h对应的拼接好的字形。
I.生成TTF矢量字库。我们对所有矢量部件进行存储,同时对每个汉字字形,我们存储H步中得到的部件索引、部件位置以及部件在水平和竖直方向上的缩放比例,然后存储每个部件的贝塞尔曲线,这样最终生成的TTF文件就能够自动按照索引和缩放规则,渲染得到对应的字形。生成结果和其他方法比较的结果如图14所示,其中前三行是使用深度学习中生成对抗网络生成的图片,第四行是采用文献(Lian Z,Zhao B,Chen X,etal.EasyFont:A Style Learning-Based System to Easily Build Your Large-ScaleHandwriting Fonts[J].ACM Transactions on Graphics(TOG),2018,38(1):6.)中提出的EasyFont生成的结果,第五行是直接使用标准楷体的件架结构拼接生成的字形,第六行是将文献(Yuchen Tian.2017.zi2zi:Master Chinese Calligraphy with ConditionalAdversarial Networks.https://github.com/kaonashi-tyc/zi2zi.)中的“zi2zi”模型的生成结果送入我们的检测器后得到件架结构,再拼接生成的字形,第七行则是使用预测模型预测件架结构后拼接得到的字形,最后一行是真实的待预测字形。可以看到,我们的方法不仅能够保持字体的风格,而且还能够直接得到矢量字形,直接在PC或移动端进行使用。
J.后期修复和微调。由于分割、预测不准确或者部件过多,生成的字库中的某些字形可能会存在部件重叠、部件质量不高等问题,这时对于一款矢量字体来说,用户可以简单的使用任何字体编辑软件进行后期修复和微调,使字库最终达到自己满意的效果。如图15所示,用户可以使用任意一款矢量字库编辑软件如FontCreator对字库进行编辑,包括调整轮廓点、移动和缩放部件等,以达到令人满意的结果。
以上为本发明的具体实施方式。需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (10)
1.一种基于深度学习和部件拼接的中文字形生成方法,对目标字库中的汉字字形进行结构拆分得到用于重组的基础矢量部件;根据目标字库中的汉字字形的布局预测待生成字形的布局,将基础矢量部件拼接生成新的矢量字形;
所述中文字形生成方法包括线下处理过程和线上处理过程;
所述线下处理过程对已有字库的字体进行处理,得到训练数据和参考模板,包括步骤A~D;
所述线上处理过程针对任意包含少量特定汉字字形的目标字库,采用部件拼接的方法生成完整的中文矢量字形,包括步骤E~I;
A.对字库中的汉字字形进行笔画类别标记,得到笔画类别;
B.对字库中的汉字字形进行部件提取,将每个汉字字形标记好的笔画进行组合,得到不同的基础矢量部件;对每个组合好的部件进行特征提取,通过聚类得到部件类别;
C.再根据部件类别,选择相应的汉字字符形成最终输入字符集:
D.对已有字库中的汉字字形进行部件拆分处理,获得用于模型预训练的输入数据集;执行如下操作:
D1.将选出字体中的字形渲染为图片,对图片字形的笔画骨架进行标注,得到一系列笔画骨架点的集合;
D2.将渲染后得到的字形的黑色像素点分配到最近的笔画骨架点上,进行图像级别的笔画拆分;
D3.将笔画组合成为部件;
D4.将矢量字形与图像字形对齐,将曲线分配到距离最近的部件像素上,将属于同一部件的曲线进行闭合,进行矢量字形的部件拆分;
D5.对拆分出错的结果进行校正;
D6.将拆分好的矢量部件制作成数据集,可作为输入用于模型预训练;
E.采集得到目标字库的部分矢量汉字字形,所述字形的字符对应于输入字符集中的字符;
F.对步骤E中得到的汉字字形进行部件拆分和提取,形成可用于拼接的基础部件;所述拆分包括图像级别的拆分和矢量字形的拆分;执行如下操作:
F1.从输入数据集中确定多种字体作为线上拆分的参考汉字字形;
F2.使用细化算法将目标字形图片和参考字形图片细化为线性的骨架形式,得到细化后的点集;
F3.使用相干点漂移CPD算法,对步骤F2细化后得到的点集进行匹配,即得到目标字形拆分好的骨架;
F4.对目标汉字字形在图像级别上进行拆分。
F5.对目标字形进行矢量级别拆分,得到矢量化部件;
G.构建件架结构预测模型,对不在输入字符集中的字符对应的字形的件架结构进行预测;
G1.构建件架结构预测模型;所述件架结构预测模型包括:特征提取器、生成器和检测器;所述特征提取器用于对字形图片进行卷积和池化;所述生成器用于生成特征图并实现对特征图的变换;所述检测器用于输出对应的包围框;
G2.训练件架结构预测模型;执行如下操作:
传入同一个汉字字形的参考字体图片和目标字体图片;通过特征提取器有效提取字形图片的特征;通过生成器对参考字体的特征进行变换;再通过检测器根据特征图对字形图片中不同的部件进行定位;
具体定义参考字体字形图片为Is、目标字体图片为It,经过特征提取网络后,得到两个特征图Fs和Ft;生成器的目标为使得Fs和Ft尽量接近;
设置生成器的损失函数Lossg为:
其中,w和h分别为特征图的宽、高;
件架结构预测模型的损失函数表示为:
Loss=λ1Lossg+λ2Lossd
其中,λ1和λ2分别表示权重,Lossd表示检测器的损失函数;
G3.对件架结构预测模型进行预训练,执行如下操作:
使用步骤D中处理好的字库数据,首先去掉件架结构预测网络模型的生成器,将特征提取器输出的特征图直接送入检测器,由此单独训练检测器;之后将特征提取器的参数固定,去掉检测器,由此单独训练生成器;
G4.对件架结构预测模型进行线上训练,执行如下操作:
使用输入字符集中的汉字字符对应的字形作为目标字形,训练检测器;
训练件架结构预测模型网络,学习参考字体到目标字体的变换,同时使得检测器维持对目标字形部件的件架结构的检测;由此得到训练好的架结构预测模型;
H.利用步骤G训练好的件架结构预测模型,从步骤F得到的拆分好的部件中选择部件,并将其放置在预测包围框中,实现拼字和字体生成;具体执行如下操作:
H1.设定汉字字形h的组成包括部件A、B、C,预测包围框分别表示为bA、bB、bC;首先计算所有部件A与目标包围框在尺寸上的相似程度;使用如下公式计算部件与预测包围框的尺寸相似度指标Score:
Score=Ratiow+Ratioh
其中,w1、h1表示部件的宽、高,w2、h2表示包围框bA的宽、高;
将Score值最大的部件作为跟bA大小最接近的部件,将其缩放到bA大小后,放置在bA中;
对部件B和C执行相同的操作,即得到汉字字形h对应的拼接好的字形;
I.生成矢量曲线描边字库TTF;执行如下操作:
对所有矢量部件进行存储,同时对每个汉字字形,存储步骤H中得到的部件索引、部件位置及部件在水平和竖直方向上的缩放比例;
存储每个部件的贝塞尔曲线,生成TTF文件;
根据TTF文件,自动按照索引和缩放方法,通过渲染得到对应的字形;
通过上述步骤,实现基于深度学习和部件拼接的中文字形生成。
2.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,所述中文字形生成方法还包括后期修复和微调操作。
3.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,所述中文字形生成方法根据设计好的少量字形,自动生成高质量中文矢量字形,进一步生成得到中文矢量字库。
4.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤A所述字库具体为方正楷体交叉字库。
5.如权利要求4所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤A对方正楷体交叉字库中全部GB6763字符集的汉字字形进行笔画类别标记,具体通过解析字库文件,对字库中汉字字形的每个笔画进行可视化标记,标记笔画类别的数量为32个。
6.如权利要求4所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤B对字库中的字形进行部件提取,具体执行如下操作:
B1.首先依据汉字字形书写特点,将方正楷体交叉字库中每个字形中的各个笔画组合成为可拆分性好的部件结构;将汉字字形中已有的偏旁部首作为一个部件类;
B2.对每个组合好的部件进行特征提取,通过聚类得到部件类别;具体使用具有缩放不变性的尺度不变特征变换SIFT特征,对每个部件的特征进行K均值聚类,再对聚类结果进行校验和微调,得到部件类别。
7.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤C所述输入字符集中包括:
1)字符集的所有字符对应字形包含的所有部件类别全部在输入字符集的汉字字符对应的字形中;
2)部件数和类别数均小于2的汉字字形;
3)具体执行如下操作,使得输入字符集中字符的数量尽量小:
C1.将所有汉字字形按照部件数量从小到大排序,得到结果为C1表;
C2.将所有部件按照其在汉字字形中出现的次数从小到大进行排序,如果一个部件出现在了多个汉字字形中,则按照C1表中的顺序,对汉字字形进行排序;得到的结果为C2表;
C3.设C2表中排名第一的部件对应的第一个汉字字形为h,h对应的汉字字符设为c,则将c纳入输入字符集S;
C4.删去C2表中“h”包含的部件对应的行;
C5.不断重复操作C3-C4,直到所有部件类别全部被覆盖,即C2表为空;
最终的S即为得到的输入字符集。
8.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤F1从输入数据集中确定多种字体作为线上拆分的参考汉字字形,方法为:
对字符集中前N个汉字字符对应的字形进行匹配度计算,得到每个汉字字形与标准模板汉字字形的重叠度,取平均值作为目标汉字字形与标准模板汉字字形的匹配度;匹配度最高的模板作为用于拆分的参考汉字字形。
9.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,步骤G2还可采用汉字字形部件定位改进方法,对汉字字形部件进行定位;包括:五笔编码和具有内容意识的候选框;
对于五笔编码,将每个字母变换为二进制的26位独热编码,加入到特征提取器Resnet第二层网络的输出之后,并用一个3*3的卷积来使得特征维数降到原来的大小,实现特征的融合;
对于具有内容意识的候选框,去掉Faster R-CNN的RPN网络,用已有字形的包围框作为网络回归的候选框。
10.如权利要求1所述基于深度学习和部件拼接的中文字形生成方法,其特征是,在步骤F5中,对部件矢量轮廓曲线进行拆分时,包括如下过程:
引入先验知识,对每种笔画定义包括笔画的起止点和角点的关键点,距离关键点较近的部分为笔画的头部,两个关键点之间的部分为笔画的中部;
将分割后属于同一部件的轮廓线,通过有效范围进行连接;所述有效范围指字形中黑色的像素点;
使得笔画中部的轮廓线跟笔画骨架近似地平行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911069573.9A CN112784531B (zh) | 2019-11-05 | 2019-11-05 | 一种基于深度学习和部件拼接的中文字形及字库生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911069573.9A CN112784531B (zh) | 2019-11-05 | 2019-11-05 | 一种基于深度学习和部件拼接的中文字形及字库生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112784531A true CN112784531A (zh) | 2021-05-11 |
CN112784531B CN112784531B (zh) | 2024-02-27 |
Family
ID=75747371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911069573.9A Active CN112784531B (zh) | 2019-11-05 | 2019-11-05 | 一种基于深度学习和部件拼接的中文字形及字库生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112784531B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312444A (zh) * | 2021-06-22 | 2021-08-27 | 中国农业银行股份有限公司 | 字库构建方法、装置、电子设备及存储介质 |
CN114861595A (zh) * | 2022-03-22 | 2022-08-05 | 电子科技大学 | 一种基于矢量线条变换的个性字体生成方法 |
CN115984875A (zh) * | 2023-03-21 | 2023-04-18 | 南京信息工程大学 | 一种硬笔楷书临摹作品的笔画相似性评价方法及系统 |
EP4241181A4 (en) * | 2022-01-28 | 2024-01-31 | John Chu | DATABASE GENERATION METHOD AND APPARATUS, ELECTRONIC DEVICE AND MEDIUM |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2480653A1 (en) * | 2002-03-29 | 2003-10-09 | Enmedia System Corp. | Revivifivation display method for outline fonts based on stroke centerlines technology |
CN107644006A (zh) * | 2017-09-29 | 2018-01-30 | 北京大学 | 一种基于深度神经网络的手写体中文字库自动生成方法 |
US20180267956A1 (en) * | 2017-03-17 | 2018-09-20 | Adobe Systems Incorporated | Identification of reading order text segments with a probabilistic language model |
CN109992783A (zh) * | 2019-04-03 | 2019-07-09 | 同济大学 | 中文词向量建模方法 |
-
2019
- 2019-11-05 CN CN201911069573.9A patent/CN112784531B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2480653A1 (en) * | 2002-03-29 | 2003-10-09 | Enmedia System Corp. | Revivifivation display method for outline fonts based on stroke centerlines technology |
US20180267956A1 (en) * | 2017-03-17 | 2018-09-20 | Adobe Systems Incorporated | Identification of reading order text segments with a probabilistic language model |
CN107644006A (zh) * | 2017-09-29 | 2018-01-30 | 北京大学 | 一种基于深度神经网络的手写体中文字库自动生成方法 |
CN109992783A (zh) * | 2019-04-03 | 2019-07-09 | 同济大学 | 中文词向量建模方法 |
Non-Patent Citations (2)
Title |
---|
刘成东;连宙辉;唐英敏;肖建国;: "基于部件拼接的高质量中文字库自动生成系统", 北京大学学报(自然科学版), no. 01 * |
王雅洁;: "浅析中国汉字在装置艺术中的运用", 企业导报, no. 07 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312444A (zh) * | 2021-06-22 | 2021-08-27 | 中国农业银行股份有限公司 | 字库构建方法、装置、电子设备及存储介质 |
CN113312444B (zh) * | 2021-06-22 | 2023-11-24 | 中国农业银行股份有限公司 | 字库构建方法、装置、电子设备及存储介质 |
EP4241181A4 (en) * | 2022-01-28 | 2024-01-31 | John Chu | DATABASE GENERATION METHOD AND APPARATUS, ELECTRONIC DEVICE AND MEDIUM |
CN114861595A (zh) * | 2022-03-22 | 2022-08-05 | 电子科技大学 | 一种基于矢量线条变换的个性字体生成方法 |
CN114861595B (zh) * | 2022-03-22 | 2023-04-07 | 电子科技大学 | 一种基于矢量线条变换的个性字体生成方法 |
CN115984875A (zh) * | 2023-03-21 | 2023-04-18 | 南京信息工程大学 | 一种硬笔楷书临摹作品的笔画相似性评价方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112784531B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jiang et al. | Scfont: Structure-guided chinese font generation via deep stacked networks | |
Wick et al. | Fully convolutional neural networks for page segmentation of historical document images | |
US10489682B1 (en) | Optical character recognition employing deep learning with machine generated training data | |
CN109635883B (zh) | 基于深度堆叠网络的结构信息指导的中文字库生成方法 | |
CN112784531A (zh) | 一种基于深度学习和部件拼接的中文字形及字库生成方法 | |
CN108416377B (zh) | 柱状图中的信息提取方法及装置 | |
CN106384094B (zh) | 一种基于书写风格建模的中文字库自动生成方法 | |
JP3822277B2 (ja) | 文字テンプレートセット学習マシン動作方法 | |
CN111723585A (zh) | 一种风格可控的图像文本实时翻译与转换方法 | |
CN108170649B (zh) | 一种基于dcgan深度网络的汉字字库生成方法及装置 | |
CN110738207A (zh) | 一种融合文字图像中文字区域边缘信息的文字检测方法 | |
KR20200023266A (ko) | 심층 신경망 및 신경망 애플리케이션을 위한 데이터 스트림에 태그 지정 및 라벨링하기 위한 온라인의 점진적 실시간 학습 | |
US6661417B1 (en) | System and method for converting an outline font into a glyph-based font | |
CN115943435A (zh) | 基于文本的图像生成方法和设备 | |
Forte et al. | Getting to 99% accuracy in interactive segmentation | |
KR20200004113A (ko) | 쇼핑몰 배너디자인 생성 방법, 장치 및 시스템 | |
CN111563563B (zh) | 一种手写体识别的联合数据的增强方法 | |
CN111985184A (zh) | 基于ai视觉下的书写字体临摹辅助方法、系统、装置 | |
CN113158977B (zh) | 改进FANnet生成网络的图像字符编辑方法 | |
CN113033721B (zh) | 题目批改方法及计算机存储介质 | |
CN114119949A (zh) | 一种增强文本合成图像的生成方法和系统 | |
CN110097615B (zh) | 一种联合风格化和去风格化的艺术字编辑方法和系统 | |
CN114861595B (zh) | 一种基于矢量线条变换的个性字体生成方法 | |
KR20230029206A (ko) | 인공지능 문자인식을 위한 학습 데이터 구축 장치 | |
CN112329389B (zh) | 一种基于语义分割与禁忌搜索的汉字笔画自动提取方法 |
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 | ||
GR01 | Patent grant |