神经网络教机器画画

来源:otoro

编译:weakish

编者按:机器学习开发者hardmaru撰写博客,介绍了他在上年度Google Brain Residency期间和同事合作发表的论文A Neural Representation of Sketch Drawings,提出了一个针对矢量图像的生成式模型,同时开源了sketch-rnn,基于sketch-rnn可以创建辅助艺术家和设计师进行创意工作的工具。

sketch-rnn生成的矢量绘图

介绍

我们的模型生成的矢量图

最近,使用神经网络作为生成工具的图像生成建模取得了重大进展。虽然已经 有 大量使用神经网络进行生成式图像建模的工作,但是到目前为止,大部分工作都是针对低分辨率像素图像进行建模。

然而,世界在人类的眼中并不是一个像素网格,人类发展了抽象概念来表示所见。年幼的时候我们用铅笔在纸上画画,来表达我们看到的东西。通过这种方式,我们学会了基于笔触的短序列来表达图像的序列化的、矢量表示。我们的工作探索了传统像素图像建模方法的替代方案,提出了一个针对矢量图像的生成式模型。

小孩学习使用一系列的笔触绘制哆啦A梦。

小孩发展了只需寥寥数笔就能描绘物体乃至情感的能力。他们学习绘制自己喜欢的动漫人物、家庭、朋友、熟悉的地方。这些简单的图画可能不像照片刻画地那样真实,但是它们确实告诉我们一些事情,关于人们如何表示和重建周围世界的图像。

视觉的功能是更新我们头脑中的世界的内部模型,但是我们呈现在纸上的是内部模型。

——Harold Cohen,Reflections on Design and Building AARON

我们的论文A Neural Representation of Sketch Drawings提出了一种能够生成常见对象素描的生成式循环神经网络,目的是训练机器以类人的方式绘制和概括抽象概念。我们在一个手绘素描的数据集上训练我们的模型,每个素描表示为控制笔动作的序列:移动方向,抬起笔和停止绘画的时刻。因此,我们创建了一个具有很多潜在应用的模型,可能的应用包括协助艺术家的创作过程,帮助教导学生如何画画。

在这项工作中,我们建模了一个基于矢量的图像表示,该表示受到了人们如何画画的启发。我们使用递归神经网络作为我们的生成式模型。我们的循环神经网络不仅可以通过构建一系列笔触来生成单独的矢量素描,就像先前这些关于生成手写和汉字的实验一样,我们的模型也可以生成一个以潜向量z(作为模型的输入)为条件的矢量素描。

我们之前基于多个潜向量之间的转变生成了高分辨率变形MNIST动画,与此类似,我们可以基于QuickDraw数据集的瑜伽类别的手绘素描训练我们的模型,并让它在时间和空间两个方向上想象瑜伽姿势。

“生成序列数据是计算机所能做到的最接近做梦的事。”

用于矢量绘画的生成式模型

我们的sketch-rnn模型基于序列到序列(seq2seq)自动编码器框架。它结合了变分推断,并利用超网络作为递归神经网络单元。seq2seq自编码器的目标是训练一个网络,将输入序列编码成浮点数向量(潜向量),并基于潜向量使用解码器重建尽可能接近输入序列的输出序列。

我们的模型故意在潜向量上添加了噪声。我们的论文表明,在编码器和解码器间的通信通道中引入噪声后,模型不再能够精确地重现输入素描,而必须学习通过带噪声的潜向量刻画素描的本质。我们的解码器接受这一潜向量,并生成一系列动作以构造一个新素描。在下图中,我们将几张猫的实际素描输入到编码器中,以使用解码器生成重建的素描。

在猫素描上训练的模型的重建,基于不同温度水平采样

为了调查这些潜向量如何编码概念性的动物特征,在下图中,我们首先获取了编码自两个非常不同的猪图像(绿框中的猪头和橙框中的全猪)的两个潜向量。我们想要了解我们的模型如何学习表示猪,一种方法是在两个不同的潜向量之间插值,然后可视化每个插值潜向量生成的素描。下图可视化了猪头素描如何渐变为全猪素描,并且在这个过程中展示了模型如何组织猪素描的概念。我们看到,潜向量控制鼻子相对于头部的位置和大小,以及素描中身体和腿的存在。

我们还想知道模型是否可以学习多种动物的表示,如果可以的话,它们会是什么样子?在下图中,我们通过在猫头和全猪之间插值潜向量以生成素描。我们看到这一表示是如何从猫头慢慢过渡到有尾巴的猫,到肥猫,最后变成全猪。就像一个学画动物的小孩一样,我们的模型学习通过将头、脚和尾巴附在身体上来构建动物。我们看到这个模型也能画出不同于猪头的猫头。

在猫和猪的素描上训练的模型的潜向量插值

这些插值的样本暗示潜向量确实编码了素描的概念特征。不过,我们可以使用这些特征来改进其他不具备这些特征的素描吗?比如,给猫头加上身体?

从抽象概念中学到的关系,基于潜向量算术的探索

事实上,我们发现,基于我们在猫和猪素描上训练的模型,素描绘制类推是可行的。例如,我们可以从编码全猪的潜向量中减去编码猪头的潜向量,以得到一个代表身体概念的向量。将这个向量差加到猫头潜向量上形成了全猫(即,猫头+身体=全猫)。绘制类推使我们得以探索模型如何组织潜向量空间以表示生成素描流形上不同的概念。

创意应用

探索生成日常对象的潜空间。由左至右、由上往下进行潜空间插值

这项工作的研究部分以外,sketch-rnn这一潜在的创意应用也让我们极为兴奋。例如,纹理设计师可以应用sketch-rnn为织物或墙纸生成大量类似而独特的设计,这甚至只是sketch-rnn最简单的应用。

如前所述,如果给定卡车的输入素描,为绘制猪而训练的模型可以用来绘制猪型卡车。我们可以将这一成果扩展为应用,该应用可能有助于创意设计师想出与目标受众共鸣更多的抽象设计。

左:基于绿框中的单张素描生成的相似而独特的猫;右:探索生成椅子猫的潜空间

例如,上图中,我们将四张不同的椅子素描传给画猫模型以生成四个像椅子的猫。我们可以进一步采用前述插值方法来探索椅子猫的潜空间,并生成一个大型生成设计网格以供挑选。

探索不同对象间的潜空间可能让创意设计者得以在不同的绘图之间找到有趣的交集和联系:

探索猫与巴士、象与猪、各种猫头鹰之间的潜空间

我们也可以将sketch-rnn的解码模块作为独立模型使用,对其进行训练,以预测不完整素描的可能补全。基于这种技术,可以构建辅助艺术家的创意过程的应用,向艺术家建议完成不完整素描的其他方式。在下图中,我们绘制了不同的不完整素描(红色部分),同时让模型提出不同的完成素描的可能。

模型从不完整的素描开始,自动生成不同的补全

我们相信,最好的创意作品不是仅仅通过机器创作的,更可能是由使用机器学习作为丰富创意思维过程的工具的设计师创作的。我们预想未来这些工具可以用于艺术家和设计师的合作。以下是一个简单的概念性的例子,展示了基于我们的模型进行的合作:

循环神经网络降雨

生成矢量图像建模的未来充满各种可能性,我们非常为之兴奋。这些模型将使许多不同方向上的令人兴奋的新创意应用成为可能。它们还可以作为加深我们对自己的创意思维过程的理解的工具。阅读我们的论文A Neural Representation of Sketch Drawings了解更多sketch-rnn的信息。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180109G0WQPQ00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区