电子说
编者按:本文作者Helena Sarin是一名艺术家,同时也是一位神经网络开发者。在这篇文章中,她讲述了自己在艺术创作过程中与生成对抗网络碰撞出的火花。
美国画家Jackson Pollock曾说:“所有的一切都是建筑游戏,有些人会用笔刷,有人会用铲子,还有人会选择一支笔。”
而我自己选择了神经网络。我是一名艺术家,但同时我也开发了很多商用软件。但是此前,艺术和编程在我的生活中完全毫无关联。除了偶尔用计算机作图进行生成艺术的处理,我所有的作品都是进行模拟,直到我发现了生成对抗网络(GANs)。
自从2014年GANs发明生成之后,机器学习社区就出现了很多有关GAN的技术。在这篇文章中,我将大概讲解为什么GANs是如此优秀的艺术类工具,以及我是怎样用它创造艺术作品的。
以下是我的一些艺术作品:
艺术家眼中的GAN
所以到底什么是GAN?为什么它对艺术家很有吸引力?
我们可以将艺术的创作过程看作一种游戏。游戏动作发生在艺术工作室中,其中有两位玩家:评论者和艺术初学者。初学者的目标是创作大师级别的画作,但不能抄袭。而评论者的目标是判断他看到的画作是大师的作品还是初学者的作品。一次次判断之后,初学者和评论者会进行比赛,初学者会越来越熟练地进行模仿,风格越来越像大师。而评论者会更容易辨别出哪幅画作来自初学者,二者互相督促,水平越来越高。
GAN就是模拟这一过程的神经网络,评论者的角色由判别网络D扮演,艺术初学者的角色由生成网络G扮演。一次次“游戏”过后,生成网络模拟的大师画作风格会更逼真:
那么你的角色是什么呢?轻微调整游戏规则(网络的超参数),成为了美术馆馆长(curator)。作为馆长你要从GAN的输出中进行挑选,因为GAN会生成很多不同结构、颜色的组合,与其训练的样本图片有各种不同的差异。所以作为馆长也不容易,有时你会觉得很多图像都很有趣,想把它们都留下来。
用上述GAN进行创作是很有趣的,可以探索各种新模型和数据集。和其他数字化工具不同,GAN总能给人惊喜,它可以创造出比滤镜或普通的风格迁移更特别的效果。
CycleGAN
应用于艺术生成的深度学习技术种类很多,常见的有以下几种:
GAN/DCGAN,也就是上文描述的经典生成对抗网络:
神经网络迁移,将一张图像的风格迁移到另一张图像中:
成对图像转换技术,例如Pix2Pix。这种技术需要含有源图像和目标图像的数据集进行训练:
非成对的图像转换技术则不用对应数据集(例如Cycle GAN):
计算机创作的很多画作都是由以上技术生成的,但是为什么最终我只选择了CycleGAN呢?简而言之,CycleGAN训练出来的网络可以具有其中一个数据集的形式(输入域)和另一个数据集的结构(目标域)。这一点非常重要。计算机视觉专家Alyosha Efros表示,我们“仍然非常注重结构”。
我第一次用CycleGAN完成一个项目后,觉得它在模拟结构上太强大了,所以想将其用在生成艺术上。CycleGAN能让你处理高分辨率、小尺寸的图像数据集,并且训练模型的速度非常快!
我第一项任务是将食物和饮料的照片转换成静物素描风格。每个数据集含有300到500张高分辨率图像。那一整个月,我几乎每天做各种实验,想把输入数据尺寸变小。然后我花了好几个小时对输出图像进行筛选,最终效果如图:
带有鲜花的图片转换成了类似零食的东西,饮料的照片也变得非常有趣。我把最终结果给我的艺术导师看,她说:“我不懂计算机,但是你这个很有前景啊!加油干!”
接着我就继续实验,随着我对自己的框架越来越熟悉,在实验中我加入了不同数据集:
实验建议
用了几个月CycleGAN,我学到了以下几个小技巧:
正如CycleGAN最初的论文中说的:“在训练数据上转换比在测试数据上更吸引人。”所以在很多情况下,我用训练数据的子集进行推理,我的目标并不是泛化,而是创造吸引人的艺术。
通常,我在较大的数据集上开始对模型训练,然后在较小的子集上进行微调。这里就是一个例子:这些图片是在一个风景模型上生成的,之后再日本诗集封面的模型上微调、
在模型训练的时候有必要查看仪表板。CycleGAN的偏好设置中可以设置展示频率,我设置的比较高。这一过程对我来说就像在冥想——盯着visdom的UI界面,随着损失函数的变化而呼气吐气。
随着训练,结果变得越来越有趣,增加了检查点保存的频率。
将实验中所有的参数保存下来,之后还能重新创造。
在推理过程中,目标图像不会影响生成图像的样子。这并不意味着你不需要关心目标集中有什么图像。记住,你有两个生成器,不要忽略第二个。
默认情况下,CycleGAN使用的实例规范化和batch尺寸都为1。但是一旦你学习了规则,就可以不受这个值的限制。如果你使用了批规范化,并且batch size大于1怎么办?
另一项值得运用的技术是CycleGAN chaining:训练一个模型,然后用其结果去训练另一个。
下方的图像是上述两条tips的结果展示。我用了鲜花照片数据集和人像素描数据集。第一个模型用批规范化在两数据集之间进行灰度迁移。第二个模型对第一个模型的结果上了色。
要注意额外的结构,尤其当在补丁上训练时。我最初在食物和静物素描之间进行转换的模型,大多数情况下都将静物变成了粥,所以一定要花点时间处理训练数据集。
另一方面,我的水彩老师曾经总说:“其他的事情交给媒介工具做就好。”素描只提供简单的基础架构,之后的工作就交给网络了,我只是对#brushGAN工具包进行调整。(该工具包含有保存过的训练模型和用作输入的数据集等等)
工具使用
目前为止,我们已经谈到了收集数据和开始利用数据。现在我们要谈谈工具的使用。
无论你选择哪种神经网络创造生成性艺术作品,深度学习的设置都差不多。我最初的设置是在AWS上进行的,虽然它在计算方面比较便宜,但是存储问题比较令人头疼。现在我有了自己的服务器:一个GTX 1080 GPU、一个275GB的SSD和两个1TB的HDD。
接着是超参数,其中最重要的就是图像尺寸。CycleGAN通过设置可以对图像进行切割,但是可能达到的最大分辨率取决于你的硬件。在我的GTX 1080上,最大分辨率可以达到400×400。
数据
不要忘记数据集!训练深度学习网络,一定需要大量数据。很多AI艺术家用网络抓取的方法获取数据,但是我决定用自己的数据集,比如自己的照片或绘画作品。这样做有几种好处:
这样你的艺术作品会有一致性。
无需担心版权问题。
不用过多处理就能得到高分辨率图像。
只需一台相机就能轻松创建有丰富色彩和结构的数据集。
另外,我使用的数据机构和处理过程如下:
通用预处理:从手机上下载并调整照片
数据集构成:根据图片中的物体、内容、颜色和结构对它们进行区分
三种存储类型:
远程存储(例如Flickr这种云服务);
HDD:对未使用的数据集和权重进行长期存储;
SSD:对数据集和权重进行中短期存储。
针对GAN的批处理:我使用的是Jupyter notebooks,可以进行图像切割、canny边缘检测、图像分类等等。
结语
目前,CycleGAN已经成为我艺术创作中的重要部分,即使选择新的GAN类型进行实验,CycleGAN也是生成图像的重要工具。下面是我用CycleGAN提高SNGAN输出效果的结果:
关于安装CycleGAN,我是用的是这一教程:github.com/junyanz/pytorch-CycleGAN-and-pix2pix,它非常简洁。
对我来说,这项实验最棒的部分是它们让我的视觉视野更开阔了,能欣赏到更多色彩和结构,给予我更多灵感。
全部0条评论
快来发表一下你的评论吧 !