前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用StyleGAN创建新脚本

使用StyleGAN创建新脚本

作者头像
代码医生工作室
发布2019-06-21 16:44:24
1.7K0
发布2019-06-21 16:44:24
举报
文章被收录于专栏:相约机器人

作者 | Robert Munro

来源 | Medium

编辑 | 代码医生团队

将StyleGAN应用于Unicode字符的图像,以查看它是否可以创建新字符。发现了一些有趣的结果如上图。

世界的剧本

世界上的语言为他们的书写系统使用了大约400种不同的脚本。这包括拉丁文脚本,这是今天使用最广泛的:

简单的拉丁字符

Unicode Consortium旨在将世界上的每个角色映射到底层数字,以便可以在不同的计算机系统中轻松使用它们。例如,散列“#”映射到数字35,a-acute“á”是225,雾“雾”的中文字符映射到38,654。Unicode中的第一个~65,000个字符覆盖了当前使用的大多数脚本,并分为~140个块,其中Simple Latin是其中一个块。有关完整列表,请参阅Unicode块上的Wikipedia页面。

https://en.wikipedia.org/wiki/Unicode_block

在Unicode联盟中服务了很短的时间。被美国语言学会任命为候选人,专注于代表性不足的语言。很着迷于成为第一手见证脚本如何形式化和编码的过程,这样世界上的每个人都可以利用信息时代,无论他们如何选择沟通。在Unicode联盟的时间是在首次将表情符号添加到Unicode时,这可能是他们最有争议的决定。

最难的决定之一是如何在Unicode标准中命名给定脚本。简单拉丁语,如Unicode中所定义,包括常见的标点字符和数字。显然,使用此脚本的语言比拉丁语更多,可以争论标点符号是否是脚本的一部分。也可以指出除0以外的所有数字都来自阿拉伯语。因此Unicode中的“块”试图映射到脚本中有意义的分区,承认边界可能是模糊的,并且通常会有多个可能具有政治含义的脚本名称。因此这些名称对于Unicode中的块来说非常方便,但并不打算成为使用该脚本作为其语言的人的主要名称或唯一名称。

有了这个警告,这里有一些有趣的脚本今天使用Unicode,用它作为使用StyleGAN创建新脚本的基础:

亚美尼亚

阿拉伯

梵文

孟加拉

古吉拉特语

泰米尔人

卡纳达语

马拉雅拉姆语

泰国

韩文符号

CJK兼容性表意文字(CJK =中文日文韩文)

在上面的例子来自南亚的语言。强调了他们国家内部的多样性。

数据准备

为每个unicode字符生成了一个JPG图像,可以使用python Pillow库和我的MAC附带的“Ariel Unicode”字体进行渲染。

使用不同的颜色对每个块(与一个脚本相关的每个字符范围)中的图像进行编码,这样就可以很容易地看到最终字符集中的最大影响。上图中的颜色反映出:拉丁文为黑色,泰米尔语为鲜绿色等。

最初这产生了约40,000张图像。这是65,000个字符中有多少是由Ariel Unicode字体进行某种渲染。尝试使用覆盖范围更广的字体会很有趣,特别是在不再使用的旧脚本和其他字符(如emojis)中。使用多种不同的字体生成字符也很有趣。

在这40,000个中,大部分都是中文和日文字符。很快就放弃了一个实验,其中StyleGAN只生成看起来像中文和日文字符的新字符。

对于每个超过256个字符的块,随机选择了256个字符的子集。这使得数据从40,000到大约7,000个字符。使用7,000来训练在本文中分享其结果的模型。

要查看每个区块中的前20个字符及其颜色,已在个人网站上列出:

http://robertmunro.com/research/unicode/show.html

StyleGAN

StyleGAN是在TensorFlow中实现的图像生成系统,它使用生成对抗网络(GAN)。它是在NVidia开发的,并在此处作为开源代码发布:

https://github.com/NVlabs/stylegan

基于样式的生成对抗网络生成器体系结构。Tero Karras,Samuli Laine和Timo Aila。

http://stylegan.xyz/paper

StyleGAN最着名的用于创建实际不存在的人的“逼真”外观照片:

styleGAN生成的假面孔示例,来自https://github.com/NVlabs/stylegan

人们一直在使用它来生成其他假图像,受到其中一些的启发,包括Miles Brundage使用StyleGAN创建新的太空堡垒卡拉狄加图像:

实验

通过7,000张图像的分层样本,根据其Unicode块进行颜色编码,在P2 AWS实例上运行了styleGAN一周。使用了深度学习AMI,需要安装的唯一附加库是用于从字体生成图像。

这是对styleGAN代码的一个小修改。最难的部分是让图像和字体库在python中运行得很好,这样就可以编程生成每个Unicode字符的图像并为其着色。

结果

理想的情况下,结果应该看起来像真实的人物,但不是字面上看起来像今天任何以Unicode字符。

以下是系统训练的实际选择:

首先,结果并不十分令人信服。在10个样本图像(styleGAN系统中的“ticks”)之后,它们模糊不清:

10个刻度后的假例子

但经过30个滴答后,开始看到一些明显的例子:

30个刻度后的假例子

30个刻度后的示例在缩小时看起来很逼真,但是当放大直到曲线之间没有明显区别的外星人时:

30个刻度后的外星人角色

这里再次是本文开头的图像,它是在78个刻度之后,现在有一些非常清晰的例子:

78蜱之后的假例子

直线和曲线之间的区别现在很明显,重音和变音符号现在更加明显与人物本身不同。在StyleGAN的训练中,该分辨率在30到78个刻度之间加倍,这也有所帮助。

这里有一些最喜欢的78个刻度,颜色告诉他们的影响力:

受拉丁影响

受阿拉伯影响

泰国影响

CJK(中国日语韩语)受到影响

封闭的CJK受到影响

马拉雅拉姆受到影响

梵文受影响

泰米尔语影响

对这些角色看起来多么逼真感到印象深刻!只有几个例外,看起来它们都属于某种语言的脚本。

有这样的例子屈指可数都已经在Unicode字符。这些可以是这样的示例,其中它们不是该块的256的随机选择的一部分,或者它们可以以不同方式偏移或缩放。

只有一种方法,结果不符合期望:希望一些新角色将是彩虹色的,并立即显示来自多个脚本的影响。在反思中,可以看出为什么情况并非如此:训练数据中没有多彩的例子,因此多彩的例子不能说服对抗性的例子。

为什么要生成新角色?

除了有趣的因素,这里有一些实际用例:

  • 识别新脚本的新字符。世界上只有一半的语言采用了剧本。对于语言社区来说,采用前殖民者或入侵者的剧本通常是有争议的。这种方法可以提供已经知道不存在的候选字符列表,但在风格上与世界各地的脚本保持一致。
  • 了解脚本的可视属性。生成的假货都告诉一些关于脚本视觉属性的有趣信息:曲线与线条的选择,信息在字符空间不同部分的分布等等。因此它们告诉一些关于如何编码信息的有趣信息以不同的脚本以相似或不同的方式。
  • 为创造性用例创建新脚本。从“指环王”到“星际迷航”,书籍和电影中都有许多有趣的假脚本。如果没有预算雇用David J Peterson,这种方法可以产生比在低预算的小说电影中看到的随机符号更真实的脚本。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档