前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >用GAN生成自己的手写字体

用GAN生成自己的手写字体

作者头像
带萝卜
发布于 2020-10-26 06:35:43
发布于 2020-10-26 06:35:43
2.5K0
举报

本文使用 Zhihu On VSCode 创作并发布

最近受到b站一个视频的启发,想做一套属于自己的字体,但是又不想写好几千个字,为了偷个懒,调研了一下用神经网络合成字体的算法,最终找到一篇名为W-Net的论文:

W-Net: One-Shot Arbitrary-Style Chinese Character Generation with Deep Neural Networks

下面介绍一下这篇论文的主要内容:

相关算法

论文中提到了三个比较有特点的文献

1 使用RNN根据笔画时序来生成文字;

2 DCFont,将汉字信息分为Content、Style和Category三个部分,使用GAN的思路来训练, 需要700多个字才能生成一套字体;

3 Zi2zi,从pix2pix衍生而来的Encoder+Decoder+Discriminator的结构,同样使用GAN的思路来训练,需要2000多个字才能生成一套字体。

而这片W-net号称只需要一个字就可以生成一套字体,你相信吗?我虽然不太信,但是为了少写几个字,也值得尝试一下。

生成器结构:

算法思路简介:

  1. 图中左侧的分支用于提取汉字结构信息
  2. 图中右侧的分支用于提取字体风格信息
  3. 字体风格特征只选用了较深层网络得到的特征图
  4. 采用对抗训练的方式得到与真实汉字相近的图片

关于判别器结构,文章一笔带过,并未做详细介绍,只提到了判别器中使用了类似[5]中的辅助分类器。

loss函数设计

loss函数分为生成损失和判别损失两大部分,每个损失函数都由多个损失加权得到。

下面逐一介绍各个损失项的含义

对抗损失:判别器得到的真伪分类的损失。 汉字分类损失:判别器得到的汉字类别的损失。 字体类别损失:判别器得到的汉字类别损失。 重建损失:包括两个部分,一个是生成的fake_img与real_img之间的L1Loss,另一个是fake_img和real_img分别加入到分类网络得到的多级特征图之间的MSELoss。 常数损失:fake_img和real_img分别通过两个分支得到的向量之间的损失 分支分类损失:在左右分支的输出后面各自添加一个用于分类的全连接层,左分支用于提取汉字结构特征,所以用全连接层对汉字进行分类,右分支用于提取汉字字体风格特征,所以用全连接层对字体进行分类。 梯度惩罚项:模型对于输入求导得到的梯度和,用于防止梯度过大,与梯度剪裁功能相似,但是更加柔和。

论文中得到的生成效果:

为了制作一个字体生成器,我实现了这个算法,地址在:

Arctanxy/W-Net-PyTorch

