draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)

选自GoogleBlog

作者:David Ha

机器之心编译

参与:黄小天、李泽南、李亚洲

谷歌 4 月 11 日推出的 AutoDraw 是一个应用人工智能技术把你的随手涂鸦变成绘画的神奇工具。一经推出立刻获得了广泛关注,其背后的原理也引起了人们的好奇。昨天,谷歌研究博客终于发声,对 AutoDraw 背后的技术进行了解读。同时,相关论文也已发表。

论文地址:https://arxiv.org/abs/1704.03477

在线体验:https://aiexperiments.withgoogle.com/autodraw

抽象的视觉交流是人类传达想法的关键之一。孩子们从小就开始发展描绘事物的能力,甚或是简单画上几笔以表达情感。这些简单的绘画不如照片那般写实,但在通过图像表指和重构周遭世界的方面,它们为我们带来了一个有趣的角度。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(1)

使用 128x128 ImageNet 数据集训练的先前 GAN 模型生成的动物图像错误实例。上图是 Ian Goodfellow 的 NIPS 2016 教程《生成对抗网络》之中的图 29。

在这一工作中我们受到人类绘画方式的启发,对更低维度的向量表征做了审查。我们的模型 sketch-rnn 是基于 seq2seq 自编码器框架,其包含变分推理(variational inference)并将超网络(hypernetwork)用作循环神经网络细胞。seq2seq 自编码器的目标是训练网络把输入序列编码成被称作隐向量(latent vector)的浮点数向量,并通过使用一个尽可能地复制输入序列的解码器从这一隐向量中重建输出序列。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(2)

sketch-rnn 的原理图

在我们的模型中,我们刻意向隐向量添加噪音。在论文中,我们展示了通过将噪声引入到编码器和解码器之间的通信通道中,让模型不再能够准确地再现简笔画,而是必须学会以噪音隐向量的形式捕捉简笔画中的特质。我们的解码器会使用这个隐向量,产生用于构建新素描的一系列持续动作。在下图中,我们将一些猫的素描输入给编码器,使用解码器产生了重建的简笔画。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(3)

通过模型训练重建猫的简笔画

在这个过程中,必须要提到的是重建的猫简笔画并不是输入简笔画的简单复制体,而是全新的、具有和输入图片相似特征的简笔画。为了证明模型没有简单地复制输入信息,而是已经学会了人类画猫的一些技巧,我们可以尝试将非标准简笔画输入给编码器:

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(4)

如图所示,当我们输入了一个三眼猫的简笔画后,模型生成的图像是类似的轮廓——但只有两只眼睛,这意味着模型已经明白猫只有两只眼睛。为了证明我们的模型并没有简单地从大量学习数据中挑选类似的正常猫图进行输出,我们可以尝试输入完全不同于猫的物体,如上图所示的牙刷。我们看到网络仍然努力产生了一个猫的形象,拥有长长的胡须,同时尽量遵循牙刷的形状。这表明该网络已经学会了解码输入简笔画的内容,将其转换成抽象的猫的概念,编码成隐向量,同时还有能力从这些向量中重建全新的简笔画。

还是不相信?我们再用模型训练一下猪的简笔画,看看能不能得出同样的结论。当输入八条腿的猪的时候,该模型生成了形状类似的猪——但是只有四条腿。如果向画猪的模型输入一辆卡车的简笔画,它就会画出一头长得像卡车的猪。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(5)

让训练后的模型重建猪简笔画

为了探究这些隐向量是如何编码动物形态特征的,在下图中,我们首先从两张非常不同的猪简笔画中获得隐向量,在这个例子中是猪的头(绿框中)和猪的整体(橙色框中)。我们希望了解我们的模型是如何学会重建猪的形象的,一种方法是在两个不同的隐向量之间进行差值,并在每一步隐向量生成简笔画后进行可视化。如下图所示,我们可视化了猪头的素描是如何慢慢变成整头猪的。并展示了模型是如何理解猪这个概念的。我们可以看到隐向量控制了相对位置,原图的鼻子形成了头,而后又加入了身体和腿。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(6)

从一个训练猪简笔画的模型之中生成的隐空间插值。

