“1秒”拥有大师的笔触/让世界大师们的风格“重生”——《A Neural Algorithm of Artistic Style》读后感

最近看了Leon A. Gatys、Alexander S. Ecker、Matthias Bethge三人合力撰写的《A Neural Algorithm of Artistic Style》,根据自己的理解在这里做一些记录。

前言

这是一篇非常有意思的论文,论文描述了一种“黑科技”,这个“黑科技”可以让实世界上那些著名画家的风格”重生“,并根据这些风格”画”出新的图片。运用**VGG19**进行深度学习,实现任意提供一张图片以及世界大师的图片,”黑科技“就能够把这张图片上套上世界大师的风格。

炫酷的“黑科技”

在介绍论文中的“黑科技”之前,想先让大家欣赏一幅优美的风景图。
德国内卡河河畔风景
这是德国内卡河河畔,这里风景优美,作为画师肯定都想用工笔讲其绘制出来,如果能够让那些世界大师都在这里画一幅带有他们艺术特色的画一定是“艺术界”的一大盛事。《A Neural Algorithm of Artistic Style》里的“黑科技”就可以实现这件事情。 如果我们想让梵高“重生”,并且让梵高坐在德国内卡河河畔,看着内卡河的风景,再画出一张带有“星空”风格的内卡河风景图,用“黑科技”来轻松完成——

同时,我们也想让毕加索也“重生”一次,按照他在《坐着的裸女》上的风格,在同一个地方画一幅内卡河的风景图,用“黑科技”来完成这个工作——

同样的,还可以让很多很多的世界大师都“重生”一次,而且让他们相聚在内卡河河畔进行一次艺术的交流——


内卡河在众多大师的风格下的“长相”

论文将这个“黑科技”叫做 style transfer

“黑科技”的NB点

“黑科技”的实质

其实从上面的这些例子中可以看到,所谓的“黑科技”其实是将我们想要表现的图片的内容(内卡河的风景)提取出来,然后将我们需要它展现的风格(各个大师的风格)也提取出来,然后将这两者进行融合,生成一幅新的图片。

使用神经网络中间层信息

回到神经网络的学习上来看,相较于传统图像处理方式中将图片信息中的没个像素点进行处理而言,神经网络不再是对每个像素的输入信息做处理了,而是图片上每一小块像素区域进行处理,这种做法加强了图片信息的连续性,使得神经网络能看到图形,而非一个点,这种做法同时也加深了神经网络对图片的理解。
具体在CNN中,神经网络中每一层都有一批“filter”,这些“filter”持续不断的在图片上滚动收集图片里的信息,每一次收集的时候都只是收集一小块像素区域,然后把收集来的信息进行整理,这时候整理出来的信息有了一些实际上的呈现。
这里用最经典的人脸识别的例子来展示说明。


人脸识别案例

比如第一层神经层通过“filter”处理后收集到了一些边缘信息。然后到将这些边缘信息传递到下一层,下一层中的神经网络从这些边缘信息里面总结出更高层的信息结构,比如说总结的边缘能够画出眼睛、鼻子等等。再经过一次过滤,脸部的信息也从这些眼睛鼻子的信息中被总结出来。最后我们再把这些信息套入几层普通的全连接神经层进行分类,这样就能得到输入的图片能被分为哪一类的结果了。
在这篇论文之前,CNN系列模型主要是实现目标检测与定位功能,也就是只用了最后一层神经层的信息结果,中间层提取到的信息并没有被用上。然而 “style transfer”则实现了将每一层神经网络提取得到的信息进行运用。

生成式模型

“style transfer”还有一个非常创新的一个点在于,之前对CNN系列算法都是实现目标检测与定位,也就是说大量的工作都是实现建立一个判别式模型,但是这篇论文中的这个“黑科技”实现的是新生成一张图片,也就是一个生成式模型。

“随心”生成新图片

“style transfer”技术还有一个非常让人惊叹的地方在于,新生成的图片可以根据自己的想法从两个方面来对最后的图像进行“制作”。一是通过对内容和风格之间的比重进行调整,二是通过取不同的风格(后文提到的style representation),实现同样两幅图片输入进这个神经网络,但是得到不同的效果图片。
下图是用瓦西里·康定斯基的《构图七》这一幅图的风格来对内卡河进行“随心style transfer”的不同的展现结果的结果:


“随心而作的style transfer结果”

一行一行的看,每一行都是基于同样的风格上,对内容和风格的不同的强调结果。
一列一列的看,每一列都是基于同样的强调效果下,不同的风格得到的结果。

“黑科技”的实现

前面对“style transfer”进行了大概的介绍,这一部分将从如何对图片内容和风格的提取、融合方法进行大概的逻辑梳理。

neural representation

The system uses neural representations to separate and recombine content and style of arbitrary images, providing a neural algorithm for the creation of artistic images.<

论文中在“style transfer”技术中用neural representation来实现分离和重构任意一张图片的内容和风格,再进行一下理解就是,这篇论文提出利用深度学习技术将一张图片的内容和风格进行分开建模,然后再将两部分信息进行结合。
neural representation中包括了两对概念,分别是content representation和style representation、content reconstruction和style construction。

We therefore refer to the feature responses in higher layers of the network as the content representation. <

