风格迁移:一文梳理经典方法发展脉络及原理
- 1.Image Style Transfer Using Convolutional Neural Networks:Gram矩阵(CVPR2016)
- 2.Deep Photo Style Transfer(CVPR2017)
- 3.Universal Style Transfer via Feature Transform:WCT(whitening and coloring)(NIPS2017)
- 4.A Closed-form Solution to Photorealistic Image Stylization:PhotoWCT(ECCV2018)
- 5.Photorealistic Style Transfer via Wavelet Transforms:WCT^2^(ICCV2019)
1.Image Style Transfer Using Convolutional Neural Networks:Gram矩阵(CVPR2016)
原文下载
译文参考:【读点论文】Image Style Transfer Using Convolutional Neural Networks
1.1.概述
本文展示了高性能卷积神经网络学习的通用特征表示如何用于独立处理和操作自然图像的内容和风格。本文介绍了一种艺术风格的神经算法,从概念上讲,它是一种纹理传递算法,通过来自最新卷积神经网络的特征表示来约束纹理合成方法。
由于纹理模型也基于深度图像表示,风格转移方法优雅地简化为单个神经网络内的优化问题。通过执行前图像搜索以匹配示例图像的特征表示来生成新图像。本文的风格迁移算法结合了基于卷积神经网络的参数纹理模型和反转其图像表示的方法。
1.2.方法
- Content representation
通常,网络中的每一层都定义了一个非线性滤波器组,其复杂度随着该层在网络中的位置而增加。因此,给定的输入图像 x ⃗ \vec{x} x,通过对该图像的滤波器响应而在卷积神经网络的每一层中被编码。具有 N l N_l Nl个不同过滤器的图层具有 N l N_l Nl个大小为 M l M_l Ml 的特征图,其中 M l M_l Ml是特征图的高度乘以宽度。第L层中的响应可以存储在矩阵 F l ∈ R N l × M l F_l∈R^{N_l×M _l} Fl∈RNl×Ml中,其中 F i j l F^l_{ij} Fijl是层l中位置j处的第i个滤波器的激活。
为了可视化在层级的不同层编码的图像信息,可以对白噪声图像执行梯度下降,以找到与原始图像的特征响应相匹配的另一个图像。设 p ⃗ \vec{p} p和 x ⃗ \vec{x} x是原始图像和生成的图像, P 1 P_1 P1和 F 1 F_1 F1是它们在层l中各自的特征表示。然后定义两个特征表示之间的平方误差损失: L c o n t e n t ( p ⃗ , x ⃗ , 1 ) = 1 2 ∑ i , j ( F i j l − P i j l ) 2 L_{content}(\vec{p},\vec{x},1)=\frac{1}{2}\sum_{i,j}(F^l_{ij}-P^l_{ij})^2 Lcontent(p,x,1)=21i,j∑(Fijl−Pijl)2
这个损失相对于层l中的激活的导数等于: ∂ L c o n t e n t ∂ F i j l = ( F l − P l ) i j , i f F i j l > 0 \frac{\partial{L_{content}}}{\partial{F^l_{ij}}}=(F^l-P^l)_{ij},if F^l_{ij}>0 ∂Fijl∂Lcontent=(Fl−Pl)ij,ifFijl>0 = 0 , i f F i j l < 0 =0,if F^l_{ij}<0 =0,ifFijl<0
由此可以使用标准误差反向传播来计算相对于图像 x ⃗ \vec{x} x的梯度。因此,可以改变最初的随机图像 x ⃗ \vec{x} x ,直到它在卷积神经网络的某一层中产生与原始图像 p ⃗ \vec{p} p 相同的响应。
当卷积神经网络在对象识别上被训练时,它们开发了图像的表示,使得对象信息沿着处理层级越来越明显。因此,沿着网络的处理层次,输入图像被转换成对图像的实际内容越来越敏感的表示,但是对其精确的外观变得相对不变。
因此,网络中的较高层根据对象及其在输入图像中的排列来捕获高级内容,但是不太约束重建的精确像素值。相比之下,较低层的重建只是复制了原始图像的精确像素值。因此,将网络高层中的特征响应称为内容表示。
- Style representation
为了获得输入图像风格的表示,使用了一个被设计用来捕捉纹理信息的特征空间。这个特征空间可以建立在网络的任何层中的滤波器响应之上。它由不同滤波器响应之间的相关性组成,其中期望是在特征图的空间范围上获得的。这些特征相关性由Gram矩阵 G 1 ∈ R N l × N l G_1∈R^{N_l×N _l} G1∈RNl×Nl 给出,其中 G i j l G^l_{ij} Gijl是层l中的矢量化特征图i和j之间的内积: G i j l = ∑ k ( F i k l F j k l ) G^l_{ij}=\sum_k(F^l_{ik}F^l_{jk}) Gijl=k∑(FiklFjkl)
通过包括多层的特征相关性,获得了输入图像的静态、多尺度表示,其捕获了其纹理信息,但没有捕获全局排列。可以通过构建一个与给定输入图像的风格表示相匹配的图像,将这些建立在网络不同层上的风格特征空间捕获的信息可视化。这是通过使用来自白噪声图像的梯度下降来最小化来自原始图像的Gram矩阵和要生成的图像的Gram矩阵的条目之间的均方距离来实现的。
设 a ⃗ \vec{a} a和 x ⃗ \vec{x} x是原始图像和生成的图像, A 1 A_1 A1和 G 1 G_1 G1 是它们在层l中各自的风格表示。则该层对总损失的贡献 E l E_l El和总损失L如下 E l = 1 4 N l 2 M l 2 ∑ i , j ( G i j l − A i j l ) 2 E_l=\frac{1}{4N_l^2M_l^2}\sum_{i,j}(G^l_{ij}-A^l_{ij})^2 El=4Nl2Ml21i,j∑(Gijl−Aijl)2 L s t y l e ( a ⃗ , x ⃗ ) = ∑ i = 0 L w l E l L_{style}(\vec{a},\vec{x})=\sum_{i=0}^Lw_lE_l Lstyle(a,x)=i=0∑LwlEl
其中 w l w_l wl是每层对总损失的贡献的加权因子。 E l E_l El相对于层l中激活的导数可以解析地计算: ∂ E l ∂ F i j l = 1 N 1 2 M 1 2 ( ( F l ) T − ( G l − A L ) ) i j , i f F i j l > 0 \frac{\partial{E_l}}{\partial{F^l_{ij}}}=\frac{1}{N_1^2M_1^2}((F^l)^T-(G^l-A^L))_{ij},if F^l_{ij}>0 ∂Fijl∂El=N12M1