首页 > 字体设计 > ai怎么做字体设计-“zi2zi”:利用AI生成自己的手写字体
2024
03-13

ai怎么做字体设计-“zi2zi”:利用AI生成自己的手写字体

介绍

如果你想制作自己的一套字体,无论是电脑软件FontCreator还是网站flexifont都给我们带来了很大的方便。

但国标字体最少也有近7000种。 如果采用传统方法卡通人物,需要手写同样数量的汉字,费时费力。 有没有办法快速生成自己的手写字体? 本文将介绍开源项目zi2zi,它可以仅使用您的部分手写字体样本生成完整的字体库。 教你如何利用深度学习打开制作手写字体的大门。

本系列文章

Part1:简介及相关介绍

Part2:手写模拟器编程可能会擦出火花

子2子

zi2zi是作者Rewrite项目的后续工作,处理类似中文字体转换的问题。 Rewrite项目受到了相当大的关注和兴趣,但项目的结果却很差。 一些严重的问题仍然存在:

为了解决以上问题,zi2zi诞生了。 本项目的论文是结合之前的三篇论文并加入作者的想法而形成的条件生成对抗网络。

zi2zi模型就像它的名字一样,源自pix2pix模型并进行了改进。 其网络结构如下:

我们可以知道,现实世界中的设计师需要经过多年的训练,至少要了解字母/字符的结构和基本原理,才能自行设计字体。 因此,让模型不仅了解其自身的样式,而且了解其他字体的样式非常重要。 因此,使模型能够同时学习多种字体样式极其重要。 同时建模多种风格有两个主要好处:

通过一起训练多种字体,它迫使模型从每种字体中学习,然后利用学到的经验教训来改进其他字体。

现在存在一个问题,同一个汉字会出现在多种字体中。 受到“谷歌多语言神经机器翻译系统”的启发,作者提出了“类别嵌入”,将不可训练的高斯噪声作为风格嵌入与汉字嵌入连接起来,然后一起进入解码器。 这样,解码器仍然将相同的汉字映射到相同的向量,但是解码器会同时考虑汉字和样式嵌入来生成目标汉字。

通过类别嵌入,您现在拥有可以同时处理多种样式的 GAN。 但作者发现一个新的问题出现了:模型开始将各种风格混淆、混合在一起,生成的汉字看上去一点也不像。 因此,他借用了AC-GAN模型中的多类类别损失ai怎么做字体设计ip形象,并将这个损失添加到判别器中。 一旦发生混淆或风格混合,判别器就会受到“惩罚”。

上图为zi2zi生成中文字体的实际效果。 总共有5栏,左边是源字符,右边是系统自动生成的字符。 可见,生成的汉字不会“花花”。 对于某些角色,系统生成的角色与真实角色几乎相同。 它还可以处理更多样化和复杂的字体样式。

此外,通过连续嵌入,我们可以在不同的样式之间进行插值,并在两种字体之间得到一些东西:

下面是字体对之间的过渡动​​画,演示了在更动态的上下文中的插值过程:

指示

运行环境请参考链接中给出的条件。

Github:/kaonashi-tyc/zi2zi/

软件地址:《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文件ai怎么做字体设计,可以将其导入FontCreator等软件中,生成自己的字体库。

最后编辑:
作者:nuanquewen
吉祥物设计/卡通ip设计/卡通人物设计/卡通形象设计/表情包设计