如何让AI成为梵高?

来源:互联网 发布:淘宝店铺设置多个客服 编辑:程序博客网 时间:2024/06/12 01:04

译者按:将一张普通风景照片迅速变为大师笔下的画作,神奇的Prisma在推出不长时间后便迅速席卷业界,成为又一个互联网“爆款”。作为一家同样致力于图像识别、处理的技术公司,我们并不打算跟风去赚取眼球,但出于对好奇心,我们还是进行了相关的研究和开发,并把结果放入到小程序中分享出来。这篇文章即是Prisma背后的技术原理,转自Christopher Burger博士私人的博客。我个人觉得原理解释的比较清楚,所以也花点时间挑选主要部分翻译出来,与大家分享。个人能力有限,如果有翻译不周的地方,欢迎私信交流。

另:他在文中的提及的DeepArt即是该技术的真正开创者,Prisma即受此启发而来,原理都是一样的。


下围棋和生成让观众兴趣盎然的艺术图像是两个很难教给计算机人工智能的任务,然而AlphaGo和Deepart两个系统都证明了它们可以很好的完成教给他们的事。同时,两个系统都碰巧依赖卷积网络,于是我决定写下这篇关于此技术的文章。

如何把一张图片的风格融入到另一张图片中?

DeepArt创始团队搭建了这样一个系统:可以将这样的两张图片:一张 是艺术作品,比如著名的绘画;另一张是任意的照片,然后通过一种有趣的方式输出成一张图片,一张混合了原始照片的内容与绘画风格的新图片。用deepart团队的说法如下:

图像合成的方法是通过找到一副图像同时匹配照片的内容和艺术图像的风格。虽然源照片的全局布置被保存,颜色和局部的结构这些组成全局场景的要素则由艺术图像提供。这有效的赋予了照片艺术品的样式,既合成图像的外观与艺术品相似,即使它显示了与照片相同的内容。

接下来,我现在将解释deepart团对怎么实现这点的。为了让大家更好的理解,我需要先花点时间,介绍一些卷积网络的知识。

卷积网络


资料来源:维基媒体

卷积神经网络(或简称为卷积网络)是人工神经网络的一个子类,它尤其适合用图像作为输入。一个卷积神经网络的输出可以是一个分类的结果(例如“这幅图像包含机器人”),或者一副或多幅图像(例如输出图像是源输入图像的降噪或去模糊版本)。


运用MLP的算法进行图像去模糊的结果。(MLP是另一种神经网络)

卷积网络像其它人工神经网络一样,包含一些参数。这些参数是通过获得最优期望值(比如物体检测,能够告诉图像包含机器人或者香蕉)的训练(比如调谐值)得到的。卷积网络也同样用前馈方式逐层操作。换而言之,一个输入图像被顺序地发送入网络的各层中,在最后一层输出结果图像。每一层有一组在网络的训练过程中被计算(训练)出来的参数集,这些可训练的参数定义了每层滤波器的功能。一副图像经过层的滤波器后产生的多个滤波图像称之为特征图。这些特征图本身是图像。它们中的每一个都表示了源输入图像的一些特征(边缘,角落,轮廓,物体部分)。

通常卷积网络在更深的层中均比前面的层包含更多的特征图,但是特征图随着网络的变深而变得越来越小。

物体识别

特征图于是包含了输入图像的某些特征。重要的是要理解对于每个滤波器的角色是没有严格定义和描述的;同样,我们也很难确定特定的特征图捕捉到了输入图片的哪些特征。

通常这些特征在经过一定数量的网络层之后会越来越抽象。举个例子:当卷积网络被训练用于物体识别时,越是深层的特征图就越关注在特定图片中指定对象的存在,而不是特定的图像像素的值。作为对比,在第一层的特征图检测到诸如边缘这样相对简单的特征。

此外,后几层检测到的特征的尺寸相对于第一层更大。这缘于滤波操作本身的原因:第一层能检测到的特征最多与滤波器一样大(这个仅仅是几个像素的大小)。但是第二层能检测到的特征几乎是第一层的两倍。这个尺寸与域的大小相适应。我们呆会还要再回到这点。

近些年来,用卷积网络获得的物体检测和定位已经越来越好,挑战也变得越来越困难——比如关于ImageNet的挑战需要分辨1000类不同的物体。

imagenet 2014的胜者是一个带有19层以及相对少的滤波器的深层卷积网络。这个网络被称为VGG,它是DeepArt系统的基石。


利用卷积网络进行纹理合成

在一篇论文里,DeepArt团队的成员介绍了如何用被训练了物体识别的卷积网络用于其它的任务:生成人造纹理。一张照片作为源图像,合成一张与它相似的人工图像。下面是两个合成生成纹理的例子:



来源:Bethgelab。左侧的图片是由右侧的图片自动生成的。这两张图片看起来非常像,但是整体布局已经没有了。

在Bethgelab可以找到许多令人印象深刻的合成纹理和它们对应的源图像的例子。一副纹理图像经常可以表示一个可以被重复的图案,比如沙子、纸、云、木头、钢筋混泥土等等。纹理图像的整体布局没有比在照片中的诸如著名地标的重要。

合成过程是选一幅仅带有随机噪声的图像,然后根据一些标准通过迭代更新这个噪声图像直到和原图像足够相似。

这个标准的目标是保留颜色和局部结构这样的方法来抓取相似度,而不是保留图像的整体布局。DeepArt团队说的非常好:

