首页 > 其他分享 >[论文阅读] Look Closer to Supervise Better: One-Shot Font Generation via Component-Based Discriminator

[论文阅读] Look Closer to Supervise Better: One-Shot Font Generation via Component-Based Discriminator

时间:2022-10-03 11:11:16浏览次数:90  
标签:Closer via Shot 部件 生成器 生成 字体 CAM 风格

pre

title: Look Closer to Supervise Better One-Shot Font Generation via Component-Based Discriminator
ref: https://www.bilibili.com/video/BV13Y411w7yL
paper: https://arxiv.org/abs/2205.00146
code: https://github.com/kyxscut/CG-GAN

这篇是一种one-shot 的字体生成方法,也是基于对汉字进行组件分解,亮点在于生成器架构较为简单,模型性能主要通过给予生成器更多的监督信息来取得(判别器、组件级判别器、风格分类器,CAM模块),就是说它的损失函数很多

abstract

FFG任务困难,推理时数据少,总结前人经验,粗粒度判别器不足以监督字体生成。为此提出了Component-Aware Module (CAM),能监督生成器更细粒度地解耦内容和风格。之前的工作都是增加生成器的复杂度,这里给简单生成器更有效的监督信息,以此激发生成器的所有潜能,这对字体生成来说是一个新视角。通过结合组件监督和对抗学习,框架效果很好,因此叫做Component-Guided GAN, 也就是CG-GAN。该方法在one-shot字体生成取得了SOTA性能。同时它也能用于handwritten word synthesis手写字合成和scene text image editing场景文本编辑,表现出了良好的泛化性。

introduction

人类评判字体风格更注重局部细节,如端点形状、笔锋、笔画粗细、连笔等等(endpoint shapes, corner sharpness, stroke thickness, joined-up writing pattern)。虽然组件体现不出倾斜度、长宽比等字体风格属性,但作者觉得比整个字的形状更能决定字体风格。
img

人学写字时先学一个个组件,组件都学会自然就会写字。藉由以上两点提出了本文的FFG方法。

FFG两个意义:减轻字体设计负担、创建跨语言字库。

方法亮点

  1. 性能提升是通过给予生成器更细粒度的监督信息
  2. 生成器能够捕捉局部风格样式,而不显式依赖于预定义的组件类别,one-shot汉字生成和跨语言字体生成效果很好
  3. 使用部件级监督是一种human-like方法,克服了以往方法使用成对训练数据进行像素级强监督的局限性
  4. CAM仅在训练阶段使用,推理时不用,没有额外计算时间

Methodology

设计部件感知模块CAM模仿人类学习,为生成器提供多尺度的风格和内容监督,促使其实现部件级别的风格内容解耦,引导生成器保持多尺度风格一致,字形正确性和图像真实性,使它更多地关注字形的局部细节。

左图是训练示意图,CAM得到的信息将通过反向传播反馈给生成器,能够端到端进行训练(各模块都不用预训练)
右图说明生成器不显式依赖组件类别输入情况下能捕捉局部风格特征,实现跨语种字体生成


生成器包含风格编码器\(E_s\)和内容编码器\(E_c\),注意\(E_s\)输出是风格特征图\(X_s\)跟内容特征图\(X_c\)具有相同维度。之后\(X_s\)进一步通过映射网络转换为风格潜变量\(f_s\),随后通过AdaIN将\(f_s\)注入混合器Mixer中的每一层进行全局风格渲染,这一步跟StyleGAN的操作非常像。

输入Mixer前\(X_s\)和\(X_c\)会进行拼接,同时\(E_c\)跟Mixer各层之间具有残差连接。

随后Mixer进行特征融合并输出生成图像,随后将图像送入判别器D(橙色部分)跟CAM(蓝色部分),得到监督信息。

CAM是整个网络的重点,其中特征编码器F先对输出图像进行特征提取,然后将特征输入结合了注意力机制的Attention Decoder(本质是个RNN),它将字符拆分成多个部件并借助注意力机制进行识别,相当于加入了部件级的内容监督。

这里需要输入字符的部件序列作为弱监督,用它和decoder预测的部件序列计算交叉熵,得到一个 Structure Retention Loss \(L^{CAM}_{strc}、L^{G}_{strc}\)。
通过将数量较多的字符拆分成数量较少的部件的序列,加速收敛,并促使生成器里的\(E_c\)更加关注字形结构,保持字形一致性.


对Attention Map进行可视化,decoder能够较好地关注到部件区域,将每个时间步得到的attention map(输出是部件序列,那么一个map就对应了一个部件)跟特征图H相乘得到的加权特征图代表了对应的部件信息,可以用于后续的判别

此外还用了Style Classifier (CLS)去监督输入图片的全局和局部风格一致性:style matching loss(\(L^{CAM}_{sty}、L^{G}_{sty}\))。
将代表全局信息的原始特征图和代表局部信息的加权特征图输入CLS,用识别出的风格id跟groundtruth计算交叉熵。
CLS将引导生成器的\(E_s\)获得更好的特征表达能力,能够在不显式依赖组件类别输入的情况下捕捉局部风格特征。

除此之外CAM里还有一个 Component-wise Discriminator \(D_{comp}\) 用于对每个component patch进行一个真假判别(输入是加权特征图),用于引导生成器更好地捕捉局部特征:Component Realism Loss \(L_{comp}\)

此外还引入了一个 Identity Loss \(L_{idt}\)来保证网络对目标域的恒等映射,即将同一张字形给生成器,输出图像应当与输入一模一样,计算二者的L1损失,用于确保\(E_c\)生成的comtent representation是style-invariant

最终损失项如下图所示,

\(\lambda_{cnt}\)设置为10

Experiments

Chinese font generation

数据集,423中字体,其中随机选399种作为训练集,每个字体取800个字(seen characters),这800字能被385个部件覆盖。评估则基于两个数据集:399种见过的字体,每个字体取150个没见过的字;另一个是剩下的24种没见过的字体,每个取200个没见过的字。


在Unseen styles and unseen contents数据上的生成结果,主要与LF-Font对比。


Cross lingual font generation上的生成结果,这里没有跟MX-Font对比,对比的对象都挺弱的,似乎不太能说明问题


整个数据集上的定量评估,跟FsFont一样,可能注意力机制确实更好,各项指标都远超其他模型。特别是one-shot时就能超越8-shot的LF-Font(AAAI 2021)

Handwriting generation

Ablation study

Extension

Conclusion

文章对于one-shot字体生成任务提出了一种简单但有效的CG-GAN,特别是引入了CAM去监督生成器,CAM更加细粒度地解耦风格内容,即在组件级别上,去指导生成器取得更好的表现能力。更进一步,CG-GAN是第一个能扩展到手写词(英文)生成handwriting word generation跟场景文本编辑scene text editing任务上的FFG方法,展现了它的泛化能力。

Supplementary Material


比较有趣的是模型无需其他改动,就可以直接应用到英文手写体合成任务上,这里是与其他模型生成结果的对比

更多手写体生成效果,模型能够很好学到局部书写风格特征,如这里字符间的连笔


也可以对风格隐向量进行插值,得到良好的过渡效果,得到更多的生成样本,或许也能作为文本识别的数据增广手段

标签:Closer,via,Shot,部件,生成器,生成,字体,CAM,风格
From: https://www.cnblogs.com/Stareven233/p/16727713.html

相关文章