[论文阅读] Calligraphy Font Generation via Explicitly Modeling Location-Aware Glyph Component Deformations
Pre
title: Calligraphy Font Generation via Explicitly Modeling Location-Aware Glyph Component Deformations
source: TMM 2023
paper: https://ieeexplore.ieee.org/document/10356848
code: None
关键词: generative adversarial networks, image processing, image synthesis, image transformation, offline character
阅读理由: CAM模块不错
[注: 本文涉及AI辅助]
Motivation
- 之前的方法随机选取与源字符相同组件的参考字符进行训练,忽略了同一组件在不同位置可能具有不同的特征分布。
图3 同一组件在不同汉字中的外形不一致(profile inconsistency)的示例。
Idea
两个特定位置组件之间的形变模式具有相似性(例如 贝:贾->赐 <=> 月:宵->脆)。本文会挑选合适的参考字形对为目标字符的生成提供风格形变上的指导,从而将候选组件拉伸至目标形式。
图1 提出的方法的示例。首先通过组件搜索获得候选组件。然后,对于每个候选组件,通过提出的一种感知形变的搜索策略获取一个形变组件对。接下来,从这些形变组件对中学习期望的形变模式,并将其应用到对应的候选组件上。最后,将所有形变后的组件整合生成目标字符。
Background
- Image-to-Image Translation
- Font Generation
Method(Model)
Overview
图2 流水线总览。给定一个源字符图像\(x\),通过形变感知搜索(DAS)从\(k\)个参考字形集合\(\{I_{c}^{i}\}^k_{i=1}\)中提取出\(k\)个候选组件\({\{{U}_c^{i}\} }_{i = 1}^{k}\)以及与形变组件对\({\{ {U}_d^{i}\} }_{i = 1}^{k}\)相应的k个形变参考对\({\{ {I}_{d}^{i}\} }_{i = 1}^{k}\)。接着,位置相关形变(LDD)模块从每个候选组件中提取特征表示\(\hat{f}_c^{i}\),并学习对应的位置感知形变参数。这些形变参数应用于\(\hat{f}_c^{i}\)以产生形变的特征表示\(\hat{f}_{cm}^{i}\)。所有经过形变的组件特征被集成起来,通过一个解码器生成目标字形\(\hat{y}\)。
Deformation-Aware Searching
图4 变形感知搜索(DAS)策略的示例。具体而言,对于给定的源字形以及参考集,首先搜索与源字形具有相同构成元素的参考字形。然后针对每个候选组件,从搜索的变形参考对中计算出所需形变。
算法1 变形感知搜索(DAS)方案的步骤。
图5 字符分解及位置编码\(E\left( {c,u}\right)\),针对分解字符c中的各个组件u。
首先,根据一个常用的拆分表逐级分解参考集中的每个字符。通过这种方式,每个字符组件都可以被编码为在拆分树中的路径(即位置编码)。
DAS的核心基于以下观察:在两个特定位置上任意组成的部件的变形模式相似。DAS主要包含三个步骤,如算法1所示:
步骤1:首先将参考集\({\mathcal{C}}_{\gamma }\)中的每个字符\(c\)分解为组件集\({\Omega }_{c}\) 。利用图5中显示的组件树,计算每个\({\Omega }_{c}\)中组件\(u\)的位置编码\(E(c,u)\)。然后将记录\((c,E(c,u))\)存在字典\(\mathcal{M}[u]\)中,其中\(\mathcal{M}[u]\)代表与组件\(u\)关联的记录列表。
步骤2:接下来,我们创建一个反向索引表\(\mathcal{I}\)来跟踪所有变形模式。对于组件集\(\Omega\)中的每个组件\(u\),我们遍历\(\mathcal{M}[u]\)中记录对\(\left[\left(s,E(s,u)\right),\left(t,E(t,u)\right)\right]\)并将记录\((s,t,u)\)添加到\(\mathcal{I}\left[E(s,u) \Rightarrow E(t,u)\right]\)。在此处,\(\mathcal{I}[S \Rightarrow T]\)存储了从\(S\)到\(T\)的不同组件中的变形对的元组。
步骤3:处理测试/训练集中的每个字符。将每个字符分解为一个组件集合\({\Omega }_{c}\)并随机选择\(k\)个组件来形成子集\({\hat{\Omega }}_{c}\) 。对于\({\hat{\Omega }}_{c}\)中的每个组件\(u\),从包含组件\(u\)的\(\mathcal{M}[u]\)记录中选择一个字符\(d\)。将符号\(d\)和组件\(u\)分别添加到集合\({I}_{c}\)和\({U}_{c}\)中,并且,随机从\(\mathcal{I}\left[E(d,u) \Rightarrow E(c,u)\right]\)中选择一条记录\((s,t,m)\)。
好麻烦,很抗拒去理解。反正就搜索了同一组件的不同字符
Location-Dependent Deformation
如图2所示,首先将参考字形图像、变形参考对及其对应成分进行排序和分组(红蓝那两坨),作为输入集合提供给LDD模块。
对于LDD的第i个输入集,首先从参考字形图像及其对应的候选组件中提取组件感知特征。具体而言,利用参考编码器从参考字形图像中获取高层视觉特征\({f}_{c}^{i}\)。同时,引入类激活映射(CAM)模块来获得对参考字形图像及其对应候选组件的关注图\({\alpha }_{c}^{i}\)。然后,通过将\({f}_{c}^{i}\)与\({\alpha }_{c}^{i}\)相乘,获得了更关注于候选组件的组件感知视觉特征\(\hat{f}_{c}^{i}\)。
类似地,从变形参考对以及其对应的变形组件对中获取基于注意力的特征\(\left( \hat{f}_{d,s}^{i}, \hat{f}_{d,t}^{i}\right)\) 。然后学习变形组件对之间的变形作为转换矩阵,该矩阵表示为:
其中,\({T}{\theta }\) 表示用于估计变换矩阵 \({A}{i}\) 的神经网络,该矩阵在 \(\hat{f}_{d,s}^{i}\) 和 \(\hat{f}_{d,t}^{i}\) 之间进行转换。
最终,通过使用变换矩阵 \({A}{i}\) 对基于注意力的组件意识特征 \(\hat{f}_{c}^{i}\) 进行扭曲,可以生成变形后的组件意识特征 \(\hat{f}_{cm}^{i}\):
其中,\({wp}\)代表一种扭曲过程\(\hat{f}_{c}^{i}\)。 对于LDD所有输入集合中的每个组件,聚合\({\{\hat{f}_{cm}^{i}\} }_{i = 1}^{k}\)来获得整体性的组件感知风格特征,这些特征被表示为:
其中 \(k\) 是候选组件的数量,\(\circ\) 表示连接操作符,而 \({F}_{\theta}\) 代表一系列卷积和激活运算。
由于一个组件可以映射至多个字符,采用内容编码器来捕捉源字形的复杂全局结构信息\({f}_{x}\)。然后,整体组件感知风格特征 \({f}_{s}\) 与内容特征 \({f}_{x}\) 被串联构成目标风格图。通过这种方式,源字形的语义信息得到良好保持,同时缓解了不同字符的目标字形和参考字形之间候选组件的局部差异所引起的问题。最终,将获取的目标风格图输入解码器以生成目标字形。
Loss Functions
Component Profile-consistency Loss: 为了明确学习LDD中的变换矩阵,我们设计了一种基于组件轮廓一致性的损失函数,以在训练阶段提供监督。我们的目标是扭曲从参考字形图像中提取的候选组件,使其符合目标字形图像中的期望轮廓。与LDD中的特征提取类似,从Ground Truth字形图像获取权威的、基于注意力的、组件感知特征。接着,我们使用L1距离来约束变形后的组件感知特征与它的差异,如下公式所示:
其中 \(\psi(y,i)\) 代表真值 \(y\) 相对于组件 \(U_c^i\) 的组件感知特征。而 \(\psi(\hat{y},i)\) 则表示相应的变形组件感知特征,即 \(\hat{f}_{cm}^i\)。\({Y}_g\) 和 \({Y}_d\) 分别代表生成的字形图像集合与真值字形图像集合。其中 \(y\) 指代真值字形图像,而 \(\hat{y}\) 则代表对应的生成字形。值得注意的是,无论是 \(y\) 还是 \(\hat{y}\),它们都具有相同的字符和字体样式。
约束生成用的感知特征与gt提取的感知特征一致
Adversarial Loss: 采用了多头条件判别器来判断风格标签\(s\) 与字符标签\(c\),使用hinge GAN损失,其表达式如下:
用判别器判断生成字形的风格和语义
Reconstruction Loss and Perceptual Loss: 重建损失要求生成的字形图像在像素级别上重构真值字形图像,而感知损失则鼓励生成自然且具有良好感官效果的结果。
采用预先训练的VGG-16网络作为感知损失函数\({\mathcal{L}}_{\text{perc }}\)中的特征提取器\(\phi(\cdot)\)。
OverallObjective Loss: 定义了总的目标函数如下:
其中\({\lambda }_{\text{rec }},{\lambda }_{\text{perc }}\)和\({\lambda }_{\text{consist }}\)为超参数。在所有实验中设置\({\lambda }_{\text{rec }} = 1,{\lambda }_{\text{perc }} = {0.1}\)和\({\lambda }_{\text{consist }} = {0.1}\).
Experiment
Settings
图6 预训练CAM模块架构。首先使用图像级组件标签训练一个分类器。然后,针对任意输入字形及其对应的组件标签,可以精确地获取到相应的注意力图。GAP表示全局平均池化操作。
为确保训练过程的高效性和易收敛性,设计了一个多类别的分类器来识别特定字形图像中的所有组成组件。如图6所示,该分类器通过基于图像层面的组件标签进行训练。
图7 不同字体下随机复杂汉字的CAM图可视化
表1 组件分类器、内容编码器、参考编码器、解码器以及判别器的架构。AdaAvgPool表示自适应平均池化操作。FC指全连接层。\(N_{comp}\) 表示数据集中的组件数量
在图7中,展示了各种字体下随机复杂汉字的CAM结果。可以观察到,注意力图有效突出了汉字特定组件对应的主要区域。预训练的分类器及整体网络只需一次训练。这些子模块的详细信息在表1中进行了说明。
为了简化训练流程,形变感知搜索(DAS)方案对每个目标字符采用三个参考字形和三个相应的变形组件对。每种字体的生成大约需要两分钟,仅当参考字符集发生变化时才需重新执行此过程。
模型使用PyTorch实现,用2块NVIDIA RTX 3090Ti GPU进行训练。采用Adam优化器,初始学习率为\(1\mathrm{e} - 4\)。整个训练过程迭代200,000次,批量大小为128,耗时约两天。推理阶段,DAS在4000个字符及100个参考字符设置下大约需要一分钟,再花一分钟即可生成包含约4000个常用字的新字体。
Dataset
385种字体和3755个常用中文字符,所有图像均为128×128像素。参考字符集合由100个字符组成,所有比较方法所共享。
其中347种字体作为训练集(即Seen Fonts),每个字体含有3355个字符;剩余的38种字体则被用作测试集。采用三种不同的设置来测试所有方法:
- SFUC: 所见字体不可识别字符(SFUC)指的是训练集中300个未识别的字符。
- UFSC: 未见字体已识别字符(UFSC)指的是测试集中3355个已识别字符。
- UFUC: 未见字体未识别字符(UFUC)指的是测试集中300个未识别字符。
100个参考字符集不参与训练?
虽然对于同一字符的不同字体,DAS的结果可能因随机选择而有所差异,但它们都被包含在同一个参考集中。
Results
表2 不同方法的训练时间与推理时间对比
为了公平比较,选择方正楷体作为标准字体,并在训练数据集上重新训练所有模型。所有的方法都在NVIDIA RTX 3090 GPU上进行训练和测试,具体的训练次数和推理时间在表2中呈现。
Quantitative Comparison
表3 SFUC、UFSC和UFUC数据集在内容自适应准确度(Acc(C))与风格感知准确度(Acc(S))方面的定性比较。\(\downarrow\)表示越低越好,而\(\uparrow\)表示越高越好。
Qualitative Comparison
图8 SFUC、UFSC和UFUC数据集上不同方法生成的结果对比。每个数据集展示了五种不同字体的生成字形,并用红色方框标出那些显示出明显局限性的字形。蓝色方框则表明方法能够恢复精细的局部风格。
如图8所示,我们展示了几种不同方法在SFUC、UFSC及UFUC数据集上的视觉效果对比。虽然MX-Font能够恢复如笔画粗细等粗糙特征,但在SFUC数据集中经常生成模糊不清的字符和背景(图8)。DG-Font产生的字符带有特征性痕迹(characteristic artifacts),且在某些情况下无法准确复原常见组件的微小细节。CG-GAN在针对特定字体时可能无法提取出参考字符的风格,尤其是在UFUC数据集上表现得尤为明显。LF-Font在某些情况下会导致笔画模糊和丢失,这可能是由于参考字符的学习表征不够充分所致。FsFont也出现了显著的视觉质量下降,如部分组件形变。由于参考数据集是随机选取来模拟实际应用场景的,获取与目标字符具有相同位置和轮廓的组件参考变得困难,从而导致了性能的降低。图中的蓝色框高亮显示了本文方法如何能恢复精细的局部风格。
Visualization of LDD Module
图9 位置相关形变(LDD)模块的可视化展示。参考字形上的注意力图及对应的变形参照对。候选组件的变形轮廓与其目标位置中的对应部分相一致。
怎么感觉像手动PS得来的
User Study
图10 SFUC、UFSC和UFUC数据集上不同方法的用户调查(User study)
用伏羲有灵众包(Fuxi Youling Crowdsourcing),从三个数据集中随机选取了三款字体,在每次评估时,参与者将看到ground truth字形以及由不同方法生成的n个字形,并被要求从1到5的评分范围内对这些生成字形进行评级。总共有来自50位参与者的13,500份结果。
如图10所示,由于UFUC数据集中的字符与未见过的字体搭配使用,所有的衍生版本在此数据集上得分较低。
Ablation Study
图11 消融研究与对应生成结果。
图12 不使用DAS及\({L}_{\text{consist }}\)时本文方法与不同方法的定性比较结果。
图13 字符生成比较:DAS方案 vs. 随机参考选择
表4 消融研究结果包括UFUC数据集上所有评估指标的评价。\(\downarrow\)表示越低越好,而\(\uparrow\)则意味着越高越好
未应用DAS时,每个源字形随机选用一个参考字形,性能大幅降低。由于我们从无关紧要的组件中只能获得粗略的风格特征,生成的字形与真实字形之间存在较大不一致性。
如表4及图12所示,在移除了DAS和\({\mathcal{L}}_{\text{consist }}\)后,本文方法仍优于其他对比方法,这表明了基于注意力的参考编码器提取特定组件特征的有效性。
在实验中,发现大约有\(5\%\)的组件未被包含在参考集中。当候选组件无法从源字形找到对应的参考集时,将随机选取参考字形和变形参考对。这使得模型可以应对不同的场景。由于只能从不精确变形成分的无关紧要部分提取基于注意力的特征表示,在这种情况下的方法可能会有性能下降的风险。
Korean Generation
图14 韩文字体生成的对比。各方法生成之字形与真实字形相比对,以红框标出存在明显局限性的字形。
图15 中国和韩国文字在几何变换、笔画粗细、细节处理以及连接书写模式方面的更多结果。其中,\({x}_{c}\)代表原始字形,\({I}_{c}\)与\({U}_{c}\)分别表示参考字形及其对应的可替换组件。而\({I}_{d}\)和\({U}_{d}\)则代表了变形参照对及变形组件对生成的字形。\(\hat{y}\)和\(y\)分别代表生成字形与真实标签字形。
表5 韩文字体生成中的定量比较结果。\({C}\)代表内容感知精度,\({S}\)表示样式感知精度,\(\downarrow\)意味着数值越低越好,而\(\uparrow\)则表示数值越高越好。
由于本方法基于字符及其组成部分的分解与变形,能够处理含有结构化信息的多种语言的字体生成,例如韩文。将其与三种顶尖的韩文生成方法进行了比较,分别是DM-Font、MX-Font和LF-Font。
100多种不同的韩文字体,将参考集设定为由随机选取的100个韩文字符组成。测试集中包含了来自15种字体中的100个未见过的字符。在韩文文字评估分类器中,内容准确度与样式准确度分别达到97.5%和97.1%。我们采用了与中文实验相同的评价指标,包括RMSE、SSIM、MS-SSIM、LPIPS以及基于韩文数据集训练的两个评估分类器
MX-Font与LF-Font所生成的字形虽更具可信度,但在保持目标风格微妙局部特征方面仍略显不足
DM-Font、MX-Font和LF-Font都是同一组织的工作
Conclusion
引入变形感知搜索(DAS)方案,利用这些成对的变形组件,有效扭曲候选组件以匹配目标字形的轮廓。通过这种方式,能够在候选组件出现在不理想位置时生成精细的局部风格。
Limitation: 当参考字形与源字形无关,抽取不到变形特征时,性能下降
Critique
跟FsFont很像,要求每个目标字符都要有特定的参考字符,不然性能会下降。只是训练中有些参考字形匹配不上的样本,使得最差的情况仍能生成个大概。
本文跟其他同类方法不同,仅用了图片模态进行训练,说不定形变模块确实有效?
TMM好可怕,图表好多好多