python生成手写汉字字体_「zi2zi」:用AI生成自己的手写字体
导读
如果想要自己做一套字体,无论是电脑软件FontCreator还是网站flexifont都为我们带来了极大的便利。
但是最低的国标字体数量近7000个,若采用传统的方法则需要手写相同数量的汉字,这个过程费时耗力。那有没有办法可以快速生成自己的手写字体?本文将介绍开源项目zi2zi,只需要你的部分手写字体样本便可生成完整字库。教你用深度学习的方式打开制作手写字体的大门。
本系列文章
Part1:导读与相关介绍
part2:程序化或将与手写模拟器擦出火花
zi2zi
zi2zi是作者Rewrite项目的后续工作,其为处理类似中文字体转化的问题。Rewrite项目获得了相当多的关注和兴趣,但是项目结果不佳。仍然存在一些严重的问题:生成的图像通常是模糊的
无法使用更多风格的字体
限于一次仅学习和输出一种目标字体样式
为了解决上述问题,zi2zi诞生了。本项目的论文中是将之前的三篇paper合在一起又加入了作者的构想形成的一个条件生成对抗网络。
zi2zi模型和其名字一样,来源于pix2pix模型并有所改进。其网络结构如下:
我们可以知道,现实世界中的设计师需要经过多年的培训,起码了解字母/字符的结构和基本原理才能自行设计字体。基于此,其重要的是使模型不仅意识到自己的样式,而且也能意识到其他字体的样式。因此,使模型能够同时学习多种字体样式是极为重要的。同时对多种样式建模有两个主要好处:编码器能接触更多字符,不仅仅限于目标字体,也包括所有组合的字体;
解码器还可以学习从其他字体写相同的部首的不同方法。
通过一起训练多个字体,它可以强制模型从每个字体中学习,然后利用所学的经验来改善其他字体。
现在有一问题是同一个汉字会出现在多种字体当中。作者受《谷歌的多语言神经机器翻译系统》的启发,想出了「类别嵌入」,将不可训练的高斯噪声作为风格嵌入与汉字嵌入串联起来,之后再一并进入解码器。这样,解码器仍旧将同一个汉字映射为同一个向量,但是,解码器会同时考虑汉字和风格两个嵌入来生成目标汉字。
有了类别嵌入,现在就有了一个能够同时处理多种风格的GAN。但作者发现又出现了一个新的问题:模型开始将各种风格弄混淆并且混合在一起,生成的汉字什么也不像了。于是,他又借鉴了 AC-GAN模型中的 multi-class category loss,把这个 loss 加到判别器上,一旦出现混淆或者风格混合,就“惩罚”判别器。
上图为zi2zi 生成中文字体的实际效果。共有5列,左边是源字符,右边是系统自动生成的。可以看到,生成的汉字不会“花”,对于某些字来说,系统生成的和真实文字几乎一样。同时也能处理更多样、更复杂的字体风格。
此外,通过具有连续的嵌入,我们可以在不同样式之间进行插值,并得到介于两个字体之间的状态:
下面是多对字体之间过渡的动画,这些演示了在更动态的上下文中的插值过程:
使用方法
运行环境可参考链接内给出的条件。
软件地址:「IamZLT」开发中
为了避免IO瓶颈,必须进行预处理,以将数据转化为二进制数据并在训练期间保留在内存中。首先运行以下命令将字体文件转化为数据集:
python font2img.py --src_font=src.ttf
--dst_font=tgt.otf
--charset=CN
--sample_count=1000
--sample_dir=dir
--label=0
--filter=1
--shuffle=1
之后会生成一一对照的图片,其中左边为希望系统生成的目标字体,右边为系统参照字体,可以使用网上字体较全的字体库。
如果你的目标字体没有ttf格式文件的话,也可以使用图片编辑软件来拼接图片,以达到以上的效果。然后通过以下命令进行封装,转换为二进制格式。
python package.py --dir=image_directories
--save_dir=binary_save_directory
--split_ratio=[0,1]
运行此命令后,将在save_dir下找到两个对象train.obj和val.obj,分别用于训练和验证。然后便可以开始训练。需运行以下命令:
python train.py --experiment_dir=experiment
--experiment_id=0
--batch_size=16
--lr=0.001
--epoch=40
--sample_steps=50
--schedule=20
--L1_penalty=100
--Lconst_penalty=15
经过长时间训练,最后会生成矢量SVG文件,导入FontCreator等软件中便可生成自己的字库。
python生成手写汉字字体_「zi2zi」:用AI生成自己的手写字体相关推荐
- 字体大宝库:16款漂亮的免费英文手写字体推荐
在设计中,往往在为了强调某个东西的自然性.非正式性而会采用手写字体.手写字体看起来更有个性.更可爱.今天本文向大家推荐16款免费英文手写字体.这些免费英文字体特别适合网页设计师,平面设计师和电脑艺术人 ...
- python中yield讲解_「技术」如何深入理解Python中的 yield?
深入理解 yield 为了理解什么是 yield,你必须理解什么是生成器.在理解生成器之前,让我们先走近迭代. Iterables 当你建立了一个列表,你可以逐项地读取这个列表,这叫做一个可迭代对象: ...
- 利用python画分形图_「分形」python简单的分形图片 - seo实验室
分形 康托集 # 康托集 import pygame pygame.init() screen = pygame.display.set_caption('康托集') screen = pygame. ...
- python开源oa系统_「开源」目前见过的最好的开源OA产品
这是我目前见过的最好的开源OA产品.功能完整,代码结构清晰.值得推荐. 1.项目介绍 oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql ...
- 【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体
文章目录 前言 中文手写字体 步骤 1. 下载源代码和中文字体 2. 注册字体 3. 预加载字体资源 4. 增加字体枚举 5. 添加字体切换按钮 部署测试 参考资料 前言 Excalidraw 是一款 ...
- 圣诞节海报设计需要的手写字体素材
圣诞节就要到了! 无论你是在设计节日派对传单,海报,手抄报,都需要的手写体素材.通过简单的节日字体 --圣诞快乐,节日快乐等等--这些词是众所周知的节日必备. 可爱的手写字体在情感上适合假日使用. 希 ...
- 设计师收藏的20款英文手写字体【免费下载】
在所有的字体类型中,手写字体是最有用的和用途最多的.根据你需要完成的任务,使用手写字体的地方无处不在.找到合适的匹配特定的项目的字体是很耗费时间的. 所以在这里,我收集了20款精美的手写字体,可以在你 ...
- 深度学习,实现手写字体识别(大数据人工智能公司)
手写字体识别是指给定一系列的手写字体图片以及对应的标签,构建模型进行学习,目标是对于一张新的手写字体图片能够自动识别出对应的文字或数字.通过深度学习构建普通神经网络和卷积神经网络,处理手写字体数据.通 ...
- 20个使用手写字体的创意网站作品欣赏
互联网上将近90%的信息是文本形式的,想给网站加个亮点,试试这招!挥毫泼墨,笔走龙蛇,今天这组网站堪称是手写字体的运用典范,或随意散漫,邪魅狷狂:或精致有序,小资调调:或优雅流畅,小家碧玉,总之风格非 ...
- 「zi2zi」:用AI生成自己的手写字体
导读 如果想要自己做一套字体,无论是电脑软件FontCreator还是网站flexifont都为我们带来了极大的便利. 但是最低的国标字体数量近7000个,若采用传统的方法则需要手写相同数量的汉字,这 ...
最新文章
- 考勤排班_如何设置钉钉做2休1等考勤?
- php中的mysql模块
- UIGraphicsBeginImageContext系列知识
- plsql编程语言定义变量
- Linux 内核源代码的目录结构
- html5平板电脑,Html5添加支持桌面、移动触摸手机和平板电脑的Lightbox插件教程
- Arduino文档阅读笔记-attachInterrupt()
- 压测|关于PHP7和5.6的压测对比
- 浅谈人工智能的工作原理
- 计算混响时间的意义_混响时间的测量方法和步骤
- 111端口rpcbind漏洞
- uefi 懒人版黑苹果_clover+懒人版黑苹果安装(e3+970)
- 手把手教会使用YOLOv5训练VOC2007数据集
- matlab半导体器件仿真,半导体软件 - 仿真模拟半导体器件的物理场
- 金融分析(三)------联合分布,边缘分布,条件概率密度
- chapter5. Java数据结构与java算法
- android虚拟器没有菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法
- 安装驱动显卡重启计算机,Win7电脑安装显卡驱动后一直重启的解决方法
- C++搭建集群聊天室(十四):群聊功能
- 当你想用Gitee对你的APK文件上传下载时
热门文章
- Web开发常用代码:背投广告
- asp木马伪装成图片或其它,上传漏洞终极解决方法
- 深圳大学计算机保护一志愿吗,考研保护第一志愿是什么意思?哪些院校官宣保护一志愿?...
- I. 知识图谱 应用案例 --- 百度
- 云计算 third day
- linux操作系统原理【3】
- 2万字用Python探索金庸小说世界
- VMware Cloud Director 10.3 发布(下载) - 云计算调配和管理平台
- 为什么边缘概率密度是联合概率密度的积分_5.27005柏林联合VS美因茨
- 005 IK-analyzer添加搜狗词库