用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

oXiRiShi 2019-03-13

先来看下效果:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

上图是小编在甘南合作的米拉日巴佛阁外面拍下的一张照片,采用风格迁移技术后的效果为:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

一些其它效果图:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

下面进入正题。

近年来,由深度学习所引领的人工智能(AI)技术浪潮,开始越来越广泛地应用到生活各个领域。这其中,人工智能与艺术的交叉碰撞,在相关技术领域和艺术领域引起了高度关注。就在上个月,由电脑生成的艺术品在佳士得(Christie’s)的拍卖价竟高达43.25万美元,证明人工智能不仅可以具有创造性,还可以创作出世界级的艺术品。

早些时候,有些人坚信艺术的创造力是人工智能无法替代的,艺术将是人类最后一片自留地!这不,没过多久,这片唯一的自留地也逐渐被人工智能所取代。

在这各种神奇的背后,最核心的就是基于深度学习的风格迁移(style transfer)技术。我将在这篇博客带领大家学习如何使用Python来快速实现图片的风格迁移。阅读完本博客后,相信你也能够创造出漂亮的艺术品。

1. 什么是图片的风格迁移?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

所谓图片风格迁移,是指利用程序算法学习著名画作的风格,然后再把这种风格应用到另外一张图片上的技术。

举个例子,见上图。左边是我们的原始图片(也称内容图像):小编在苏州甪直古镇的一座小桥上拍下的一张照片。

中间是我们的风格图片:挪威表现派画家爱德华·蒙克的代表作《呐喊》(The Scream)。

右边是将爱德华·蒙克的《呐喊》的风格应用于原始图片后生成的风格化结果图。仔细观察,图片是如何保留了流水、房屋、房屋在水中的倒影,甚至远处树木的内容,但却运用了《呐喊》的风格,就好像爱德华·蒙克在我们的景色中运用了他高超的绘画技巧一样!

问题是,我们应该定义一个什么样的神经网络来执行图片的风格迁移?

这可能吗?

答案是:可以的。我将在下一节简单讨论如何基于神经网络来实现图片风格的迁移。

2. 基本原理

Gatys等人在2015年发表了第一篇基于深度学习的风格迁移算法文章,原文链接为https://arxiv.org/abs/1508.06576,随后文章收录于2016年的CVPR顶会。

有趣的是,他们提出了一种完全不需要新网络架构的风格迁移算法,其使用的网络构架是在前人的VGG19基础上稍加改造而成的,而且网络参数也使用预训练(通常在ImageNet上)网络的参数。我们来看下它的原理:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

我们知道,卷积神经网络(CNN)具有很强的图像特征(feature/representation)提取能力,如上图所示。

对于内容图片,深层网络(d和e)提取的是高维特征,同时也丢弃了细节信息;浅层网络(a, b和c)提取的是低维特征,图片的细节大多都保留下来了。

对于风格图片,通过包含多层的特征相关性(Gram矩阵),可获得多尺度图像风格的重构,捕获其纹理信息。这样构建的网络可以忽略图像的具体细节,保留风格。

为了将内容图片和风格图片融合在一起(见下图),我们应该使风格化结果图(初始为一张白噪声图片)的特征同时与内容图片和风格图片的特征之间的距离最小化,最终获取我们所需的风格化结果图。

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

因此生成目标图片的损失函数可定义为:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

其中α和β分别是内容图片和风格图片的特征所占的权重,通过最小化这个损失函数就可以获得我们想要的结果。来看个动态示意图:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

值得注意的是,这里优化的参数不再是网络的权重ω和偏差b,而是初始输入的一张白噪声图片。

虽然上述方法可产生非常漂亮的风格迁移效果,但是速度很慢。

2016年,Johnson等人基于Gatys等人的工作,提出了一种速度可提高三个数量级的风格迁移算法。虽然算法的速度很快,但最大的缺点是不能像Gatys等人那样随意选择你的风格图片。针对每张风格图片,你都需要训练一个网络来重现这个风格。一旦网络模型训练好之后,你就可将它应用于你想要的任何内容图片了。

这篇博客我们将使用Johnson等人的方法,其算法实现和预训练模型可参考https://github.com/jcjohnson/fast-neural-style。

3. 基于OpenCV的快速实现

下面利用OpenCV来快速实现图片的风格迁移,我将其封装成一个叫style_transfer()的函数,其使用说明可参考函数内部的注释。目前只有11个预训练模型可用

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

来测试一下:

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

从运行结果可知,在CPU上,一张图片的风格迁移所花的时间大概也就几秒。如果使用GPU,完全可以实时对视频/摄像头进行风格迁移处理。

4. 目前的相关进展

自Gatys等人第一次(2015年)实现基于深度学习的风格迁移以来,风格迁移技术仍一直在发展,如今在速度和质量上都有了很大提高。目前的一些进展可以通过下面的链接来了解:

  • https://github.com/jcjohnson/fast-neural-style
  • https://github.com/DmitryUlyanov/texture_nets
  • https://github.com/luanfujun/deep-painterly-harmonization
  • https://junyanz.github.io/CycleGAN/

他们的一些作品:

  1. 风格迁移

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

2. 外来图片的融合

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

3. 图片季节的变换

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

4. 图片背景的虚化

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

5. 角色互换

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

以上就是本文的全部内容,希望对大家的学习有所帮助。如果觉得文章不错,动手转发支持一下哦!

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

pytyhon学习资料

用Python生成的艺术品竟高达43.25万美元,画师以后会不会失业?

python学习资料

相关推荐