人工智能 wct

dovehome · December 15, 2019 · 76 hits

  本文学习任意风格只需要训练一个 WCT 模型,而且训练过程中不需要风格图的风格转换论文"Universal Style Transfer via Feature Transforms"。

  作者 Code
  Authors:Yijun Li, Zhaowen Wang, Chen Fang, Xin Lu, Jimei Yang, Ming-Hsuan Yang
  2017 NIPS

  目前的基于前馈的方法,推断时很有效,但是对于未见过的风格无法有效进行推断,或者在图片质量上妥协。我们提出一种简单有效,不需要在预先定义的风格图上训练的方法。关键的组成部分是被用于图片重建网络的一对特征转换,whitening 和 coloring。
  whitening 和 coloring 转换反映了内容图和给定风格图特征协方差的直接匹配,这和优化 Gram 矩阵来进行风格转换有相似的思想。

Introduction

  主要挑战是如何提取风格图的有效表示,然后将其匹配到内容图中。
  Gram 矩阵和协方差矩阵可以很好的刻画特征之间的关系,所以被用来捕获视觉风格特征。
  基于优化的方法可以处理任意风格的图片,并得到令人满意的结果,但是计算量巨大。基于前馈的方法可以很快得到转换后的图片,但是只能应用于固定数量的风格,或者在图片质量上妥协。
  在每一个中间层,我们的目标是转换提取的内容特征,使得它们和相同层的风格特征有一样的统计特性。我们发现在这些特征上做经典的 WCT 转换可以实现这一目标。
  我们首先利用 VGG-19 进行特征提取(encoder),然后训练一个对称 decoder 来反转 VGG-19 特征到原始图片,本质上就是重建图片。一旦训练完成,encoder 和 decoder 网络在整个实验中就固定不动了。
  为了进行风格转换,我们对内容特征的某一层应用 WCT,使得其协方差矩阵和风格特征的协方差矩阵匹配。转换后 的特征作为 decoder 层的输入以获得风格化后的图片。除了单层风格化,还有多层风格化 pipeline,其效果比单层的好。
  当给一个新的风格图时,我们不需要对风格图在已有的风格基础上进行微调,而是提取特征协方差矩阵,然后将它们通过 WCT 应用到内容特征上。
  本文主要算法结构如下: 算法wct

Proposed algorithm

  我们将风格转换表示为用特征转换(如 WCT)进行图片重建的过程。

reconstruction decoder

  decoder 被设计为与 VGG-19 对称的
  loss 为:

$$ L = ||I_o - I_i|| _2 ^2 + lambda || Phi (I_o) - Phi (I_i) || _2 ^2 $$

whitening and coloring transforms

本节用到的一些符号解释

符号 含义
$ I_c $ 内容图
$ I_s $ 风格图
$ f_c in R ^{ C × H_c W_c } $ 内容图的 VGG 特征, $ H_c $ 和 $ W_c $ 分别代表内容特征的高和宽, $ C $ 是 channel 数
$ f_s in R ^{ C × H_s W_s } $ 风格图的 VGG 特征
$ hat f_c $ 白化特征

  将 $ f_c $ 直接喂给 decoder,decoder 将重构原始图片 $ I_c $ 。接下来我们将使用 WCT 相对 $ f_s $ 的统计调整 $ f_c $ 。WCT 的目标是直接转化 $ f_c $ 以匹配 $ f_s $ 的协方差矩阵。包含两步:whitening transform 和 coloring transform。

Whitening transform

  在 whitening 之前,首先通过减去 $ f_c $ 的均向量 $ m_c $ 来集中 $ f_c $ ,然后将 $ f_c $ 进行如下线性转换得到 $ hat f_c $ 使得特征之间是不相关(即正交矩阵)的( $ hat f_c hat f_c^T = I $ ,转置=逆 的矩阵为正交矩阵)。 $$ hat f_c = E_c D _c ^{ - frac {1}{2} } E_c^T f_c $$    $ D_c $ 是协方差矩阵 $ f_c f_c^T in R ^{C × C} $ 特征值的对角矩阵, $ E_c $ 是对应特征向量的正交矩阵,满足 $ f_c f_c^T = E_c D_c E_c^T $ 。

