Press "Enter" to skip to content

【译】一种有关艺术风格迁移的神经网络算法

本文翻译自: A Neural Algorithm of Artistic Style ,本篇论文可以说是图像风格迁移的鼻祖,因毕设需要翻译一篇外文文献所以选择了这篇,个人水平有限,如有翻译不当或者错误之处还望指出,谢谢:pray:

在艺术领域,尤其是绘画创作上,人们已经掌握了一种可以创造独一无二视觉体验的能力,那就是通过将一张图片的内容和风格之间构成某种复杂的关系。到目前为止,该过程的算法基础是未知的,并且不存在具有类似能力的人工系统。然而,受到一种名为深度神经网络的视觉模型的启发,在视觉感知的其他关键领域,例如物体和人脸识别,仿生学的效果已经可以接近人类的表现。这里我们将会介绍一个基于深度神经网络的人工系统,它可以生成具有高感知品质的艺术图片。该系统使用神经表示来分离和重组任意图像的内容和风格,提供了一种创建艺术图像的神经算法。而且,按照要去表现最优的人工神经网络和生物视觉中找到相同.我们的工作提供了人类是怎样创作和认知艺术图像的算法理解。此外,鉴于性能优化的人工神经网络与生物视觉之间惊人的相似性,我们的工作为算法理解人类如何创造和感知艺术形象提供了一条前进的道路。

 

处理图像任务最有效的深度神经网络是卷积神经网络。卷积神经网络由小型计算单元层组成,以前馈方式分层处理视觉信息(图1)。每层单元可以理解为图像过滤器的集合(a collection of image filters),每个图像过滤器从输入图像中提取特定特征。因此,一个给定层的输出包括所谓的特征映射(feature maps):它们是对输入的图像进行不同类型的过滤得到的。

 

当卷积神经网络被训练用于物体识别时,会生成一个图像的表征(representations) ,随着处理层级的上升,物体的信息越来越明确。因此,随着神经网络中的层级一级一级地被处理,输入的图像会被转换成一种表征,与图片的像素细节相比,这种表征会越来越关注图片的实际内容。通过对某一层的提取出来的feaure map的重塑,我们可以直接看到该层包含的图片信息。层级越高,那幺获取的图像中物体内容就越高质量,并且没有确切的像素值的约束(层级越高,像素丢失越多)。相反,在低层级中重塑的话,其实像素丢失地很少。所以我们参考的是神经网络高层的特征,用它来作为图片内容的表征。

 

为了获取输入图像的风格表征,我们用一个特征空间去捕获纹理的信息。这个特征空间建立在每层神经网络的过滤响应之上(也就是上面提到的feature map)。在feature map的空间范围上(也就是同一层上的feature map),过滤响应各有不同(feature map关注的特征不同),而这个特征空间就是由这些差异构成。通过对每一层featute map两两求相关性,我们会获得一个静态的,多尺度的图像表征,这也就捕获到了图像的纹理信息,但这纹理信息并非全局的。

图1 : 卷积神经网络 (CNN) 。一张给定的输入图像,会在卷积神经网络的各层以一系列过滤后的图像表示。随着层级的一层一层处理,过滤后的图片会通过向下取样的方式不断减小(比如通过池化层)。这使得每层神经网络的神经元数量会逐步减少。**内容重构。**在只知道该层输出结果的情况下,通过重塑输入图像,我们可以看到CNN不同阶段的图像信息。我们在原始的VGG-Network上的5个层级: conv1_1,conv1_2,conv1_3,conv1_4,conv1_5 上重塑了输入的图像。 (输入的图像是上图中的一排房子,5个层级分别是a,b,c,d,e )我们发现在较低层的图像重构(如abc)非常完美;在较高层(de),详细的像素信息丢失了。也就是说,在这个过程中,我们提取出了图片的内容,抛弃了像素。 风格重构。 在原始的CNN表征之上,我们建立了一个新的特征空间(feature space),用于捕获输入图像的风格。风格的表征计算了在CNN的不同层级间不用特征之间的相似性。通过在CNN隐层的不同的 子集 上建立起来的风格的表征,我们重构输入图像的风格。如此,便创造了与输入图像一致的风格而丢弃了全局的内容。

 

Tips:上述的子集为:

 

‘conv1 1’ (a)

 

‘conv1 1’ and ‘conv2 1’ (b)

 

‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (c)

 

‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and ‘conv4 1’ (d)

 

‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’and ‘conv5 1’ (e)

 

于是,我们也可以在CNN的各层中利用风格特征空间所捕获的信息来重构图像。事实上,重塑风格特征就是通过捕获图片的颜色、结构等等生产出输入的图像的纹理的版本。另外,随着层级的增加,图像结构的大小和复杂度也会增加。我们将这多尺度的表征称为 风格表征 。

 