那么,如果模型同时训练了多种动物会是什么样子?在下图中,我们生成了从猫头和整头猪输入而产生的隐向量差值素描。我们可以看到模型师如何将猫的脑袋慢慢变成整只猫,然后又变成一头猪的。就像儿童在学习绘画一样,我们的模型通过构建动物的头、腿、尾巴和身体来画出自己想要的动物。我们还可以看到,模型可以从猫头逐渐过渡到猪头。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(7)

隐空间差值生成的猫到猪处理过程可视化图,模型同时训练了猪和猫的概念。

以上这些插值示例表明隐向量确实对素描中的概念特征进行了编码。那么,我们现在是否可以让模型加入原图中没有画出的特征,比如为一个猫头的素描加上身体?

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(8)

使用隐向量算法探索学习抽象概念之间的联系。

确实,我们发现简笔画绘制类比对于训练猫和猪的模型是可能的。例如,我们可以从整个猪的隐向量减去被编码的猪头的隐向量,得到一个表征身体概念的向量。把这一区别加到猫头的隐向量之中得到一个完整的猫(即,猫头 身体=整个猫)。这些简笔画类比允许我们探索模型组织其隐空间以在生成简笔画的复制中表征不同概念的方式。

创新性应用

除了这一工作的研究部分,我们也对 sketch-rnn 的创新性应用深感激动。例如,即使在最简单的应用案例中,图案设计者也可使用 sketch-rnn 生成大量相似却又独一无二的设计用语纺织品或者墙纸印刷。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(9)

从单一输入简笔画(绿框和黄框之中的猫)生成的相似但又独特的猫。

正如之前看到的,用于训练画猪的模型可被用来绘制像猪一样的卡车,如果输入一个卡车的简笔画。我们可以将这一结果扩展到应用,以帮助创作型设计者处理抽象设计,从而更好地与目标受众产生共鸣。

例如,在下图中,我们往训练绘制猫的模型之中输入 4 个不同椅子的简笔画,得到了 4 只像椅子一样的猫。我们可以再进一步把之前提及的插值方法(interpolation methodology)包含进来,探索像椅子一样的猫的隐空间,并生成大量的设计以供选择。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(10)

探索被生成的椅子猫(chair-cat)的隐空间。

对不同对象之间隐空间的探索可间接使创作型设计者找到有趣的交叉点以及不同绘画之间的关系。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(11)

探索每个物体的被生成简笔画的隐空间。从左到右从上到下的隐空间插值(interpolation)。

我们可以使用 sketch-rnn 解码器模块作为独立模型(standalone model),并训练它预测不完整简笔画的不同补画方式。通过为未完成作品提供可选择的建议,这一技术可应用于协助艺术家进行创作。下图中,我们描绘了不同的不完整简笔画(红色),并且让模型以不同的可能方式补全这些简笔画。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(12)

这个从不完整的简笔画(图中垂线左侧)开始,并据此生成不同的完整作品。

我们可以进一步延展该概念,用不同的模型完成同样的不完整简笔画。在下图中,我们看到如何使得同样的圆与方图形成为蚂蚁、火烈鸟、直升机、猫头鹰、沙发等物体的一部分。通过使用训练绘制不同物体的一组不同的模型,设计人员能探索与受众交流视觉信息的新方式。

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(13)

使用不同的 sketch-rnn 模型(训练用来绘制不同的物体)预测同样的圆与方(中心)图形的尾端

对生成式向量图像模型未来的可能性,我们感到非常兴奋。这些模型能满足许多不同方向的令人激动的、新的创新应用。它们也可以作为工具帮助我们提升对创新思维流程的理解。具体细节可查看以下论文:

论文:A Neural Representation of Sketch Drawings

draw画图工具(谷歌官方揭秘AutoDraw绘画工具原理)(14)

我们提出了sketch-rnn,这是一个能基于笔触绘制常见物体的循环神经网络(RNN)。该模型在数千张人类手绘图像上进行训练,它们代表了数百类物体。我们略述了一个条件式与非条件式简笔画生成框架,也描述了在向量格式中生成连贯简笔画的新的、稳健的训练方法。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页