参考

  • [1] https://www.bilibili.com/video/BV1St4y1Q71m
  • [2] Zhang, X.Y., Yin, F., Zhang, Y.M., Liu, C.L., Bengio, Y.: Drawing and recognizing chinese characters with recurrent neural network. IEEE transactions on pattern analysis and machine intelligence (2017)
  • [3] Jiang, Y., Lian, Z., Tang, Y., Xiao, J.: Dcfont: an end-to-end deep chinese font generation system. In: SIGGRAPH Asia 2017 Technical Briefs. p. 22. ACM (2017)
  • [4] Tian, Y.: zi2zi: Master chinese calligraphy with conditional adversarial networks.https://github.com/kaonashi-tyc/zi2zi/ (2017)
  • [5] Odena, A., Olah, C., Shlens, J.: Conditional image synthesis with auxiliary classifier gans. arXiv preprint arXiv:1610.09585 (2016)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生成对抗网络GAN系列(五)附代码
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Teeyohuang/article/details/82699781
TeeyoHuang
2019/05/25
1.5K0
AI助力下的中文之美
当你看到这么多形态各异的字体,你是不是觉得这都是书法家的杰作呢?你是不是觉得,要想做这样一套字体一定需要很多的真人来做一个字一个字的字形设计呢?要在以前,这可能确实需要书法家们加班加点来进行逐个打磨才能成行了,但是现在不一样——因为我们有AI。
刀刀老高
2019/06/14
1K0
AI助力下的中文之美
煮酒论英雄:深度学习CV领域最瞩目的成果top46
---- 新智元报道   来源:Smarter 作者:皮特潘 【新智元导读】本文盘点深度学习CV领域杰出的工作,从基础研究、分类骨架、语义分割、实例分割、目标检测、生成对抗、loss相关、部署加速、其他方面等筛选出最瞩目的成果。 如果06年Hinton的深度置信网络是深度学习时代的开启,12年的Alexnet在ImageNet上的独孤求败是深度学习时代的爆发,那么至今也有近15年的发展历程。 本文盘点深度学习CV领域杰出的工作,由于本人方向相关,故从基础研究、分类骨架、语义分割、实例分割、目标检测、
新智元
2023/05/22
3770
煮酒论英雄:深度学习CV领域最瞩目的成果top46
美景本天成,妙笔偶得之——“妙笔”是怎样炼成的?
刚刚过去的冬奥会开幕式,可以说是一场美轮美奂的视觉盛宴。其中,科技与艺术的融合铸造了各种梦幻的视觉效果,让我们看到AI在艺术领域大有可为。而今天分享的项目也是AI+艺术的一个小方向,灵感来源于我的小女儿。
用户1386409
2022/03/31
3960
美景本天成,妙笔偶得之——“妙笔”是怎样炼成的?
谷歌开源的 GAN 库--TFGAN
本文大约 8000 字,阅读大约需要 12 分钟 第一次翻译,限于英语水平,可能不少地方翻译不准确,请见谅!
kbsc13
2019/08/16
8660
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
GAN作为一种强有力的生成模型,其应用十分广泛。最为常见的应用就是图像翻译。所谓图像翻译,指从一幅图像到另一幅图像的转换。可以类比机器翻译,一种语言转换为另一种语言。常见的图像翻译任务有:
JOYCE_Leo16
2024/04/16
2980
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
【新智元导读】本文来自ICCV 2017的Talk:如何训练GAN,FAIR的研究员Soumith Chintala总结了训练GAN的16个技巧,例如输入的规范化,修改损失函数,生成器用Adam优化,使用Sofy和Noisy标签,等等。这是NIPS 2016的Soumith Chintala作的邀请演讲的修改版本,而2016年的这些tricks在github已经有2.4k星。 ICCV 2017 slides:https://github.com/soumith/talks/blob/master/2017
新智元
2018/03/21
1.6K0
ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题
https://blog.csdn.net/2302_79308082/article/details/145177242 本篇文章是基于上次文章中提到的对抗生成网络,通过对抗生成网络生成少数类样本,平衡欺诈数据中正类样本极少的问题。
机器学习司猫白
2025/01/21
1630
【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题
使用对抗生成网络(GAN)生成手写字
这是通过GAN迭代训练30W次,耗时3小时生成的手写字图片效果,大部分的还是能看出来是数字的。
Awesome_Tang
2019/05/10
1.2K0
使用对抗生成网络(GAN)生成手写字
zi2zi:用条件生成对抗网络玩转中文书法,绝妙汉字字体自动生成
【新智元导读】Github 用户 kaonashi-tyc 将字体设计的过程转化为一个“风格迁移”(style transfer)的问题,使用条件 GAN,训练神经网络自动将输入的汉字转化为另一种字体(风格)的汉字,效果相当不错。 今天为大家介绍一个使用 GAN 自动生成中文字体的项目。 创造字体是件很困难的事情,创造中文字体就更难了。 要创造一套符合 GBK(中国政府规定的字符集)的字体,设计师需要为超过 26000 个汉字做设计,有时候需要花好几年的时间才能完成。 为了解决了这个问题,Github 用户
新智元
2018/03/28
4.7K0
zi2zi:用条件生成对抗网络玩转中文书法,绝妙汉字字体自动生成
深度学习 | GAN,什么是生成对抗网络
GAN是由两部分组成的,第一部分是生成,第二部分是对抗。简单来说,就是有一个生成网络G和一个判别网络D,通过训练让两个网络相互竞争,生成网络G接受一个随机噪声z来生成假的数据G(z),对抗网络D通过判别器去判别真伪概率,最后希望生成器G生成的数据能够以假乱真。在最理想的状态下,D(G(z)) = 0.5。
Justlovesmile
2021/12/14
1.3K0
深度学习 | GAN,什么是生成对抗网络
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
最常见的评价GAN的方法就是主观评价。主观评价需要花费大量人力物力,且存在以下问题:
JOYCE_Leo16
2024/04/16
3230
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
四天搞懂生成对抗网络(三)——用CGAN做图像转换的鼻祖pix2pix
也许是CycleGAN的光芒太过耀眼,Pix2Pix就像家中的次子,还没得宠多长时间,就被弟弟CycleGAN抢走了风头。这也怪不得它们的“爹滴”朱大神把“域风格迁移”的CycleGAN(下个项目介绍)造得太好用了,似乎完全能够代替“像素风格迁移”的Pix2Pix,以至于都来不及给Pix2Pix起个××GAN的名字~
用户1386409
2020/11/23
2.9K0
四天搞懂生成对抗网络(三)——用CGAN做图像转换的鼻祖pix2pix
基于Keras的DCGAN实现
生成对抗网络(Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习。
卡尔曼和玻尔兹曼谁曼
2019/01/22
1.2K0
基于Keras的DCGAN实现
万字综述之生成对抗网络(GAN)
前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。可是在深度学习,GAN 领域,其进展都是以月来计算的,感觉那两篇综述有些老了。
机器之心
2019/04/29
3.4K0
万字综述之生成对抗网络(GAN)
生成式对抗网络模型综述
同时在本微信公众号中,回复“SIGAI”+日期,如“SIGAI0515”,即可获取本期文章的全文下载地址(仅供个人学习使用,未经允许,不得用于商业目的)。
SIGAI学习与实践平台
2018/08/07
5360
生成式对抗网络模型综述
数据集难找?GAN生成你想要的数据!!!
GAN创始人 Ian Goodfellow 在酒吧微醉后与同事讨论学术问题,当时灵光乍现提出了GAN初步的想法,不过当时并没有得到同事的认可,在从酒吧回去后发现女朋友已经睡了,于是自己熬夜写了代码,发现还真有效果,于是经过一番研究后,GAN就诞生了,一篇开山之作。论文《Generative Adversarial Nets》首次提出GAN。
Python研究者
2020/11/09
4K0
数据集难找?GAN生成你想要的数据!!!
gan训练
gan对mnist数据集训练 使用非卷积神经网络,对1维数据模拟,卷积是对2维数据模拟 import torch import torchvision import torch.nn as nn import torch.nn.functional as F from torchvision import datasets from torchvision import transforms from torchvision.utils import save_ima
sofu456
2019/07/09
5540
gan训练
图像生成:GAN
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
chaibubble
2019/09/18
9670
图像生成:GAN
AI 助你无码看片,生成对抗网络(GAN)大显身手
作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能: 1) 去除(爱情)动作片中的马赛克 2) 给(爱情)动作片中的女孩穿(tuo)衣服 生成式模型 上一篇《用GAN生成二维样本的小例子》中已经简单介绍了GAN,这篇再简要回顾一下生成式模型,算是补全一个来龙去脉。 生成模型就是能够产生指定分布数据的模型,常见的生成式模型一般都会有一个用于产生样本的简单分布。例如一个均匀分布,根据要生成分布的概率密度函数,进行建模,让均匀分布中的样本经过变换
AI研习社
2018/03/19
16K0
AI 助你无码看片,生成对抗网络(GAN)大显身手
推荐阅读
相关推荐
生成对抗网络GAN系列(五)附代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文