本文关键的发现是对于内容和风格的表征在CNN中是可以分开的。也就是说,我们可以独立地操作两个表征来产生新的、可感知的有意义的图像。为了展示这个发现,我们生成了一些混合了不同源图片的内容和风格表征的图片。确切的说,我们将着名艺术画“星空”的风格,和一张德国拍的照片的内容混合起来了。

 

我们寻找这样一张图片,它同时符合照片的内容表征,和艺术画的风格表征。原始照片的整体布局被保留了,而颜色和局部的结构却由艺术画提供。如此一来,原来的那张风景照旧像极了艺术作品。

图2:图中描述的是将照片内容与几种知名艺术品的风格相结合的图像。 通过找到同时匹配照片的内容表征和艺术品的风格表征的图像来创建新的图像。(译者注:下面都是图片的来源,这里就直接省略了)

 

正如概述所言,风格表征是一个多层次的表征,包含多层神经网络。在图2中展示的图片中,这个风格表征包括了整个神经网络结构的各个层次。风格也可以被定义为更为局部化,因为它只包含了少量的低层结构。这些结构能产生不同的视觉效果(图3,along the rows)。若符合了较高层级中的风格表征,局部的图像结构会大规模地增加,从而使得图像在视觉上更平滑与连贯。因此,看起来美美的图片通常是来自于符合了较高层级的风格表征。

 

当然,图片内容和风格不能被完全分离。当风格与内容来自不同的两个图像时,这个被合成的新图像并不存在在同一时刻完美地符合了两个约束。但是,在图像合成中最小化的损失函数分别包括了内容与风格两者,它们被很好地分开了。所以,我们可以平滑地将重点既放在内容上又放在风格上(可以从图3的一列中看出)。将重点过多地放在风格上会导致图像符合艺术画的外观,有效地给出了画的纹理,但是几乎看不到照片的内容了(图3 第一列)。而将重点过多地放在内容上,我们可以清晰地看到照片,但是风格就不那幺符合艺术画了。因此,我们要不断协调图片的内容与风格,这样才能产生视觉上有感染力的图片。

 

在这里,我们提出了一种人工神经系统,它实现了图像内容与风格的分离,从而允许以任何其他图像的风格重铸一个图像的内容。我们通过创造新的艺术图像来展示这一点,这些图像将几种着名绘画的风格与任意选择的照片的内容相结合。特别地,我们从在物体识别上训练的高性能深度神经网络的特征响应来获取图像的内容和样式的神经表征。

 

在之前的研究中,是通过评估复杂度小很多的感官输入来将内容与风格分离的。比如说通过不同的手写字,人脸图,或者指纹。 而在我们的展示中,我们给出了一个有着着名艺术作品风格的照片。这个问题常常会更靠近与计算机视觉的一个分支–真实感渲染。理论上更接近于利用纹理转换来获取艺术风格的转换。但是,这些以前的方法主要依赖于非参数的技术并且直接对图像表征的像素进行操作。相反,通过在物体识别上训练深度神经网络,我们在特征空间上进行相关操作,从而明确地表征了图像的高质量内容。

 

神经网络在物体识别中产生的特征先前就已经被用来做风格识别,为的是根据艺术作品的创作时期来为作品分类。分类器是在原始的网络上被训练的,也就是我们现在叫的内容表征。我们猜测静态特征空间的转换,比如我们的风格表征也许可以在风格分类上有更好的表现。

 

通常来说,我们这种合成图像的方法提供了一个全新的迷人的工具用于学习艺术,风格和独立于内容的图像外观的感知与神经表征。总之,一个神经网络可以学习图像的表征,是的图像内容与风格的分离成为可能,是如此激动人心。若要给出解释的话,就是当学习物体识别到时候,神经网络对所有图像的变化都能保持不变从而保留了物体的特性。

 

方法(Methods)

 

本文展示的结果是基于VGG网络训练的。他是一种卷积神经网络,在常见的视觉对象识别基准任务上,其表现可以和人类的表现相媲美,因此广受好评并被多方介绍和使用。我们使用由19层的VGG神经网络(16个卷积和5个池化层)提供的特征空间,并且没有使用到全连接层。这个模型是开源的,并且可以在caffe这个深度学习框架中使用。对于图像合成,我们发现用均值池化层代替最大值池化层会提高梯度流,并且得到更加完美的结果。所以本案例中我们用的是 均值池化 。

 

