对于艺术创作来说,有的人会使用刷子,有的人会使用铁铲,有的人会选择钢笔。
而有的人,比如说我,选择使用神经网络。
我是一个艺术家,同时也是一位开发者。艺术和软件在我的生活中曾经是两个平行的轨道,直到我发现了GANs(Generative Adversarial Networks):在一次偶然中,我尝试用Processing和计算摄影学来生成艺术,这将我所有的艺术作品都变成了模拟量。
自从2014年GANs被发明以来,机器学习领域关于这一技术生产了大量有深度的,有技术性的作品。但是今天我想说的不是这种作品。比起这个,我更想大致分享一下,为什么说GANs是一个绝妙的艺术工具,以及我创造的用GAN来拓展艺术创作的方法。
但是首先,请先看一下我的艺术创作,作为具体的范例来了解我在讨论的是什么:
如何把GAN当做一个艺术家/评论家的游戏
所以什么是GAN,以及为什么它对艺术家特别有吸引力?
我们可以把艺术创作想象成一种游戏。这个游戏的行为在一个艺术工作室内进行,现在有两个玩家:一个评论家和一个学徒画家。学徒画家的目标是在不抄袭的情况下,以大师的风格生成画作,评论家的目的是评判这幅作品是来自于学徒还是大师。
一轮又一轮的游戏之间,学徒和评论家相互竞争。当学徒变得更擅长模仿大师画作的时候,评论家也被迫变得更加擅长从学徒的画作里区分大师的作品,而当评论家变得越来越好的时候,学徒的模仿技艺也必须被提高。
GAN是一个模仿这个过程的神经网络结构。评论家的角色由一个辨别器网络D来扮演,学徒画家的角色则是由一个生成网络G来扮演。很多轮游戏以后,生成网络模仿得越来越像大师 —— 也就是你的输入数据集。
而在这个游戏中,你的角色是什么呢?你是调整游戏规则(网络里的超参数)的人,也是一个监管者。作为监管者,你必须从GAN的输出中做出选择,因为它会生成大量不同构图,颜色,质感的组合,和用来训练的数据集可能有很多的不同。这项工作并没有表面上听起来纳闷轻松 —— 有时你会发现自己被有趣的图像所淹没,想留住每一幅。
但是用GANs来工作,你不仅会感受到兴奋快乐。使用GANs的过程就像是一场关于新模型和新数据集的冒险。一定会有惊喜的元素出现在你面前,一定会有一些不可预测性激发、解锁、创造了特别的东西,这一点不像其他数字化工具 —— 它们远远超越了instagram的滤镜和普通的风格转换工具。
为什么要用CycleGAN
艺术生成可以运用很多不同的深度学习技术。
最受欢迎的有:
1.GaN/DCGAN,原方法如下:
2.神经网络风格转换,把一张图片的风格运用到另一张的内容上:
3.配对图片转化技术,比如像Pix2Pix,需要一个原图像和目标图像的配对数据集:
4.未配对的图像转化技术:比如说CycleGAN:
所以我为什么唯独选择了用CycleGAN呢? 简而言之,CycleGAN可以帮助你训练一个网络,这个网络可以把一组数据集(输入域)中同样风格的图片转换成另一组数据集(目标域)里纹理的图片。这是非常重要的;就像计算机视觉的先驱Alyosha Efros曾说过的那样,我们“还处于纹理的阶段”
我最开始因为一个工作项目用了CycleGAN,并深深迷恋上了它的风格模仿能力,以至于我想转而用它来生成艺术图像。CycleGAN给予了我们一种处理相对较小尺寸的高分辨率数据集的能力,模型训练得很快 。
我的第一个项目是把我的食物和饮料照片转化成我的静物画和花卉素描作品。每个数据集都由300到500个高分辨率图片组成。整整一个月,我做了各种实验,大部分都是围绕输入的数据大小。我花了好几个小时筛选输出图像,放上我觉得看上去有趣的图片。
寿司卷?黄金比率?卡莎·马列维奇(马列维奇风格)?......
我的花卉画作被转化成了迷幻零食,我的饮料照片变得更加有趣了——我的视觉使我重新认识了它们。最后,怀着不安的心情,我和我的美术指导分享了这些画。她的反应是:“虽然我对软件一无所知,但你对此很着迷!继续加油!“
所以我继续探索。当我变得对框架更加熟悉的时候,我继续用其他的数据集来做实验——花卉写实变成花卉摄影,风景写实变成风景摄影,以及更多。有一些实验失败了,有一些非常成功。
实践建议
这里有一些我从几个月CycleGAN实验中学到的小技巧:
1.像原CycleGAN论文中观察到的那样,“训练集图像的转化往往比测试集的更吸引人。”所以在很多情况下,我用训练集的子集来做推断 ——我的目标不是一般化,我的目标是创造吸引人的艺术。
2.我常常用一些较大的数据集来开始我的初始化训练,然后在较小的数据集上调整他们来取得某种特效。这里是一个例子:这些图片是用风景模型产生然后用日本诗集封面进行调整的。
3.模型训练的面板值得一看。CycleGAN的实现允许你设置显示的频率,所以我把它设得很高来观察有趣的意象。这个过程对我来说像是冥想——从visdom的界面开始,循环损失函数。
4.当训练的进程和结果变得越来越有意思时,提高检查点的保存频率。
5.保存所有的实验数据,这样以后可以重现(然而,说实话,即使不能重现一些结果也不是大问题——新的实验带来新的惊喜)。
6.在推论过程中,一些目标图像不会影响生成图像的外观。但这并不表示你可以对把什么图片放进目标集毫不关心。记住,你有两个生成器。不要闲置其中的任何一个—— 否则你可能会发现一些有趣的多无,比如说当生成器尝试再生成输入图像时。
7.在默认设置中,CycleGAN的参数设置为实例正则化和批处理量大小为1。但是一旦你学会了这些规则以后,你就可以改变它们。万一你想用批量正则化和更大的批量大小呢?
8.另一项值得探索的技术是CycleGAN链接:训练一个模型并使用该模型的结果训练另一个模型
下面的图片是最后两个项目的图示 - 我使用了一套花卉和一套人像素描。第一个模型在灰度级中使用批量标准化的方法,在这两组素描图画之间进行转换。下一个模型对第一个模型的结果进行了升级和着色。
注意过度纹理,特别是在修补补丁时。我最初对食物做的实验很糟糕,训练出来的结果是将食物中的大部分变成了粥(由于过度纹理导致);所以有必要花一些时间去训练训练数据集。
另一方面,正如我的水彩老师曾经说过的那样:让中介去做。确实是这样-我的草图只是提供了基础,然后我让GANs完成接下来的工作;我的要求不高,只是不断调整#brushGAN工具包(由保存的训练模型和输入的数据集等组成)。
这让我想到了下一点-在磁盘空间允许的情况下,保存尽可能多的模型。并将这些模型作为作为个人风格的转变器。
请将本文作为探索CycleGAN和其他GANs的跳板。这些提示和要点只是粗略的指导方针,在个人的探索旅程中,你会根据自己所拥有的数据集,个人艺术的敏感度和目标形成属于自己的风格。最重要的是要注意GAN生成图像的质量,从而及时调整训练过程。
使用的工具
到目前为止,已经介绍了一般的流程:收集一些数据,并开始用它来训练模型。现在来谈谈所使用的这些工具。
无论你为衍生艺术选择什么神经网络,深度学习的设置或多或少都是一样的。在过去一年左右的时间里,我所有的工作都是在我自己构建的服务器上完成的。
我的原始设置在AWS上,虽然它在计算能力方面更便宜,但存储是一个令人头疼的问题 - 忘记断开卷之间的连接和从S3与卷之间转移数据浪费了我大量的事件。现在我运行了自己的服务器,并配备了GTX1080 GPU,275GB SSD(固态硬盘)和两个1TB(机械)硬盘,虽然存储空间不断耗尽,但一想到拥有对存储的控制,我认为也是值得的。
然后是超参数,其中最重要的是图像大小。CycleGAN设置允许指定图像裁剪,但最大分辨率取决于硬件。在我的GTX1080上,训练的最大值为400x400。通过理论推断,这一数值可以更高,但这会影响到结果的准确性。
为了使第一次实验变得简单(估计大家只想使用CycleGAN的默认设置)其中图像被加载并重新缩放到278X278并随机裁剪为256X256。我有在1024/800/400规格上训练的模型 - 有时从头开始,有时从某一个尺寸开始,然后随着训练的进行而改变它。
数据集是十分重要的
不要忘记数据集!众所周知,要训练任何深度学习网络,需要大量数据。许多AI艺术家使用网络抓取来获取数据集。但是我反其道而行之,我决定使用自己的数据集,即我的个人照片和涂鸦/绘画。这样会有明显的优势:
将在风格和主题方面为你的照片绘画等赋予独特性和凝聚力。
无需担心版权问题。
无需大量预处理即可获得高分辨率图像。
通过使用相机可以轻松创建特定颜色和成分的数据集。
关于我的数据库的组织结构也值得说几句。这是我正在使用的数据结构和处理渠道:
常规预处理:从智能手机加载和调整照片
数据集组合:根据主题/内容/颜色/纹理等对照片进行排序。
三层存储组织结构
remote(像Flickr这样的云服务):用于存储原始图像。Flickr适用于团队,它提供了一个不错的编辑器和无限的存储空间。
HDD:用于长期存储未使用的数据集和权重。
SSD:用于数据集和权重的短期和中期存储。我的SSD分为几个文件夹,包括原始图像的通用存储库和预处理图像的GAN特定存储库。
特定于GAN的批处理:我在数据集存储中使用Jupyter笔记本,它具有用于方形裁剪的实用程序,用于精确边缘检测(用于Pix2Pix)和排序图像等。
从何而来?
此时,CycleGAN已成为我的艺术家工具包的重要组成部分。即使我开始尝试新型的GANs,CycleGAN仍然是生成流程的一部分:现在我将GANs的输出链接到CycleGAN,以便与传统的CV技术相结合,超分辨率和着色。以下是使用CycleGAN将SNGAN的输出从128x128增强到512x512的示例:
等待安装CycleGAN的过程是一个休息的好时机。我一直在使用CycleGAN团队的PyTorch(它也可以以相同的价格提供Pix2Pix),由于它拥有简洁的代码、完整的文档、良好的结构和出色的训练界面这些特性,使用它简直是一种享受。
对我而言,这些实验最大的价值是它们使我的视觉世界更加丰富,让我更多地观察和欣赏颜色和纹理,让我产生新的想法和新的项目,并激励我更多地绘制和拍摄。
相关报道: