使用Prisma进行处理过的照片
前段时间在网络上流行的Prisma软件很多人都接触过,我们可以使用它让一张普通的照片充满抽象艺术的风格。实际上,Prisma是基于“卷积神经网络”这个技术来进行图像处理的。不过,能不能用类似的手段使计算机可以自动生成图像?这些图像可以被算作艺术品吗?
Prisma背后是百万修图民工?
随着技术的发展,进行图像处理的手段越来越多。使用类似Prisma的图像处理软件,我们只要动动手指,计算机就会自动给照片加上我们想要的效果。不仅节省了时间,也给图像处理带来了许多乐趣。
上图是原图,下图是Prisma处理后的图像。如果自己用PS修图,想要达到这个效果需要花不少功夫。
之前有一段时间,Prisma处理图像的时间变得特别长。因此有人调侃说“人工智能什么的都是假象,Prisma实际上是一个血汗工厂,里面有一百万民工做苦力没日没夜地给我们修图”。这当然是个笑话。那么,是什么原理“解放”了大家的双手,让计算机自己获得了处理图像的能力呢?
Prisma使用的技术被称为“卷积神经网络”(Convolutional Neural Networks,简称CNN),它多用于图像处理领域,比如说手写字体识别和人脸识别等等。CNN具体的细节比较复杂,这里只简要进行介绍。
值得一提的是,对于计算机来说,所谓图像只是一个由带有RGB值参数的点组成的矩阵而已。
首先,什么是“神经网络”呢?我们可以用上面那个工厂的例子做一个比喻。一个神经网络就像一座大工厂的流水线,里面有许多“部门”,每个部门里的工人专门做一类工作,然后将处理完的半成品输送到流水线的下游;这个流水线中的每个工人对应一个神经元(Neuron),每个部门对应一个神经层(Layer)。
其次,什么是“卷积”呢?按照上面的比喻,我们可以把它理解为工人们的一种工作方式。在一个图像处理“工厂”中,这种工作方式和普通的工作方式有着这样的区别:工人们一般的工作方式是一个一个地对图像中的每一个像素做单独处理;当工人们使用这种工作方式时,他们就不会对每一个像素逐一进行处理,而是“一块一块”地进行处理。使用“卷积运算”这种工作方式的工人处理过后的图像的效果更加均匀,并且有助于他们对图像中的细节——比如形状或色块进行识别。如果只看单个像素,我们也很难辨别整个图像呈现的是什么。
卷积运算示意图。从中可以看出,卷积处理的对象是一个一个矩阵(黄色区域),而不是单个的像素点。
CNN中卷积运算的视觉化示意图。图中进行了两次卷积运算,意味着存在两个卷积核——红色框的卷积核处理像素RGB值中的R值,绿色框的卷积核处理RGB图像中的G值。(只是推测,总之两个卷积核分别提取图中不同的信息)
在具体的情况下,那些工人依照什么进行操作呢?一般的工厂里都会给不同种类的工人配上一本相应的操作指南。在CNN中,这些“操作指南”就是卷积核。卷积核类似于一个给定的参数(也是某个矩阵),给定不同的卷积核对于同一幅图像进行卷积处理得到的结果也就不同。
在这个表格中,我们可以看到不同的卷积核(Fliter)对上述图像的卷积影响。如图所示,我们可以通过改变卷积核的值完成诸如边缘检测、锐化等操作。这意味着不同的卷积核能够提取到不同的图像信息,例如边缘、曲线等等。
最后,我们就可以把CNN比作一个由各种使用“卷积运算”的工人组成的一条流水线。这种流水线神奇的地方在于:它不需要工厂提前给工人配给操作指南。也就是说,这种神经网络不需要设计者预先给定卷积核,计算机会通过对素材库的层层卷积运算得到恰当的卷积核。这实际上就是所谓“深度学习”的过程。这不只是一种节省人工的做法,很多时候CNN会通过学习获得超越设计者的能力。
“深度学习”的例子。如图所示,在一开始,CNN只能提取物体边缘这类基础信息;之后能逐渐提取五官(实际上是边缘的组合),最后可识别整张人脸。
这是一个进行数字识别的CNN的完整结构。第一卷积层(Convolution Layer)有6个卷积核,第二卷积层有16个卷积核。我们能看到,随着层数的增加,图像(feature map)面积越小,即保留的原始像素的信息就越少;但是相对的,CNN提取的特征信息增加了。(feature map数量变多,每一个feature map对应一个特征。)
如果把刚才图中卷积层中的每一个图像(feature map)“摞起来”,我们就会得到这张立体图——立方体的底面不断缩小,但是深度不断增加。其中,立方体的深度=卷积核的数量。
比如之前的AlphaGo,如果它的代码是人类预先写好的,那么它的设计者一定是精通围棋的大师。但事实上,它的设计者只是一群围棋爱好者,AlphaGo的围棋能力是其通过大量试错自学而来的。
再比如,我们希望让计算机具有识别男人和女人的能力,这对于人类来说轻而易举,可要将这个能力用代码直接“翻译”出来是极其复杂的,而CNN的层层运算过程可以使得它由浅入深地获得这个能力。
图中显示了传统算法(最左)和神经网络算法(最右)的区别——传统算法依赖设计者自己编写代码,而神经网络算法可以自己循序渐进地提取越来越复杂的特征。
了解CNN之后,理解Prisma的原理就很简单了。显然,使用Prisma的用户会涉及到两类图像:一类是待处理的原始图像,一类是目标图像——用户希望自己的照片也能拥有和目标照片相似的风格。
因此,我们可以把Prisma比作有三条流水线组成的大工厂。一条流水线用来识别用户输入的待处理图像的内容信息,另一条用来识别目标图像的风格信息。识别完毕之后,第三条流水线接着处理这两条流水线输出的图像,并把它们“混”在一起,最终得到源于目标待处理图像,具有目标图像风格的输出图像。
上半部分为风格识别,下半部分为内容识别。(fromA Neural Algorithm of Artistic Style, 2015)
最后输出的不同风格的图像 (from A Neural Algorithm of Artistic Style, 2015)
计算机能自己生成艺术作品吗?
显然,Prisma并不能自己“生成”图像,它只是一个图像处理软件,如果用户不提供待处理的照片,那么它也就无法输出经过处理后的图像。不过使用类似的原理,我们也可以设计出能自动生成图像的神经网络。
生成性对抗神经网络(Generative Adversarial Networks,简称GAN)就可以自动生成输出图像,不需要用户提供待处理图像。GAN中的“Adversarial”也就是对抗性是使其能够自动生成图像的核心。GAN中有两个CNN单元,一个是生成单元,另一个是识别单元。
识别单元(Discriminator)与生成单元(Generator)的对抗。其中,GAN不涉及“风格的模糊程度”(Style Ambiguity) (fromCAN: Creative Adversarial NetworksGenerating “Art” by Learning About Styles andDeviating from Style Norms, 2017)
简单地说,它工作的大体流程是这样的:GAN生成图像的过程就是生成单元和识别单元不断“对抗”的过程,生成单元需要不断学习,试图“骗过”识别单元让其误认为自己生成的图像是来自于素材库的人类艺术作品。在不断重复这个过程后,那些骗过识别器的以假乱真的图像就是GAN的输出结果了。
上半部分为GAN生成的图像,下半部分为不涉及“风格模糊程度”参数的CAN生成的图像,本质上与GAN相同。(from CAN: Creative Adversarial Networks Generating “Art” by Learning About Styles and Deviating from Style Norms, 2017)
显然,这样生成出来的图像都是十分接近人类现有艺术作品的。然而,我们不会将那些只会模仿历代大师的人称作艺术家。艺术作品总是要体现出和现有风格的偏离,不能一味模仿,我们常把这称作“创造性”。当然,如果一幅图像和现有风格偏离太远,我们大概也不会认为这是艺术品——可能只是一幅无意识的涂鸦罢了。根据这种直觉,有一个团队改进了GAN的算法,以其为基础设计出了创造性对抗神经网络(CreativeAdversarial Networks,简称CAN)。
CAN生成的各种图像,似乎较GAN生成的图像更“自由”一些。(from CAN: Creative Adversarial Networks Generating “Art” by Learning About Styles and Deviating from Style Norms, 2017)
CAN大体上与GAN相同,但是生成单元不仅要骗过识别单元,还要“为难”识别单元”,让它没那么容易辨认出图像的风格。这样,最后输出的图像就不单纯是对已有风格的模仿,其中也带有对于已有风格的偏离。从画面呈现的角度上说,这可以被算作创造性。
测试中人类个体最偏爱的一些CAN生成的图像(from CAN: Creative Adversarial Networks Generating “Art” by Learning About Styles and Deviating from Style Norms, 2017)
团队把CAN生成的图像和一些人类创作的前沿艺术作品混在一起,然后挑选了一些人让他们辨认这些画作是否是人创作的。最后的统计结果表明,这些测试个体更倾向于判断CAN生成的图像是人类创作的。
被混在一起的人类艺术作品。实际上,这些作品显然缺乏代表性,并且与该团队挑选的CAN生成的图像有着较大差异,因此测试结果可能不那么可靠。(from CAN: Creative Adversarial Networks Generating “Art” by Learning About Styles and Deviating from Style Norms, 2017)
CAN生成的充满艺术气息的图像真的可以被称为艺术品吗?基本上所有人的直觉都会告诉自己——不能。但这是为什么呢?
在科幻作品中经常出现的人工智能
问题的关键在于这些神经网络生成图像的过程中,不论是CAN还是GAN,其本质都是CNN。上文介绍了许多有关神经网络运行的细节,我们知道CNN具有“学习”的能力,然而,这种所谓的“学习”的实质实际上是“试错”。大量试错使得CNN积累了大量数据,它能使用这些数据做出决策。但归根结底,这些能力只不过是数据分析罢了,最后还是会回到原始数据本身,它学不到“新”东西。
不说人类,猩猩在很小的时候都有学习新事物的能力。
拿印象主义风格识别举例,给CNN大量印象主义的代表作,它很快就能发现“这些画中很少出现轮廓线”,然后它会以此作为一个评判标准去识别风格未知的图像。但是人类不一样,我们在发现大量印象派作品都具有这个特征之后,会思考这种现象的缘由并得到答案——“原来是为了更好地呈现光的形态”。
但是,如果我们去“问”CNN中的某个神经元“为什么少画轮廓线”,他们会说“这是对上一层传过来的数据进行分析的结果”;然后我们就接着去问上一层“你为什么会得到你输出的数据”,它还是会说“这是对上一层传过来的数据进行分析的结果”......最后,当我们追溯到最初一层时,它就会说“因为原始的图像库就是这样的”。
对于CNN来说,它所选择的处理方式与它输出的结果全部来源于原始图像库,其余的它什么也不知道。
Pascal Dombis《Blue Screen of Death》,2014年。虽然计算机不知道自己在干什么,但是艺术家可以利用计算机和算法去创造自己的艺术作品。显然,人类艺术家才是这类作品的作者。
因此,判断一幅作品是否是艺术作品的关键在于其创作的过程上——艺术品需要其作者的创作意图。当然,现在有很多作者不愿意在作品中透露自己的创作意图,他们希望自己的作品成为一种客观的存在——客观的美,客观的有张力,客观的有价值等等。但显然,这些目的无法被还原为简单的图像上的特征——正如“更好的呈现光本身”不等于“轮廓线少+色块拼贴+色彩渐变+……”,不管+后面添加多少东西(图像上的特征)。
Robert Rauschenberg《床》,1955年。显然,除了是一张床,这件作品中还充满了“别的东西”。
至少直觉告诉我们,艺术作品不只是视觉上好看就可以,它还需要一些“别的东西”,而这些“别的东西”正是计算机所缺少的。
[编辑、文/flcl]
[本文由《时尚芭莎》艺术部原创,未经许可不得转载]
领取专属 10元无门槛券
私享最新 技术干货