字体风格迁移之Multi-Content GAN

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_14845119/article/details/82971574

论文:Multi-Content GAN for Few-Shot Font Style Transfer

GitHub:https://github.com/azadis/MC-GAN

 

论文为cvpr2018,伯克利的BAIR实验室和adobe合作的论文。

 

整体框架:

Multi-Content GAN是由两个条件gan堆叠而成。如上图所示,整个Multi-Content GAN包含GlyphNet和 OrnaNet 两个部分。GlyphNet主要负责字体轮廓的生成,OrnaNet 负责字体颜色和装饰纹理的生成。

其中,T 表示灰度化和reshape操作。σ 表示sigmoid操作。

 

GlyphNet模块:

该模块的输入为B*26*64*64,输出为1*26*64*64。

假设我们的输入的单词为”TOWER”,这样实际的输入为6*26*64*64。这个6是如何得到的呢?这里采用了leave-one-out 的训练方法。如上图所示。首先输入为一个1*26*64*64的图像。只是对应的有单词的位置为该单词的像素,其余部分为0。然后,每一个单词分别去掉作为输入,这样一共就产生了6个这样的输入。这6个这样的输入当成6个batch进行处理。最终会得到6个输出,也就是6*26*64*64的输出。但是最终需要的输出是1*26*64*64,这是如何处理的呢?首先,假设只有”TOWE”的输入会得到所有26个字母的输出,但是只取输出”R”。依次类似,”ORTW”的输出只取”E”,”ERTW”的输出只取”O”,”EORW”的输出只取”T”,”EORT”的输出只取”W”。这样就会生成5个输出。然后”TOWER”取剩余的21个生成的字母。最终生成1*26*64*64的输出。

 

该模块的loss为正常的cgan的loss。包括生成器的L1 loss和判别器的LSGAN loss。其中LSGAN loss分别包括局部local和整体global的损失。局部的只有21*21的感受野。

OrnaNet 模块:

该模块的输入为26*3*64*64,输出也是26*3*64*64。

首先需要对GlyphNet的输出,进行通道的叠加,也就是RGB三个通道都是相同的堆叠,这样将GlyphNet输出的灰度图转化为伪彩色图。然后通过生成器,生成出26*3*64*64的输出。

 

该模块的loss包含生成器的输入和输出之间的λ2*MSE loss, 输入和label之间的的λ4*MSE loss,输出和label之间的的λ1*L1 loss。以及判别器的LSGAN loss。其中LSGAN loss同样分别包括局部local和整体global的损失。

训练单词的字符数量:

这里使用结构化相似性度量structural similarity (SSIM) metric 来进行网络预测效果的评价。分数越高表明预测的效果与真实label越接近。

上图的曲线表面随着单词长度的增加,SSIM值也越高,说明了本文的这种leave-one-out 训练方法的有效性。

 

实验结果:

总结:

  1. 有别于传统的cgan,本文提出了leave-one-out 训练方法。只使用其中一小部分字母就生成出大部分未见过的字母。
  2. 本文的Multi-Content GAN对于大量中文的也许很难适应。主要可以用在一些艺术字的生成方面,就是那些关注整体而较少关注细节的方面。从论文中的图中可以看出生成的字和真实的字还是有很大区别,如果想使用该方法制造训练数据,也许不是好的选择。

猜你喜欢

转载自blog.csdn.net/qq_14845119/article/details/82971574
GAN