这段话是对content representation的定义,正如在前文中提到的那样,神经网络所处的位置不同提取到的信息也不同,越高的层次的结果越关注图片的内容和整体信息的排列方式,相反的越低层次越关注于图像具体的像素信息。所以,当我们希望提取得到一幅图片的内容是什么的时候,我们只需要关注神经网络中高层次的神经元输出的信息。
所以,作者提出用高层次的feature responses 来作为content representation。
根据content representation中得到的信息来训练模型学习如何从一张随机白噪声图像重构成输入的图像所表现出来的content,这个过程就是content reconstruction

Again, we can visualise the information captured by these style feature spaces built on different layers of the network by constructing an image that matches the style representation of a given input image. …… We refer to this multi-scale representation as style representation<

这是论文中对style representation的定义。其中,multi-scale representation是一个论文在CNN模型中新提出来的一个概念,它是指根据在神经网络的每一层神经网络最后的输出的一个计算结果(具体如何计算后面会提及),这个计算结果是指这一层神经网络与前面神经网络之间的相关性。
直观的来看,不同的filter responses本身就是反映了图像中不同的信息,将他们之间的相关性提取出来,就能够捕捉图像整体的肌理信息,进而得到了图像的style。
同样的,从style representation中的信息训练模型,使模型能够从一张随机白噪声图像重构成输入的图像所表现出来的style,这个过程就叫style reconstruction


representation和construction之间的示意图

这幅图像就更加直观的展示了这四个概念之间的关系,也说明style和content分别是怎么分别得到的。

“内容”提取

在上面的示意图中,下面一排展示的是将内卡河图片输入神经网络,content representation可以提取出content,并且实现content reconstruction。
根据论文中实现的方式来看,第一张图来自conv1_1,第二张图来自conv2_1,依次一直到最后一张图是来自conv5_1。可以从局部信息处理上面看到,前面的三张图像,他们在像素上面都是很精确的,后面两张图的像素就没有那么精确,是因为后面两张来自神经网络中较深的层次,他们更多的是在捕捉内容和排列方式。

“风格”提取

上图中,上面一排展示了tyle reconstruction,就是将梵高的星空图输入这个神经网络进去之后,用style representation提取得到这幅画的风格。
首先可以看到中间这一排大小不一的小方框就是style representation。这些方框的规格不同是因为他们所代表的style信息量不同,随着神经层的深入,方框包含的相关性不断增多。根据这些style representation可以训练模型得到style reconstruction,同时用不同的style representation可以得到不一样的style reconstruction。
比如说第一张图是作用只用了conv1_1提取的style,第二张图是用了conv1_1、conv2_1之间的相关关系提取的style,上面的一排图像,挨着一个比一个多纳入一层的相关性。可以看到其实在不同的层上面提取这个style representation得到的风格也是不一样的。所以对于风格如何选定,可以根据自己的需要来进行。

生成新图片

为了方便后文的介绍,这里把我们想要提取内容(内卡河的风景)的图片简称为图片P,把想要提取风格(大师们的风格)的图片称为图片A,将最后使用“黑科技”生成的图片成为图片X。
下图是整个生成模型的训练流程:


生成新图片流程示意图

在模型训练开始时,图片X是一个 随机生成的白噪声图像。在不断的训练过程中,从图片A中提取得到存储了style信息的 AL 矩阵,从右边的图片P提取得到了存储了内容的 PL 矩阵,然后通过损失函数,不断的对X进行优化,最后就可以生成一张融合了两张图的图像。
由于内容和和风格是分开进行建模的,因此在损失函数中也是对两个部分分开进行构建的:
content部分(右边)的损失函数为
Lcontent(p,x,l)=12i,j(FlijPlij)2

可以看到content部分的损失函数和输入的图片 P 的信息、生成的图片X的信息、神经网络的层数 l 有关。其中向量P表示我们需要提取内容的图像的内容信息,向量 X 中储存的是训练过程中不断更新的生成图片的信息。目的就是使图片X通过不断的训练向图片 P 靠近,从而达到使生成的图片X中有输入的图片 P 的内容信息。
style部分(左边)的损失函数为
Lstyle(a,x)=i=0LwlEl

El=14N2lM2li,j(GlijAlij)2

Glij=kFljkFljk

其中向量 Gl 表示的是生成的那张图片的style representation的信息,向量 Al 表示的是需要提取风格的那张图片的style representation的信息。 Gl Al 都是在第l层上所有特征图像之间的相关性生成的矩阵。所以 El 衡量了需要生成的图像风格和它需要形成的风格之间的差距。然后style这部分的损失就是将所有层上的 El 进行一个加权.
模型整体的损失函数为
Ltotal(p,a,x)=αLcontent(p,x)+βLstyle(a,x)

其中通过对 α β 之间的比重的调整就能够实现上文提到的对内容和风格之间的不同比重的强调效果。

神经网络的选取

论文基于在VGG19中去掉了实现分类过程的全连接层后的神经网络进行的模型训练。整个神经网络只有16个卷积层5个池化层,并且将VGG19中本身的最大池化变成了取平均池化,其他地方和传统的VGG19是一致的。


style transfer中用到的VGG19示意图

结语

不管是从内容还是从结果上来看都非常有意思的一篇论文,这里我对我读完这篇论文之后的观后感做了一个总结,有不对的地方还希望大家提出批评指教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值