解读上式

  协方差矩阵的 $-frac {1}{2} $ 方 * 矩阵=每行均变为均值为 0,方差为 1 的向量

   $ f_c f_c^T $ 为协方差矩阵,求其 $ - frac {1} {2} $ 方,不太好求得,所以对其进行对角线分解,对得到的对角矩阵进行分解,得到 $ f_c f_c^T = E_c D_c E_c^T $ ,其中 $ (E_c D_c E_c^T) ^{-frac {1}{2}} = E_c D_c ^{ - frac {1}{2} } E_c^T $ 。

  为了验证白化特征 $ hat f_c $ 中编码了哪些信息,我们用我们之前训练好的 decoder 将其反转到 RGB 空间。图 2 显示白化之后的特征依然保留了图内容的全局结构,但是移除了其他与风格相关的信息。

Coloring transform

  首先减去 $ f_s $ 的均向量 $ m_s $ 来集中 $ f_s $ ,然后执行 coloring 转换,即对 $ hat f_c $ 进行线性变换,其本质上是 whitening 步的逆步骤。这样,我们就能得到特征之间有着需要关系的 $ hat f_{cs} $( $ hat f_{cs} hat f_{cs} ^T = f_s f_s^T $ )。

$$ hat f _{ cs } = E _s D _s ^{ frac { 1 } { 2 } } E _s ^T hat f _c $$

   $ D_s $ 是协方差矩阵 $ f_s f _s ^T in R ^{ C × C } $ 特征值的对角矩阵, $ E_s $ 是对应特征向量的正交矩阵。
  最后,给 $ hat f _{ cs } $ 加上均向量 $ m_s $ 进行去中心化, $ hat f _{ cs } = hat f _{cs} + m_s $
  经过 WCT 变换后,在将其输入到 decoder 之前,将 $ hat f _{ cs } $ 和 $ hat f _{ c } $ 进行线性组合,方便用户控制风格化效果的程度。 $$ hat f _{ cs } = alpha hat f _{cs} + ( 1- alpha ) f_c $$    $ alpha $ 为风格权重。

multi-level coarse-to-fine stylization

  coarse-to-fine 风格化中,高层特征捕捉风格的显著特征,低层特征增强细节。如果换成 fine-to-coarse,低层信息在经过高层特征之后无法保留。

Experimental results

decoder training

  dataset:MSCOCO

style transfer

  • DeepArt:基于优化,可以处理任意的风格,但很可能遇到局部极小值问题
  • TNet:风格化速度提高了,但是为了效果,其在质量和通用性之间做了权衡,使得其会产生相同内容覆盖的重复模块
  • style-swap:能力有限,当风格在低阶信息(颜色)中很难反映时,内容特征会被严格保留
  • Huang:内容特征仅仅用来被调整以获得和风格特征相同的均值和方差,对于获得风格图的高阶表示是无效的。对于未见过的风格图没有通用性。对于捕获并合成显著风格模式是无效的,尤其是有着丰富局部特征和非平滑区域的复杂的风格。
  • 我们的方法:没有学习任何风格,我们的模型可以捕获风格图中明显的外观模式。此外,内容图中的主要部分在我们的模型中可以被风格化,其他方法只能转化相对平滑的区域。
  • 用协方差矩阵来定量分析风格化图片和风格图的差异

user study

efficiency

  在 WCT 中有一个特征值分解步,但随着图片 size 的增加,这一步的计算开销并不会随之增大,因为协方差矩阵的维度只取决于 filter channels 的数量,最大也就是 512(Relu_5_1)。

user control

  不仅仅能进行风格转换,还能满足用户的不同风格化需求,如:
  1. 大小:调整风格图输入的 size
  2. 权重:风格图和内容图占比,不需要重新进行优化,直接计算
  3. 空间控制:内容图的不同部分用不同风格进行转换,需要输入额外的 masks M

texture synthesis

  通过将内容图设置为随机噪声图(如高斯噪声),我们的风格化框架可以将其应用为纹理合成,或者可以直接将 $ hat f_c $ 初始化为白噪声,两种方法能得到相同的结果。
  经验结果:运行几次多层 pipeline 可以得到令人视觉上满意的结果。
  我们的方法也能将两种纹理进行结合,生成新的纹理效果。
  可生成多样性的纹理合成结果

参考

   Universal Style Transfer via Feature Transforms

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.