谷歌官方揭秘AutoDraw人工智能绘画工具原理:让机器学会理解艺术

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


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

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


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


640.jpeg

sketch-rnn 生成的矢量图


在最新论文《简笔画绘制的神经表征》(链接:https://arxiv.org/abs/1704.03477)中,我们提出了一个绘制普通物体简笔画的生成性循环神经网络,其目标是以类似于人类的方式训练机器绘画和概括抽象概念。我们在一个手绘简笔画的数据集上训练模型,其中每张简笔画表示握笔动作的一个序列:往哪个方向移动,什么时候提笔以及停笔。如此,我们创建了一个具有广泛应用潜力的模型,可协助艺术家创作以及帮助老师教学生绘画。

在图像的生成性建模方面,神经网络已做了大量现有工作,其中大部分工作聚焦于把光栅图像(raster image)建模为 2D 像素网格。当这些模型生成逼真图像时,由于 2D 像素网格的高维度,其面临的一个核心挑战是生成具有连贯结构的图像。例如,这些模型有时产生的图像很有趣,比如 3 只或更多眼睛的猫,多只头的狗。


640-2.jpeg

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


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


sketch_rnn.png

sketch-rnn 的原理图


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


image11.png

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


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


image13.png


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


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


image10.png

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


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


image04.png

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


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


image12.png

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


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


image05.png

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


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


创新性应用


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


multi_cat_examples.png

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


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

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


image03.png

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


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


multiple_interpolations.png

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


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


full_predictions.png

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


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


multi_prediction.png

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


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


论文:A Neural Representation of Sketch Drawings


640.jpeg


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


原文地址:https://research.googleblog.com/2017/04/teaching-machines-to-draw.html

理论理论谷歌艺术AutoDraw循环神经网络图像生成论文应用
返回顶部