SelectorGAN汉字风格迁移模型(Chinese Charactor Style Transfer)

这个项目是在 CVPR论文 Separating Style and Content for Generalized Style Transfer的基础上改进而来的,是LJSthu在学校人工神经网络课程上面的课程作业。我们提出的模型叫做SelectorGAN,从模型效果上面来看,大幅度超越了上文中提出的state of art算法EMD,但模型本身并没有对应的paper,因此,如果希望研究汉字迁移问题,并且引用本文的模型,可以直接引用本博客。

我们的模型尝试处理这样一个问题:给定风格A的16个字体图片,以及字B的不同风格16个图片,尝试合成同时拥有字体A与风格B的图片。如下图所示,一个是ground truth,一个是模型输出,你能猜出谁是谁吗?

首先,我们找到了原文模型EMD的代码,并使用自己的数据集进行复现,得到下图的效果,其中右图是ground true,左图是模型生成结果。可以发现,在我们自己的数据集(规模和原文差不多)上面,模型完全没有paper里面配图的讲的那么好。

与之对比的,是我们提出的SelectorGAN输出如下图所示,其中,左边是ground truth ,右边是模型的输出结果。最明显的区别是我们的模型不容易生成全黑或者全白的无意义图片,几乎所有文字都是清晰可辨的。

在介绍我们的模型之前,我们先分析了当前state of art模型的缺陷。EMD模型的图例如下图所示,将16张候选图片,输入到CNN的16个channel中。这里,由于16张图片是无序不可分的,而CNN的不同Channel是有序可分的,这里就会导致交换输入图片的顺序会产生不同的结果。这其实是一个不正确的做法,倘若我们将16*1的CNN作用于16张图片修改16个为1*1的CNN分别作用于16张图片,可以将模型的参数个数降低16倍,有效降低过拟合的出现。用时,原文的欧几里得距离损失函数,也是的模型在对于生成图片没有信心时,直接输出全部空白,或者全部黑色,而正常图片也存在模糊边界的问题。这一系列问题到这了EMD模型实际跑的并没有文章中说的那么厉害。

我们的模型SelectorGAN为了解决上述的问题,引入了若干个特殊的机制。首先,为了解决生成图像模糊的问题,我们不在使用回归模型训练,而是使用生成模型进行创造。具体来说,我们使用了GAN。

基于回归的模型,非常容易出现全黑/全白的情况

我们使用的GAN实际上是魔改版的 CycleGAN and pix2pix,使用了GAN后,我们发现生成模型可以很好的理解诸如字体宽度,字体边界曲率等信息,并加以模仿。

不同字体迁移到同一风格,基本不存在风格上的区别

接下来,我们发现,将原文中16个风格和16个字体结合生成的效果,与1个风格1个字体结合生成效果无区别。上图就是用1对1的方式生成的16张候选图片。

1对1的生成还会出现另一个比较麻烦的东西,就是生成器容易通过增删笔画的方式欺骗判别器。

通常,当原字体与目标字体长款比差距较大时,Generator认为增添笔画可以糊弄Discriminator,而且实际上它成功了。

对于上述的问题,我们发现,我们现在有整整16张候选图片。我们希望能够设计出一个评分模型Selector实现字体的选择。这个Selector应该怎么设计呢?

使用Selector的评分,可以从16张后选中选出最好的结果

一个直观的想法是直接使用Discriminator的输出当做Selector,因为Discriminator觉得“真的”的图片往往真的很像答案。但是这样做并不好,因为Discriminator输入的是一堆“真的或者假的”图片,但是实际上,即使是假的图片,不考虑原来输入的话,在风格上都是无懈可击的。这时Discriminator并不能很好的判断出输出的好坏。

基于上面的考虑,我们额外设计了一个Selector模型,作为一个评分模型,通过预测Discriminator的评分进行训练,与Discriminator不同的是,Selector同时使用原始输入图片与Generator的生成图片作为输入,且可以理解为Discriminator的滑动平均。降低了Discriminator的抖动。(当然,实验证明,将Selector评分和Discriminator评分加权平均能够获得更好的效果)

上面两个图片介绍了我们的SelectorGAN的基本原理。同时,我们也在模型上进行了若干试验,比如对于style vector进行插值,可以得到两种风格间的渐变矩阵。

以上就是对于我们模型的简要介绍,有兴趣也可以阅读我们的展示ppt与课程论文。

SelectorGAN

汉字风格迁移-2.0

《SelectorGAN汉字风格迁移模型(Chinese Charactor Style Transfer)》有5个想法

    1. 你好,代码https://github.com/mhy12345/Chinese-Character-Style-Transfer,数据集因为有版权的原因,所以不方便公开。不过个人认为任意一个缺失率不大的2939(文字)x200(字体)x64(长)x64(宽)的数据集都可以获得博客中的效果。

    2. 顺便提一下,虽然当时没有用,但是https://github.com/kaonashi-tyc/zi2zi 这里面我也看到有将字体转为图片的脚本,可以用来造数据集。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据