纹理是预定义固定的,所以纹理模型需要和空间信息分离。


这个团队所做的就是利用VGG网络的不同特征图之间的关系(对物体识别进行训练),并用这些关系作为标准:

概况统计量是放弃特征图中被给予不同特征关系的空间信息。

我们希望删除空间信息,但是保存纹理信息。问题是一个特征图是(非线性)一个滤波器版本的输入图像。所以它会包含输入图像的空间信息。我们如何才能做到去除空间信息?计算一个去除空间关系层的特征图之间的关系(两个特征图的关系是一个单一的值,所以空间信息需要去除)。作者提取了一个层中所有特征图的关系,得到一个大小为N*N的Gram矩阵,其中N是某层的特征图的数量。

于是迭代更新过程修改源噪声图像直到它的Gram矩阵接近于这个源图像生成的Gram矩阵,结果是该迭代更新过程可以通过反向传播方便地完成。这便是标准的训练神经网络的方法,除了这种情况中仅更新输入图像(而不是网络的参数)。它也证明,这个过程可以生成与源图像惊人地相似的纹理。




第一排:原始图片。第二排:仅用第一层进行重建。由于第一层中的小的接收域尺寸,重建具有很小的结构。第三排:使用更多(更深)层的重建。由于更大可容纳区域,空间信息在更大范围内被保留。

剩余一个问题:应该选择哪一层或哪几层计算Gram矩阵?事实证明,选择第一层(最浅)不能导致令人满意的结果。最好的结果是用包括较深层的多个层。这个效果可以从两个方面解释:

更深的层从输入图像中抽取更多的抽象特征。

得益于增加相应域的大小,较深的层能抽取越来越大的特征。

用卷积网络合并内容和样式

接下来,这个团队对于之前介绍的纹理合成增加了一种额外的步骤。对于纹理合成,目标是近似由VGG网络特征图生成的Gram矩阵,得到一个样式相似内容不同的图像。现在新的目标是生成与一张图像有相同的样式,但是和另一幅不同的图像有相同的内容的图像。除了现在的度量不同之外,近似图像内容与纹理合成方法类似地进行:目标是直接近似VGG网络的深层中的值。该算法可以总结如下:

将艺术图片输入VGG网络,计算和保存Gram矩阵的G值.

将照片输入VGG网络然后保存特征图F值。

生成白噪声图像。通过反向传播,迭代地更新这个图像,直到它生成的特征图和Gram矩阵分别接近F值和G值。

因为通常不可能找到完全匹配G和F的图像,所以需要权衡:接近G或F,哪个更重要?如果更加强调Gram矩阵G,则结果是更接近匹配艺术图像的风格的图像。如果更多地强调特征图F,则结果是更接近匹配照片内容的图像。下面的例子说明了这种权衡。


它是如何工作的?


来源。同样的脸,在不同的光线条件下的效果(是的,这些真的是一张脸!)。在所有的四个图像中,内容是相同的,但是外观/风格是不同的。这表明了能够在对象识别中区分内容和外观/风格的重要性。

正如我前面所说,神经网络中每层的确切功能很难定义,因为网络作为一个整体被训练,并且根据其参数,不同的层将具有不同的功能。看起来,被训练用以识别对象的卷积网络允许以图像内容和图像风格的分离的方式在内部表示图像:Gram矩阵代表图像风格,特征图值代表图像内容。他们在训练过程中自动学习这种可分离的表示法。这就是为什么可以控制图像的风格,而不会太严重的影响到内容的原因。

这是个令人惊讶的结果,有人可能会想知道为什么会这样。作者给出了可能的解释:

总而言之,一个被训练来执行生物视觉的核心计算任务之一的神经网络,可以自动学习内容与风格分离的图像表示法。这是非常令人着迷的。它的原因可能是当学习对象识别时,网络必须对保持对象特性的所有不同的图像得出一致结果。化简图像内容的变化和其外观的变化的表示法对于该任务将是非常实用的。因此,我们从内容抽取风格的能力,乃至我们创造和享受艺术的能力,成为了我们的视觉系统强大的推理能力的一个非凡的证明。

让我进一步解释:有许多变化(如光照变化)改变了图像的外观,而不影响其内容(仍是同一个对象)。因此,任何有利于识别图像对象的系统都被迫能够将内容与外观区分开。而系统到底是计算机系统(例如卷积网络)亦或生物系统(例如,人类大脑)则变得无关紧要。这是一个相当有趣的洞察!

有趣的尝试:系统反向

使用DeepArt的demo,我首先在论文中复制结果:我使用了Tübingen的Neckarfront的照片,并结合它与梵高的“星夜”,结果类似于DeepArt的团队提出的结果。然后,我使用的系统相反:我使用内卡河的照片作为艺术形象,梵高的画作为照片。结果是一个图像,保留了绘画的内容表示,使用在内卡河畔的照片中发现的颜色和小结构。我们看到系统在这种情况下也能如预期的那样工作。


从左上方开始,顺时针:图宾根的Neckarfront的照片。梵高的“星夜”。DeepArt的组合,使用梵高的绘画作为这件艺术品。DeepArt的组合,使用图宾根的照片作为艺术品。

下一步是什么?

Matthias Bethge告诉我,Leon Gatys成为Adobe的新研究员之一,与Adobe的合作正在将风格分解成不同的风格特定方面。期待看到更多的结果!

资料来源:ImageNet。用对象类注释的图像。目标是能够自动注释图像。

原创粉丝点击