Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

瓜瓜、罗然、笪洁琼、云舟编译

为什么说GANs是一个绝妙的艺术创作工具?

对于艺术创作来说,有的人会使用刷子,有的人会使用铁铲,有的人会选择钢笔。

而有的人,比如说我,选择使用神经网络

我是一个艺术家,同时也是一位开发者。艺术和软件在我的生活中曾经是两个平行的轨道,直到我发现了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,需要一个原图像和目标图像的配对数据集:

一个用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),由于它拥有简洁的代码、完整的文档、良好的结构和出色的训练界面这些特性,使用它简直是一种享受。

对我而言,这些实验最大的价值是它们使我的视觉世界更加丰富,让我更多地观察和欣赏颜色和纹理,让我产生新的想法和新的项目,并激励我更多地绘制和拍摄。

相关报道:

https://thegradient.pub/playing-a-game-of-ganstruction/

大数据文摘
大数据文摘

秉承“普及数据思维,传播数据文化,助⼒产业发展”的企业⽂化,我们专注于数据领域的资讯、案例、技术,形成了“媒体+教育+⼈才服务”的良性⽣态,致⼒于打造精准数据科学社区。

工程CycleGANGANs图像生成
5
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

边缘检测技术

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。 边缘检测是图像处理和计算机视觉中,尤其是特征检测中的一个研究领域。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

CycleGAN技术

GAN的一个变种

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

推荐文章
暂无评论
暂无评论~