《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记

论文链接
《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记_第1张图片
相关代码
作者以前的工作是处理类似的中文字体转化问题,结果不是很理想,反响和关注度也不如也不如现在这篇文章。前者遗留了诸多问题:

  1. 生成的图片通常很模糊
  2. 对更多的有风格的字体处理时效果不好
  3. 每次只能有限地学习和输出一种目标字体风格

用GAN可以解决这些问题

论文中是将三篇paper合在一起又加入了作者的构想形成的一个条件生成对抗网络:
三篇论文如下:
-Image-to-Image Translation with Conditional Adversarial Networks
-Conditional Image Synthesis With Auxiliary Classifier GANs
-Unsupervised Cross-Domain Image Generation

zi2zi模型和其名字一样,来源于pix2pix模型并有所改进。其网络结构如下:
《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记_第2张图片
Encoder、Decoder和Discriminator的结构都直接借鉴于pix2pix, 尤其是Unet模型。

Intuition

 假设一个人类设计师设计新字体,那么毫无疑问他们不会从基本的字母表学起!真实世界的设计师们在他们能独立设计一个字体之前,已经经历了多年的对字/字符及基础语法的结构理解的训练。因此,为了达到这一点,搭建的模型的重点是其不仅了解自己的风格,应该也能适应其他字体风格。故而让模型同时学习多个字体风格至关重要。
 对多个风格进行建模的好处主要有两个:
 一是编码器能接触更多字符,不仅仅限于目的字体,也包括其他字体的集合;
 二是解码器也可以从其他字体中学习用不同方法输出同一个基本原理。
  一起训练多个字体使模型能学习字体中的每一种,并使用学习到的experience提升剩下的字体效果。

One-to-Many 模型中的目录嵌入

 我们已知同一个字符可能出现在同种字体中的问题,普通pix2pix模型无法处理这种一对多关系中的不确定性。由谷歌的zero-shot GNMT论文启发,我们引入目录嵌入解决了这个问题,它的方法是在将一个非训练高斯噪声在将其经过decoder层之前,作为风格embedding和字符embedding连接在一起。通过此方法,encoder层仍可以将同一个字符映射到同一个向量,但另一方面,decoder层将会使用两种字符和风格embedding生成目标字符。

损失函数

 Category embedding 的使用使我们能搭建一个同时处理多种风格的GAN模型。然而,新问题随之而来,模型开始将风格混合且混淆,结果产生了与所给每一种风格看起来都不相似的字符。从AC-GAN模型中得到启发,通过预测生成字符的风格,我们将多等级的目录损失加起来从而监督判别器的训练以对这种情况作出惩罚,因此保留了自身的风格。
  模型的另一个重要部分是从DTN网络中借鉴的常量损失。其思想很简单:原样本和生成的字符应该和同一个字符相似,因此他们在embedded空间中也应该表现的和彼此相似。GREATLY的引入,通过迫使encoder保留生成字符实体、缩小可能的搜寻空间,最终提升了收敛速度。
  最终得出了整体的损失变量,但从经验观点来看,这对于提升生成图片的质量并没有多大可见的提升。

如何训练GAN

  GAN是真像一头难以驯服的怪兽!(不能同意更多)

两步训练

  我采取的一个策略是将训练过程分离成两步。首先,用许多字体训练一个大的模型,然后固定encoder。然后选择有趣的字体个体进行微调。通过这个方法,我们得到了一个被训练成用成千上万字符提取字符结构信息的encoder和一个使结果目标更充实的精细的decoder。这可以视作通过共享权重来完成转换学习的方法。

实验细节

  大的模型用了27种不同的字体来训练,大约一半是中文一般是日文。每一个字体种,随机采样了1000到2000个字符。然而在微调过程中,可能用到一个不同的更大的字符集,其主要在2000到3000个字符规模,也有一个用4000个字符来训练的例外。而且和重写相同的是,资源字体是仿宋体。
  在单个1080 GTX显卡上训练大模型三十次大约花了两天时间,这包含了大约29000个样本。学习率初始设为0.001,batch size设为16,其他参数设为默认(L1_penalty = 100, Lconst_penalty = 15)。学习率每十次迭代减半。
  然而在微调阶段变量随样例而变,这取决于困难度和结果变现,通常有可能比L1和const损失更高。比如,你可以试试将L1_penalty=50,Lconst_penalty=1000.