事实上网络的每一层都定义了一个非线性的过滤器组,它的复杂性随着在网络中所在层的位置而增加。因此一个给定的输入图片 ,在CNN的每层都会被过滤器编码。一个有 个不同的过滤器的隐藏层有 个feature map(每个神经元输出一个feature map)。每个feature map的大小是 , 是feature map高乘以宽的大小。所以一个层 的输出可以存储为矩阵: ,其中 表示在 层的位置 上的第 个过滤器的激活结果。为了可视化不同层级中的图像信息,我们在一个白噪声上使用梯度下降来找到另一个图像,它与原始图像的特征输出结果相符合(白噪声上的图像其实就是定义一个随机的新图,然后通过梯度下降不断迭代,不断更新这个新图)。所以让 作为原始图像和后来产生的图像, 是他们在层 各自的特征表征。然后我们定义两个特征表征之间的平方误差损失。

 

这个损失函数的导数是:(针对F求导)

 

以上公式中,图像 的梯度可以通过标准误差的后向计算传播。因此我们可以改变初始的随机图像 ,直到它产生了在CNN中与原始图像 一样的输出结果。在图1中的5个内容重构来自于原始VGG的 ‘conv1 1’ (a), ‘conv2 1’ (b), ‘conv3 1’ (c), ‘conv4 1’ (d) and ‘conv5 1’(e)

 

另外,我们通过计算不同过滤器输出结果之间的差异,来计算相似度。我们期望获得输入图片空间上的衍生。这些特征的相似性用 表示。其中 来源于层 中矢量的feature map 和 。

 

Tips:解释一下上面讲的,就是将艺术画也放进CNN中,比如输出也是14x14x256的一个矩阵,然后将256个14×14的 feature map 两两求相似性,这里是两两相乘,于是会得带256×256的一个特征空间矩阵,G就是这个特征空间

 

为了生成符合给定艺术作品风格的纹理,我们对一个带有白噪声的图像(也就是我们定义的随机的新图)做梯度下降,从而去寻找另一个图像,使得这个图像符合艺术画的风格表征。而这个梯度下降的过程是通过使得原始图像(艺术画)的Gram矩阵和被生成的图像(新图)的Gram矩阵的距离的均方误差最小化得到的。因此,令 分别作为原始艺术图像与被生成的图像, 分别作为层 的两个风格表征。层 对于总损失的贡献是:

 

而总损失用公式表达为:

 

其中 表示每一层对于总损失的贡献的权重因子。 的导数可以这样计算:

 

在低层级的梯度可以很方便地通过标准误差后向传播计算出来。在图1中5个风格的重塑可以通过满足一下这些层的风格表征来生成: ‘conv1 1’ (a), ‘conv2 1’ (b), ‘conv3 1’ (c), ‘conv4 1’ (d) and ‘conv5 1’(e)

 

为了生成混合了照片内容和艺术画风格的新图像,我们需要最小化风格损失与内容损失。所以令 表示内容图片, 表示风格图片,那幺我们需要最小化的损失函数是:

 

α和β分别是内容和风格在图像重构中的权重因子。对于在图像2中展示的图片,我们在’conv4_2‘层匹配到了内容表征,在‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’ 和 ‘conv5 1’层匹配到了样式表征(在这些层, ,在其他层 )。在图2的BCD中,α/β的比值为 ,在图二的E,F中,这个比值为 ,图3展示了一个结果:即沿着列不断调整内容和风格的损失,相对应的风格表征在下面几个层所发生的变化。这几个层分别是: ‘conv1 1’ (A), ‘conv1 1’ and ‘conv2 1’ (B), ‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (C),‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and ‘conv4 1’ (D), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’ 和 ‘conv5 1’ (E) 。因子 总是等于1除以具有非零损失权值 的活动层数。

 

(参考)Tips:α+β=1。如果α比较大,那幺输出后的新图会更多地倾向于内容上的吻合,如果β较大,那幺输出的新图会更倾向于与风格的吻合。这两个参数是一个trade-off,可以根据自己需求去调整最好的平衡。论文的作者给出了它调整参数的不同结果,如图3,从左到右四列分别是α/β = 10^-5, 10^-4,10^-3, 10^-2.也就是α越来越大,的确图像也越来越清晰地呈现出了照片的内容。

图3:Wassily Kandinsky 的作品 Composition VII 的风格的详细结果。 这些行显示了匹配CNN图层增加子集的样式表示的结果(详见Methods)。我们发现,当包含来自网络较高层的样式特征时,由风格表征捕获的局部图像结构在尺寸和复杂性上增加。这可以解释为是由于沿成网络处理的结构感受域的大小和特征复杂性增加。每一列展示了内容和样式重建之间取不同权重的结果。每列上方的数字表示强调匹配照片内容和艺术品风格之间的比率α/β(详见Methods)。

 

鸣谢这项工作由德国国家学术基金会(L.A.G.),伯恩斯坦计算神经科学中心(FKZ 01GQ1002)和德国国际神经科学研究中心(EXC307)(M.B.,A.S.E, L.A.G)资助。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注