前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zi2zi:用条件生成对抗网络玩转中文书法,绝妙汉字字体自动生成

zi2zi:用条件生成对抗网络玩转中文书法,绝妙汉字字体自动生成

作者头像
新智元
发布2018-03-28 15:24:27
4.1K0
发布2018-03-28 15:24:27
举报
文章被收录于专栏:新智元

【新智元导读】Github 用户 kaonashi-tyc 将字体设计的过程转化为一个“风格迁移”(style transfer)的问题,使用条件 GAN,训练神经网络自动将输入的汉字转化为另一种字体(风格)的汉字,效果相当不错。

今天为大家介绍一个使用 GAN 自动生成中文字体的项目。

创造字体是件很困难的事情,创造中文字体就更难了。

要创造一套符合 GBK(中国政府规定的字符集)的字体,设计师需要为超过 26000 个汉字做设计,有时候需要花好几年的时间才能完成。

为了解决了这个问题,Github 用户 kaonashi-tyc 想到,先手工设计一部分汉字,其余的汉字让计算机自动生成不就行了?——毕竟,汉字是由偏旁部首组合而成的,“任”这个字里的单人旁,在“仁”这个字里看起来也一样。

于是,作者将字体设计的过程转化为一个“风格迁移”(style transfer)的问题。他用两种不同字体作为训练数据,训练了一个神经网络,训练好的神经网络自动将输入的汉字转化为另一种字体(风格)的汉字,概念如下图所示。

kaonashi-tyc 将他的首次尝试命名为“Rewrite:中文字体风格迁移”(Rewrite: Neural Style Transfer For Chinese Fonts)。

但是,这个初步的尝试还有一些缺陷(见下图),作者自己总结认为:

  • 生成的字体往往是模糊的
  • 字体变化十分有限(宋体和明朝体效果不错,但楷体就不行了)
  • 一次只能学会和输出一种字体

为了解决上述问题,作者进行了新的尝试,也就是我们这次重点介绍的 zi2zi 这个项目。

这一次,作者还是使用风格迁移解决中文字体生成的问题,不过他使用了条件生成对抗网络(GAN)的力量。

zi2zi:使用条件生成对抗网络生成中文字体

zi2zi是基于以下3篇论文的研究成果:

  • Image-to-Image Translation with Conditional Adversarial Networks
  • Conditional Image Synthesis With Auxiliary Classifier GANs
  • Unsupervised Cross-Domain Image Generation

第一篇论文是加州大学伯克利视觉组的研究,也是前段时间很火的“pix2pix”的研究基础。作者也表示,zi2zi 是从 pix2pix 的工作直接衍生而来。

zi2zi 的网络结构如下图所示:

zi2zi 的网络结构由编码器、解码器和判别器组成(直接把 pix2pix 的拿过来用了)。

灵感来源

作者指出,根据人类设计师设计字体的经验,让神经网络同时学会多种字体风格是至关重要的。

同时建模多种风格有两大优点:

  1. 编码器能够接触到更多的汉字,不仅限于一个目标字体,还包括所有字体的组合
  2. 解码器可以从其他字体中学会同一种偏旁的不同写法

同时训练多种字体,迫使模型从每种字体中学习,然后使用学到的经验改善同一种字体的其他汉字。

类别嵌入一对多建模

现在有一个问题,那就是同一个汉字可以出现在多种字体当中。

Vanilla pix2pix 模型并没有解决这种一对多的关系。作者受“谷歌零数据机器翻译”论文(Zero-shot GNMT)的启发,想出来了“类别嵌入”(category embedding)的方法,将不可训练的高斯噪声作为风格嵌入(style embedding)与汉字嵌入(character embedding)串联起来,之后再一并进入解码器。

这样,解码器仍旧将同一个汉字映射为同一个向量,但是,解码器会同时考虑汉字和风格两个嵌入来生成目标汉字(target character)。

Losses,Lots of Losses

有了类别嵌入,现在就有了一个能够同时处理多种风格的 GAN

但是,作者发现,这样做之后又出现了一个新的问题:模型开始将各种风格弄混淆并且混合在一起,生成的汉字什么也不像了。

于是,他又借鉴了 AC-GAN 模型中的 multi-class category loss,把这个 loss 加到判别器上面,一旦出现混淆或者风格混合,就“惩罚”判别器。

作者介绍,模型当中还有一大要素是 constant loss,这个是 DTN 网络中的概念。这个方法的思路很简单——源汉字和生成的汉字按理说应该十分类似,所以它们在嵌入空间(embedded space)里出现的位置也应该十分接近。作者将这个 loss 命名为“GREATLY”,GREATLY 这个 loss 迫使解码器保留生成汉字的 identity,收窄了可搜索的范围,因而加快了收敛速度。

最后,还有一个 total variation loss(tv loss)。不过作者表示,根据实际经验,这个 loss 对生成图像的质量提升作用并不明显。而且,对于毛笔书法来说,这个 tv loss 反而还有损生成图像的质量。因此,作者将 tv loss 列出作为备选项使用。

下面我们就来看看,zi2zi 生成中文字体的实际效果。下面的图中,一共有5列,左边是源字符,右边是系统自动生成的。

不得不说,效果很不错。首先,生成的汉字不会“花”了,其次,zi2zi 相比 Rewrite 也能处理更多样、更复杂的字体风格。

下面这张图展示了连续的嵌入空间字体的转换,我们可以见证字体是如何从一种风格转换为另一种风格的:

下面这张动图展现了多种字体之间的转换:

接下来,作者还介绍了如何训练 GAN,还公开了代码。不仅如此,还有汉字转化为韩语的案例。此外,作者还分析了训练过程中的一些失误,总结了经验。

这些具体的内容,你就看原文了解更多吧。

  • 原文地址:https://kaonashi-tyc.github.io/2017/04/06/zi2zi.html
  • Rewrite Github:https://github.com/kaonashi-tyc/Rewrite
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档