[论文阅读] Learning Component-Level and Inter-Class Glyph Representation for few-shot Font Generation

发布时间 2023-12-23 04:42:28作者: NoNoe

Pre

title: Learning Component-Level and Inter-Class Glyph Representation for few-shot Font Generation
accepted: ICME 2023
paper: https://ieeexplore.ieee.org/abstract/document/10220055
code: None

关键词:Font Generation, GAN
阅读理由:非常主流的方法,行文简洁,适合刚接触该领域的研究者

Idea

GAN + AdaIN,风格特征进行对比学* + 部件信息靠交叉注意力融合内容特征

Motivation&Solution

  1. 大部分方法都忽视了部件级内容细节,生成结果容易出现结构缺失的问题 —— 提出的CCAM模块
  2. 现有方法学*风格用的对抗方式的风格分类(判别器识别风格?)不可靠 —— 对比学*

Background

相关工作只讲了 Image-to-image translation 和 Few-shot Font Generation,涉及的工作不多,也不够全面,例如FFG部分几乎都是基于GAN的方法。

Method(Model)

Overview

图1 方法总览。通过对比学*拉*相同风格的字,以交叉注意力的方法使用部件信息协助提取内容特征。

本文提出了 Content-Component Aware Module (CCAM),通过部件图片来学*准确的内容表达,强调这是一个新视角。此外使用 Glyph Style Contrastive Enhance (GSCE) 策略来学*类内字形风格差异,以此去除风格参考的内容信息的影响。

图2 模型架构。部件也以图片的形式输入编码器,其特征跟内容特征做交叉注意力

风格靠对比损失训练,然后用AdaIN注入解码器,内容特征靠部件做交叉注意力提取,判别器输出是长度等于字体数量的二元向量,指示生成结果和真实图片的风格相似程度。

Content-Component Aware Module

图3 CCAM模块示例。虚线表示与生成S_i一样的计算过程。

CCAM的核心是多头交叉注意力块,靠内容特征作为query来查询并汇聚部件特征。介绍了一大堆注意力计算流程,不会在水字数吧。公式4把\(f_s\)拼成了\(f_r\)...总之注意力结果S跟原本的内容特征\(f_s\)拼接,然后过一层卷积,就跟着风格去生成了。

Glyph Style Contrastive Enhance

具体来说,任一参考图片,需要5个相同风格的正样本,和5个不同风格但相同内容(汉字)的负样本,为了实现最好的效果,尽可能确保参考汉字的所有部件都能被这5个正样本覆盖。

Training

损失函数:

  1. style contrast loss: InfoNCE
  2. Adversarial loss: 生成器和判别器拉扯,目标是生成的风格对不对
  3. Generative contrast loss: 对生成结果抽取风格特征,当做正样本扔去算风格对比损失。但这玩意算的时候编码器要冻结吗,可惜没代码。

Experiment

Settings

Err指标就在测试集上训练了俩分类器,分别识别风格和内容

Dataset

470种字体,包含印刷和手写体,每种含4404个汉字,均可由287个部件涵盖(这比例怎么做到比FsFont还高的,不会精心去掉了一些独体字吧),分辨率128x128。需要一种内容字体(通常是宋体),然后400字体作训练集,69种做测试集。怎么不划分汉字,这下汉字全都见过,测试相当于别人的ufsc验证集。

Results

图4 与其他方法对比。

表1 69种新字体上的量化指标。

表1看指标是比两年前的方法好,但除了SSIM之外的指标都好烂啊,怎么回事呢。而且看图4样本能维持结构,但风格确实差了些,而且它测试时风格参考要几张呢,LF-Font默认3张,不一样也没法比较吧?

Ablation Study

表2 消融研究

探讨了两个主要模块的效果,但是没有同时去掉的实验,还是看不出效果。

Conclusion

说是实验表示本文超过了SOTA方法,几个两年前的东西能叫SOTA?

Critique

intra-class style: 类内风格
inter-class style: 类间风格

又在讲部件信息和风格内容无法彻底解耦,这不是大家早就知道了吗。很清晰也很简单的方法,欠缺新意。而且2023年的工作实验就对比几个21年甚至更早的老东西,这合适吗?

而且部件也以图片形式作为输入和内容字共享编码器,但那些无法单独表示的部件怎么办?例如根据ids的拆分,“黑”去掉底部四点为68号部件,但这个没有对应汉字,该如何作为输入?

不过本文挺好的,一共6页没有废话,看着舒服,莫非是ICME的要求。