这篇论文是斯坦福大学发表在CVPR 2017上的论文,主要内容是如何保持视频的风格化的稳定性。
原文链接:https://arxiv.org/abs/1705.02092
最近图像风格转换的研究主要关注合成图像质量和算法速度的提升。但是实时的方法非常不稳定,应用到视频时会有明显的闪烁。本文中,我们通过检验风格迁移目标方程的解集来对这些方法的不稳定性进行了描述。结果表明,Gram矩阵的迹和方法的稳定性成反相关。在此基础上,我们提出了一种结合了时间连续损失的循环卷积网络,克服了先前方法不稳定的问题。我们的网络可以应用到任何分辨率,在测试阶段不需要光流,而且可以实时产生高质量的、时间连续的合成视频。
图像的艺术风格迁移是将一副图像的内容和另一幅图像的风格相结合,合成一副全新的图像。这个问题最近用深度神经网络技术重新进行了研究。后续工作改进了方法速度、质量,并可以用单个模型对多种风格进行建模。
最近的图像风格迁移方法可以分为两类。基于优化的方法是为每张合成图像求解一个优化问题;这种方法能提供高质量的结果,但是时间开销很大。前馈方法是训练一个神经网络来近似优化问题的解;经过训练后这种方法可以实时应用。然而,所有这些方法都高度不稳定,当应用到视频时会出现可见的闪烁,如图1所示。Ruder等人将基于优化的方法从图像扩展到视频。他们的方法能产生高质量的合成视频,但是对于实时应用来说太慢了。
本文中,我们的目标是使用前馈方法对视频进行风格转换,并产生和优化方法相当的高质量结果。最近的风格迁移方法使用Gram矩阵特征来表达图像风格:通过匹配风格图像的Gram矩阵来合成风格化图像。我们发现风格图像Gram矩阵的迹和像素的不稳定性密切相关。特别地,Gram矩阵匹配目标方程的解集,是一个半径由风格图像的Gram矩阵的迹决定的球面。由于这个目标函数的非凸性,内容图像中微小的变化就会将合成的图像推向该Gram矩阵匹配目标函数的不同解上。如果所有解都很接近(迹很小),那么不同的解对应的合成图像也是相似的(没有不稳定性)。但是如果解相距很远(迹很大),那么不同解将会导致非常不同的合成图像(高度不稳定)。
基于这个观点,我们提出了一种能极大提升前馈式风格迁移方法稳定性的方法,并能合成高质量的风格化视频。特别地,我们使用循环卷积网络来进行视频风格化,使用temporal consistency损失训练,鼓励网络在每个时间步上找到与目标函数匹配的Gram矩阵。我们在这篇论文中的贡献分为两部分:
纹理合成. 纹理合成和风格迁移很接近,其目标是根据输入的纹理推理出一个生成过程,以进一步生成具有同样纹理的样本。早期在计算机视觉领域对纹理合成问题的尝试可以分为两类不同的方法:参数化方法和非参数化方法。参数化方法计算出特征空间的全局统计信息,然后直接从中对图像进行取样。非参数化方法是估计局部条件概率密度函数,然后递增地合成像素。这种方法对原始纹理的像素或整个区域进行重采样。
参数化方法基于Julesz特征描述,如果两张图像在特征空间有相似的统计度量则称它们有相同的纹理。Gatys等人的工作是以Portilla和Simoncelli为基础,利用高性能神经网络的特征空间,以Gram矩阵作为总统计量。Ulyanov等人提出实例归一化和一种新的学习方程来解决前馈纹理合成中的感知质量问题,该学习方程鼓励生成器从Julesz纹理集成中无偏采样。Chen和Schmidt在纹理迁移工作的基础上,提出了一种新型的基于“风格交换”的方法,将内容图像块和最匹配的风格激活块交换来创建输出图像的激活。交换后的激活随后被传递到逆网络中来生成风格化的图像。他们的优化方法比[22, 34]稳定的多,因此特别适合应用到视频中。尽管他们方法泛化能力好并且稳定,但运行需要几秒钟的时间,无法用于实时视频中
风格迁移. Gatys等人的工作表明,使用高性能卷积神经网络的特征表达可以生成高质量的图像。他们的基于优化方法的结果视觉上很好,但是计算开销很大。Johnson和Ulyanov等人提出了前馈网络,比[12]快了上千倍,可以用来实时生成风格化图像。然而,每种风格需要单独训练一个前馈网络,而且生成图像的视觉质量比基于优化的方法要差。Dumoulin等人提出使用条件实例归一化层来解决这个问题,允许一个网络学习多种风格。与[23,43]相比,这个简单有效的模型可以在不影响速度和视觉质量的情况下,以更少的参数学习任意不同的风格。
光流. 光流的准确估计是计算机研究的热点问题,在实际应用中有着广泛的应用前景。光流估计的经典方法是Horn和Schunck基础上提出的变分的方法。卷积神经网络(CNNs)已经被证明可以与当前最先进的光流检测算法媲美。FlowNet引入了新型CNN结构用于光流估计,并有和变分方法相当的性能。光流估计的完整回顾超出了本文的范畴,感兴趣的读者可以参考[1, 33, 3]。
视频的风格迁移. 传统的图像艺术风格化是在非真实渲染的标签下进行研究的。Litwinowicz是第一个结合将印象派中笔触转化成图像和用光流追踪视频帧之间像素的动作两者来生成事件相干的输出视频序列的人。Hay和Essal在此基础上增加了更多的光学和空间约束来克服笔触的闪烁。Hertzmann通过用多种笔刷大小和长的弯曲笔触的图像绘制技术来提升图像的视觉质量,[18] 之后将这个工作在视频中进行了扩展。
最近Ruder对[12]中基于优化的方法进行扩展,引入了基于光流的约束,强制使相邻帧之间保持时间一致性。他们还提出了一种multi-pass算法来保证视频长期的一致性。他们算法的结果在时间一致性和每帧视觉质量方面非常好,但是需要几分钟来处理一帧。
我们使用[12]中的风格迁移表达,下面我们简单回顾一下。风格迁移是一种图像合成技术,我们接收一张内容图像 c c c和一张风格图像 s s s作为输入。输出图像 p p p最小化目标方程 (1) L ( s , c , p ) = λ c L c ( p , c ) + λ s L ( p , s ) \mathcal{L}(s,c,p)=\lambda_c\mathcal{L}_c(p,c)+\lambda_s\mathcal{L}(p,s) \tag{1} L(s,c,p)=λcLc(p,c)+λsL(p,s)(1)其中 L c \mathcal{L}_c Lc和 L s \mathcal{L}_s Ls分别是内容重构损失和风格重构损失; λ c \lambda_c λc和 λ s \lambda_s λs是控制它们重要程度的超参数标量。
内容和风格重构损失用卷积神经网络 ϕ \phi ϕ的形式定义,我们使用在ImageNet上预训练好的VGG-19。 ϕ j ( x ) \phi_j(x) ϕj(x)是图像 x x x在网络 j t h j^{th} jth层的激活输出,形状为 C j × H j × W j C_j\times H_j\times W_j Cj×Hj×Wj。给定一组内容层 C \mathcal{C} C和风格层 S \mathcal{S} S,内容和风格重构损失定义如下: (2) L c ( p , c ) = ∑ j ∈ C 1 C j H j W j ∥ ϕ j ( p ) − ϕ j ( c ) ∥ 2 2 \mathcal{L}_c(p,c)=\sum_{j \in \mathcal{C}}\frac{1}{C_jH_jW_j}\|\phi_j(p)-\phi_j(c)\|^2_2 \tag{2} Lc(p,c)=j∈C∑CjHjWj1∥ϕj(p)−ϕj(c)∥22(2) (3) L s ( p , s ) = ∑ j ∈ S 1 C j H j W j ∥ G ( ϕ j ( p ) ) − G ( ϕ j ( s ) ) ∥ F 2 \mathcal{L}_s(p,s)=\sum_{j \in \mathcal{S}}\frac{1}{C_jH_jW_j}\|G(\phi_j(p))-G(\phi_j(s))\|^2_F \tag{3} Ls(p,s)=j∈S∑CjHjWj1∥G(ϕj(p))−G(ϕj(s))∥F2(3)其中 G ( ϕ j ( x ) ) G(\phi_j(x)) G(ϕj(x))是第 j j j层激活输出的 C j × C j C_j\times C_j Cj×Cj的Gram矩阵, G ( ϕ j ( x ) ) = Φ j x Φ j x T G(\phi_j(x))=\Phi_{jx}\Phi_{jx}^T G(ϕj(x))=ΦjxΦjxT, Φ j x \Phi_{jx} Φjx是一个 C j × H j W j C_j\times H_jW_j Cj×HjWj的矩阵,它的列是 ϕ j ( x ) \phi_j(x) ϕj(x)的 C j C_j Cj维特征向量。
相比强制使输出图像的像素与内容和风格图像匹配,内容和风格重构损失鼓励生成的图像与内容图像的高层特征和风格图像的特征关系匹配。
如图1所示,内容图像 c c c的微小改变可能得到相当不同的风格图像 p p p。但是我们注意到并不是所有风格都有这种不稳定性。一些风格,例如Composition XIV(见图1)是相当不稳定的,其他例如The Great Wave(见图9)的风格就稳定一些。
为了研究不稳定性多大程度上依赖于风格图像,我们对于单层只考虑风格损失。然后风格迁移网络最小化目标函数(为了简便省略了下表 j j j): (4) min G ( ϕ ( p ) ) 1 C H W ∥ G ( ϕ ( o ) ) − G ( ϕ ( s ) ) ∥ F 2 min Φ p ∥ Φ p Φ p T − Φ s Φ s T ∥ F 2 \begin{aligned} \min_{G(\phi(p))}&\frac{1}{CHW}\|G(\phi(o))-G(\phi(s))\|_F^2 \\ \min_{\Phi_p}&\|\Phi_p\Phi_p^T - \Phi_s\Phi_s^T\|^2_F \end{aligned}\tag{4} G(ϕ(p))minΦpminCHW1∥G(ϕ(o))−G(ϕ(s))∥F2∥ΦpΦpT−ΦsΦsT∥F2(4)作为启发,先考虑简单的 C = H = W C=H=W C=H=W的情况,等式(4)简化为 ( Φ p 2 − Φ s 2 ) 2 (\Phi_p^2-\Phi_s^2)^2 (Φp2−Φs2)2,是一个非凸方程,最小值在 Φ p = ± Φ s \Phi_p=\pm \Phi_s Φp=±Φs处取得,如图2(左)所示。相似地,当 C = H = 1 , W = 2 C=H=1,W=2 C=H=1,W=2时,如图2(右)所示,最小值位于半径为 Φ s \Phi_s Φs的圆上。两种情况下,最小值都距离原点 Φ s \Phi_s Φs的距离。这个发现对于一般情况也成立:
该结论意味着那些Gram矩阵迹 t r ( Φ s Φ s T ) tr(\Phi_s\Phi_s^T) tr(ΦsΦsT)较大的风格会更加不稳定,因为随着 t r ( Φ s Φ s T ) tr(\Phi_s\Phi_s^T) tr(ΦsΦsT)的增加风格重构损失的解在特征空间会变得差异很大。
我们通过一个小的视频数据集(相机固定没有移动)经验上验证了风格迁移稳定性和 t r ( Φ s Φ s T ) tr(\Phi_s\Phi_s^T) tr(ΦsΦsT)之间的关系;帧与帧之间唯一的差别是微小的光照变化和探测器噪声。
我们使用[22]的算法在12种风格的COCO数据集上训练了单独的前馈风格迁移模型,然后对视频数据集的每一帧使用这些模型进行风格化。由于输入视频的静态特性,风格化的帧中任何差异都是风格迁移模型不稳定性造成的;我们使用相邻风格帧之间的均方误差来对每种风格的不稳定性进行了估计。我们在图3中绘制了各个风格的不稳定性和VGG-16的relu1_1
和relu2_1
Gram矩阵迹之间的曲线。这些结果清楚了成仙了风格不稳定性和迹之间的相关关系。
综上所述,当Gram矩阵迹很大的时候,用于实时风格迁移的前馈网络会产生不稳定的风格化视频。我们现在提出一种克服了这个问题的前馈风格迁移方法,并同时达到[22]的速度和[30]的稳定性。
我们方法的输入时一个内容图像序列 c 1 , … , c T c_1,\dots,c_T c1,…,cT和一张风格图像 s s s,输出一个风格化图像序列 p 1 , … , p T p_1,\dots,p_T p1,…,pT。每张输入出现 p t p_t pt应当和 c t c_t ct共享内容,和 s s s共享风格,并且和 p t − 1 p_{t-1} pt−1外观相似。在每个时间步,输出图像 p t p_t pt由风格迁移网络 f W f_W fW决定: p t = f W ( p t − 1 , c t ) p_t=f_W(p_{t-1}, c_t) pt=fW(pt−1,ct)。
和[22, 34]相似,我们为每张风格图像 s s s训练了一个网络。每个时间步,网络训练来最小化3项损失之和: (5) L ( W , c 1 : T , s ) = ∑ t = 1 T ( λ c L c ( p t , c t ) + λ s L s ( p t , s ) + λ t L t ( p t , p t − 1 ) ) \mathcal{L}(W,c_{1:T},s)=\sum_{t=1}^T(\lambda_c\mathcal{L}_c(p_t,c_t)+\lambda_s\mathcal{L}_s(p_t,s)+\lambda_t\mathcal{L}_t(p_t,p_{t-1}))\tag{5} L(W,c1:T,s)=t=1∑T(λcLc(pt,ct)+λsLs(pt,s)+λtLt(pt,pt−1))(5)其中 L c \mathcal{L}_c Lc和 L s \mathcal{L}_s Ls分别是第3节中提到的内容和风格重构损失; L t \mathcal{L}_t Lt是时间一致性损失,防止网络相邻时间步输出变化很大。标量 λ c , λ s , λ t \lambda_c,\lambda_s,\lambda_t λc,λs,λt是衡量这三项损失重要性的超参数。网络 f W f_W fW视频序列 { c 1 : T } \{ c_{1:T}\} {c1:T}上通过随机梯度下降训练来最小化式(5)。
如果我们的网络是要生成时间一致的输出,那么久不能独立地处理帧;网络必须要有检查它先前输出的能力才能保证一致性。因此我们的网络以当前内容图像 c t c_t ct和上一帧风格化结果 p t − 1 p_{t-1} pt−1作为输入来合成结果 p t = f W ( p t − 1 , c t ) p_t=f_W(p_{t-1},c_t) pt=fW(pt−1,ct)。如图4所示,每个时间步网络的输出会当做下一个时间步的网络输入。因此 f W f_W fW是一个循环卷积网络,必须通过backpropagation through time来训练。
f W f_W fW的两个输入沿着通道维度连接到一起。 f W f_W fW包含2层下采样层(跟随几个残差块),2层最近邻上采样和卷积。所有卷积层都跟随实例归一化和ReLU非线性激活。
我们的风格迁移网络可以检查它自己先前的输出,但是只靠这个结构的改动并不足以保证时间一致的结果。因此,和Ruder等人相似地,我们在风格和内容损失基础上增加了一个时间一致性损失 L t \mathcal{L}_t Lt,当相邻时间步输出非常不同时对网络进行惩罚来鼓励时间稳定的结果。
最简单的时间一致性损失对输出图像间每个像素的差别进行惩罚: L t ( p t − 1 , p t ) = ∥ p t − 1 − p t ∥ 2 \mathcal{L}_t(p_{t-1},p_t)=\|p_{t-1}-p_t\|^2 Lt(pt−1,pt)=∥pt−1−pt∥2。然而,为了生成高质量的风格化视频序列,我们不希望风格化的视频帧在时间步之间完全一样;我们希望在每个风格化帧中的笔触、线条和颜色按照和输入视频中的运动一致的方式迁移到后续帧中。
为了实现这个目的,我们的时间一致性损失利用了光流来确保输出帧中的变化和输入帧中的变化一致。具体来说,令 w = ( u , v ) w=(u,v) w=(u,v)为输入帧 c t − 1 c_{t-1} ct−1和 c t c_t ct之间的光流域。完美的光流给出了 c t c_t ct和 c t − 1 c_{t-1} ct−1之间像素的相关性;我们希望 p t p_t pt和 p t − 1 p_{t-1} pt−1对应的像素匹配。因此时间一致性损失惩罚所有像素坐标 ( x , y ) (x,y) (x,y)的差异: (6) p t − 1 ( x , y ) − p t ( x + u ( x , y ) , y + v ( x , y ) ) p_{t-1}(x,y)-p_t(x+u(x,y),y+v(x,y))\tag{6} pt−1(x,y)−pt(x+u(x,y),y+v(x,y))(6)先使用光流扭曲输出帧 p t p_t pt得到 p ~ t \tilde{p}_t p~t,然后计算 p ~ t \tilde{p}_t p~t和 p t − 1 p_{t-1} pt−1各个像素的差异来有效地实现这种差异。双线性插值的使用使得这种扭曲可微。
由于前景对象的移动, c t − 1 c_{t-1} ct−1中的某些像素可能在 c t c_t ct中被遮挡;同样的, c t − 1 c_{t-1} ct−1中被遮挡的一些像素可能在 c t c_t ct中显现出来。所以,如果强制对 p ~ t \tilde{p}_t p~t和 p t − 1 p_{t-1} pt−1所有像素使用时间一致性损失,可能在移动边界导致不自然的痕迹。因此我们使用遮挡掩模 m m m来避免对遮挡或者未遮挡的像素使用时间一致性损失,最终我们的时间一致性损失为: (7) L ( p t − 1 , p t ) = 1 H W ∥ m t ⊙ p t − 1 − m t ⊙ p ~ t ∥ F 2 \mathcal{L}(p_{t-1},p_t)=\frac{1}{HW}\|m_t\odot p_{t-1}-m_t \odot \tilde{p}_t\|_F^2\tag{7} L(pt−1,pt)=HW1∥mt⊙pt−1−mt⊙p~t∥F2(7)其中 m ( h , w ) ∈ [ 0 , 1 ] m(h,w) \in [0,1] m(h,w)∈[0,1]在遮挡和动作边界区域取值为1, ⊙ \odot ⊙是点乘, H , W H,W H,W是输入帧的高和宽。在图5中有对损失函数的总结。
计算这个损失需要光流和遮挡掩模;然而因为这个损失只在训练期间应用,我们的方法不需要在测试阶段计算光流或者遮挡掩模。