注意

  训练之前还有一件看似琐碎但是很重要的事情需要做,就是去核实你的数据,比如像是否某些特定字符是否丢失,或者是否整体的shape是否和源字体及目的字体相一致,因为某些字体可能选择以一个更老的或者少见的书写一些字符的方法。如果没有做这个工作会使模型混淆并导致模型的崩溃。

有趣的模型

  与原本的真实数据比较如下所示,左边是原始字符,右边是生成的字符。

  结果令人很兴奋。与Rewrite相比,大多数字符生成的形状和真实样本几乎相同。另一个非常值得注意的提升是,相比于Rewrite,zi2zi模型能够处理更多个性化且复杂的字体且尚没有表现出对特定的字体簇的偏向。

挖掘嵌入空间

  从拥有的连续embedding中我们有了一个意外发现:我们可以在不同的风格中介入并观察这之间的状态:
《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记_第3张图片
如下在不同种类字体之间转换的动画,这以一个更加动态的内容形式说明了这个改写过程。

从汉字到韩文

  中文字符,不论简体还是繁体,或者日本文,都用相同的原理构建并有着一系列相同的根基。那么是否有可能模型只是记忆了基本的形状并进行了充足,而没能在此之上有概括泛化的能力呢?
  这使得韩国字母表中的Hangul成为了这个问题的完美目标。Hangul虽然和中文一样有类似盒子一样的结构,但是本质上自成一派,其基本原理与中文截然不同。在中文之上的领域测试模型的泛化能力是一项有趣的挑战:
《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记_第4张图片
  左边一行是源中文字体,剩下的是Hangul生成的对应的部分。如结果所示,输出似乎和源中文字体相似,这也成为了模型不只是简单地记忆基本属性并重新组装他们的强有力证据。它也能生成没见过的根基,这暗示其掌握了深层次的结构和风格信息。

失败的例子

  当目标字体和与他一起训练的字体极端不同时,通常发生失败的例子:
《zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks》论文笔记_第5张图片
这种情况可以通过前文中以更高的学习率微调来避免。

失败的尝试

  在项目期间,我尝试但没有成功的一件事是使用实例归一化而不是批处理标准化。 具体来说,本文引入了条件实例规范化。 虽然更多的参数用于表示每种风格,但实际上它会导致更长的收敛时间,更高的模式崩溃机会。 虽然在代码中,它仍然不在上述任何示例中使用。 这可能是BN的不合理代表力的另一个有趣的证明。

Moving On

  看到GAN在字体上表现非常出色,令人惊讶和激动人心。更好的是,与现有的方法不同,zi2zi以End-2-End的方式工作,假设没有笔画标签或者难以获得的任何其他辅助信息,只有字符的图像。 即使现在,zi2zi主要用于CJK家族字体,因为它的E2E性质,它可以很容易地扩展到这一点以外。 在我最疯狂的梦想中,我们可以训练一个模型来学习世界上所有语言的字体,以后,人们只需要设计一个字体,然后自动获得所有其他语言的相应字体? 这确实是一个非常令人兴奋的未来见证。
此外,看到新的GAN技术如何应用于这个问题将是有趣的。很难相信,仅仅6个月后,新的想法已经在堆积。 尝试像StackGAN这样的东西,更好的GAN模型,如WGAN和LSGAN(Loss Sensitive GAN)以及像DiscoGAN这样的其他域名转移网络,可能会非常有趣。

心得:

  这篇论文的原理主要借鉴于pix2pix模型,并且在思想上综合了三篇论文,但是这三篇论文都没看过,所以对于这个论文的原理还不是很清楚,但是其学到了一些思想:
a) GAN确实能解决很多问题,比如这篇论文中解决了生成图片模糊、不能学习多种风格字体及同时只能有限地学习和输出一种字体风格的问题。但是,GAN网络训练困难的问题普遍存在,这篇论文中作者通过两步训练的思路很值得借鉴。
b) 实验时一定要注意细节,比如这篇论文中作者提到,如果不注意判别裁定数据,比如一些更老的字体及写法不同字体的鉴别,那么可能会导致整个模型训练崩溃。
c) 做研究要考虑对当前结果的延伸。论文中先是将中国文和日本文作为输入得到其风格,但是作者考虑到中文和日文的风格相近,结构和基本原理几乎相同,因此又将韩文输入得出结果,最终证明了模型的效果确实不错,更有说服力。

你可能感兴趣的:(Paper)