精华内容
下载资源
问答
  • 风格迁移
    千次阅读
    2021-12-18 20:16:48
    基于风格实例的文本风格迁移
    Text Style Transfer via Learning Style Instance Supported Latent Space

    原始论文:https://www.ijcai.org/Proceedings/2020/0526.pdf

    相关博客
    【自然语言处理】【文本风格迁移】基于向量分解的非并行语料文本风格迁移
    【自然语言处理】【文本风格迁移】基于风格实例的文本风格迁移

    一、简介

    • 风格迁移的目标是,保持句子语义内容不变的情况下,赋予句子不同的风格。由于缺乏大规模并行语料,近期主要的研究工作是集中在无监督迁移上的。
    • 文学理论和机器学习研究均表明内容和风格一定程度上是耦合的,这导致了内容保持和风格准确两者间的矛盾。
    • 目前主要有两种无监督风格迁移的范式
      • 一种是基于分解的范式。这种方法显式地从内容中分离风格,然后合并一个新的风格表示。但是,由于分解的难度,指定目标风格中通常会带一些不期望的内容。因此,该方法通常会获得一个高风格迁移准确率,但是很难保持全部的源内容。
      • 另一种范式是基于注意力结构来保证所有单词级别的源信息。不同于分解方法,该方法会强迫模型专注在风格独立的单词上。但是,这样的方法倾向于过度强调内容保持,导致风格准确性不理想。
    • 语言学研究表明,风格的综合表征能够通过多个实例中的广泛比较来更好的观察到。受这个观点的启发,论文提出了一种称为 StyIns \text{StyIns} StyIns的风格实例支持方法,从而减轻上面的矛盾。

    二、方法概述

    2.1 问题形式化

    ​ 假设具有 M M M个数据集 { D i } i = 1 M \{D_i\}_{i=1}^M {Di}i=1M,在 D i D_i Di中的句子共享相同风格 s i s_i si。给定一个具有源风格 s i s_i si的任意句子 x x x,风格迁移的目标是将 x x x改写为具有风格 s j s_j sj的新句子 y y y,并保持其主要内容。

    2.2 概述

    该方法的核心思路:使用一些具有某个风格的句子来获得表示该风格的向量,这些具有相同风格的句子称为风格实例。

    ​ 设存在一个句子集合 Φ K j = { y ^ } k = 1 K ⊂ D j \Phi_{K}^j=\{\hat{y}\}_{k=1}^K\sub D_j ΦKj={y^}k=1KDj,也就是这些句子共享风格 s j s_j sj,称这些句子为风格实例。利用这些风格实例来构造一个隐变量 z z z,来表示风格这个复杂的概念。假设同一个风格的句子间条件独立,可以推断出一个风格迁移的参数化表达式
    p ( y ∣ x , Φ K j ) = ∫ p ( y , z ∣ x , Φ K j ) d z = ∫ p ( y ∣ x , z ) ∗ p ( z ∣ Φ K j ) d z = E z ∼ p ( z ∣ Φ K j ) [ p ( y ∣ x , z ) ] (1) \begin{align} p(y|x,\Phi_K^j)&=\int p(y,z|x,\Phi_K^j)dz \\ &=\int p(y|x,z)*p(z|\Phi_K^j)dz \\ &=\mathbb{E}_{z\sim p(z|\Phi_K^j)}[p(y|x,z)] \end{align} \tag{1} p(yx,ΦKj)=p(y,zx,ΦKj)dz=p(yx,z)p(zΦKj)dz=Ezp(zΦKj)[p(yx,z)](1)
    等式(1)中 p ( y ∣ x , Φ K j ) p(y|x,\Phi_K^j) p(yx,ΦKj)表示给定风格实例 Φ K j \Phi_K^j ΦKj和待风格迁移样本 x x x,输出风格迁移后样本 y y y的概率。

    ​ 根据等式(1)的指导,使用一个称为源编码器的双向 LSTM \text{LSTM} LSTM编码器,称为 E s r c ( x ) E_{src}(x) Esrc(x)。源编码器 E s r c ( x ) E_{src}(x) Esrc(x)负责将句子 x x x编码为隐藏状态 H H H。使用一个记为 E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj)的风格编码器,负责基于风格实例建模分布 p ( z ∣ Φ K j ) p(z|\Phi_K^j) p(zΦKj)。使用一个称为 D ( H , z ) D(H,z) D(H,z)的解码器,其会基于 H H H z z z解码出风格迁移后的句子 y y y,其中 z z z是从 p ( z ∣ Φ K j ) p(z|\Phi_K^j) p(zΦKj)中采样得到的。三个组件 E s r c ( x ) E_{src}(x) Esrc(x) E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj) D ( H , z ) D(H,z) D(H,z)共同构成了整个文本风格迁移生成器 G ( x , Φ K j ) G(x,\Phi_K^j) G(x,ΦKj)

    总结: E s r c ( x ) E_{src}(x) Esrc(x)编码原始句子, E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj)编码风格实例, D ( H , z ) D(H,z) D(H,z)解码风格迁移后句子。

    四、隐风格空间学习

    E s r c ( x ) E_{src}(x) Esrc(x)是一个双向LSTM, D ( H , z ) D(H,z) D(H,z)是一个基于注意力机制的LSTM解码器。因此,主要的问题是如何确定 E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj)

    ​ 风格编码器 E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj)使用风格实例作为输入,构建出一个隐风格空间,最终输出风格表示 z z z,该表示用于指导后续解码器的风格生成。先前的工作采用变分自编码器来构建隐空间。但是,变分自编码器会假设句子独立并将其分配到一个各向独立的高斯隐空间中。这种假设并不合理,维度独立的高斯分布表达能力不足,且相同风格的句子并不独立,而是共享一个全局的风格空间。

    4.1 Generative Flow

    简单来说,使用变分自编码器对句子进行编码并不是最优的,因此这里使用Generative Flow。

    ​ 为了解决变分自编码器的问题,论文使用一种构建复杂分布的强力技术 generative flow, GF \text{generative flow, GF} generative flow, GF。简单来说, GF \text{GF} GF通过应用一系列参数化映射函数 f t f_t ft,将简单初始化隐变量 z 0 z_0 z0转换为复杂变量 z T z_T zT
    z t = f t ( z t − 1 , c ) , z 0 ∼ p ( z 0 ∣ c ) , t ∈ { 1 , 2 , … , T } (2) z_t=f_t(z_{t-1},c),z_0\sim p(z_0|c),t\in\{1,2,\dots,T\} \tag{2} zt=ft(zt1,c),z0p(z0c),t{1,2,,T}(2)
    其中, c c c是给定的条件, T T T​是参数化映射函数的数量。 GF \text{GF} GF要求每个函数 f t f_t ft都是可逆的、且可以计算雅克比行列式。经过转换后的最终分布的概率密度为
    l o g    p ( z T ∣ c ) = l o g    p ( z 0 ∣ c ) − ∑ t = 1 T l o g    d e t ∣ d z t d z t − 1 ∣ (3) log\;p(z_T|c)=log\;p(z_0|c)-\sum_{t=1}^Tlog\;det\Big|\frac{d_{z_t}}{d_{z_{t-1}}}\Big| \tag{3} logp(zTc)=logp(z0c)t=1Tlogdet dzt1dzt (3)
    ​ 目前,已经有许多 f t f_t ft被提出。这里选择一个简单但有效的方法 IAF(Inverse Autoregressive Flow) \text{IAF(Inverse Autoregressive Flow)} IAF(Inverse Autoregressive Flow)。具体来说,有
    [ m t , o t ] ← g t ( z t − 1 , c ) , σ t = sigmoid ( o t ) z t = σ t ⊙ z t − 1 + ( 1 − σ t ) ⊙ m t \begin{align} [m_t,o_t]\leftarrow g_t(z_{t-1},c),\sigma_t=\text{sigmoid}(o_t) \tag{4}\\ z_t=\sigma_t\odot z_{t-1}+(1-\sigma_t)\odot m_t \tag{5} \end{align} [mt,ot]gt(zt1,c),σt=sigmoid(ot)zt=σtzt1+(1σt)mt(4)(5)
    其中, ⊙ \odot 是element-wise乘法, g t g_t gt​是自回归网络。

    注: g t g_t gt​​​来自论文《Made: Masked autoencoder for distribution estimation》

    这里介绍了如何将隐向量 z 0 z_0 z0转换为复杂隐变量 z T z_T zT,下面介绍 z 0 z_0 z0是怎么来的。

    4.2 风格实例支持的隐空间

    ​ 为了构建更具表达能力的隐空间,这里抛弃平均场假设,通过利用 K K K​个风格实例 Φ K j = { y ^ k } k = 1 K \Phi_K^j=\{\hat{y}_k\}_{k=1}^K ΦKj={y^k}k=1K​来构建隐空间,而不是单个实例。具体来说,将每个风格实例 y ^ k \hat{y}_k y^k​输入至一个双向 LSTM \text{LSTM} LSTM​,并获得向量表示为 v k v_k vk​。假设初始隐状态为 z 0 z_0 z0​,且服从各向同性高斯分布
    z 0 ∼ p ( z 0 ∣ Φ K j ) = N ( u 0 , σ 0 2 I ) u 0 ≈ 1 K ∑ k = 1 K v k , σ 0 2 ≈ 1 K − 1 ∑ k = 1 K ( v k − u 0 ) 2 c = M L P ( u 0 ) \begin{align} &z_0\sim p(z_0|\Phi_K^j)=\mathcal{N}(u_0,\sigma_0^2I) \tag{6}\\ &u_0\approx \frac{1}{K}\sum_{k=1}^K v_k,\sigma_0^2\approx\frac{1}{K-1}\sum_{k=1}^K(v_k-u_0)^2 \tag{7}\\ &c=MLP(u_0) \tag{8} \end{align} z0p(z0ΦKj)=N(u0,σ02I)u0K1k=1Kvk,σ02K11k=1K(vku0)2c=MLP(u0)(6)(7)(8)
    其中, z 0 z_0 z0的均值使用极大似然估计近似,方差使用无偏估计; c c c Φ K j \Phi_K^j ΦKj的全局表示,其主要是使用 MLP \text{MLP} MLP进行计算,在公式(4)会使用 c c c

    4.3 风格编码器

    ​ 随着上面两个模块的引入,就可以得到风格编码器 E s t y ( Φ K j ) E_{sty}(\Phi_K^j) Esty(ΦKj)的输出 z z z。具体来说,使用等式 ( 6 ) (6) (6)来采样 z 0 z_0 z0,并使用等式 ( 2 ) (2) (2)进行映射。将采样得到的 z z z与词向量进行拼接,再输入至解码器的每个时间步上。

    五、无监督训练

    ​ 给定源句子 x x x以及源风格 s i s_i si和目标风格 s j s_j sj,并给定两个风格实例集合 Φ K i \Phi_K^i ΦKi Φ K j \Phi_K^j ΦKj​,使用下面的损失函数进行优化:

    5.1 Reconstruction Loss

    ​ 该损失函数已被不同的模型所使用,其需要模型基于源风格信号来重构给定的句子
    L r e c o n = − l o g    p G ( x ∣ x , Φ K i ) (9) \mathcal{L}_{recon}=-log\;p_G(x|x,\Phi_K^i) \tag{9} Lrecon=logpG(xx,ΦKi)(9)

    使用 x x x和与 x x x相同风格的风格实例 Φ K i \Phi_K^i ΦKi来重构 x x x

    5.2 Cycle Consistency Loss

    ​ 该损失函数最先被用在图像风格迁移中,被用来增强内容保持,之后被应用在文本上。这里用不同风格的实例来实现源句子的两个方向转换
    L c y c l e = − l o g    p G ( x ∣ y , Φ K i ) , y ← G ( x , Φ K j ) (10) \mathcal{L}_{cycle}=-log\;p_G(x|y,\Phi_K^i),y\leftarrow G(x,\Phi_K^j) \tag{10} Lcycle=logpG(xy,ΦKi),yG(x,ΦKj)(10)
    在每次迭代中,会提供不同的采样实例来帮助 StyIns \text{StyIns} StyIns更好的概况风格属性。

    使用迁移后句子y和风格实例 Φ K i \Phi_K^i ΦKi来反向生成 x x x

    5.3 Adversarial Style Loss

    ​ 由于没有任何并行语料,这里使用对抗训练来构建监督信号。具体来说,使用具有 M + 1 M+1 M+1个类别的分类器作为判别器 C C C​,用于分类输入句子的风格。生成器的目标是欺骗判别器
    L s t y l e = − l o g    p C ( j ∣ y ) (11) \mathcal{L}_{style}=-log\;p_C(j|y) \tag{11} Lstyle=logpC(jy)(11)
    其中, p C ( j ∣ y ) p_C(j|y) pC(jy)表示判别器认为 y y y属于风格 j j j的概率, L s t y l e \mathcal{L}_{style} Lstyle用于更新生成器的参数。

    判别器被交替优化
    L C = − [ l o g    p C ( i ∣ x ) + l o g    p C ( i ∣ x ^ ) + l o g    p C ( M + 1 ∣ y ) ] (12) \mathcal{L}_C=-[log\;p_C(i|x)+log\;p_C(i|\hat{x})+log\;p_C(M+1|y)] \tag{12} LC=[logpC(ix)+logpC(ix^)+logpC(M+1∣y)](12)
    其中, x ^ ← G ( x , Φ K i ) \hat{x}\leftarrow G(x,\Phi_K^i) x^G(x,ΦKi)​​, L C \mathcal{L}_C LC用于更新判别器的参数。

    损失函数 L s t y l e \mathcal{L}_{style} Lstyle是用于更新生成器的,使生成器能够更新的生成指定风格的句子;损失函数 L C \mathcal{L}_C LC是用于更新判别器,使判别器能够更加准确的判断句子的风格。二者交替进行训练。

    六、半监督训练

    ​ 前面介绍的方法主要是基于没有并行风格语料的情况。但是,当 x x x拥有并行语料 y ∗ ∉ Φ K i y^\ast \notin\Phi_K^i y/ΦKi,则可以通过最小化

    − l o g    p ( y ∗ ∣ x , Φ K j ) -log\;p(y^\ast|x,\Phi_K^j) logp(yx,ΦKj)创建监督信号,从而辅助模型更好的完成风格迁移。

    ​ 这里先推导一下 − l o g    p ( y ∗ ∣ x , Φ K j ) -log\;p(y^\ast|x,\Phi_K^j) logp(yx,ΦKj)的上界,

    − l o g    p ( y ∗ ∣ x , Φ K j ) ≤ E q ( z ∣ y ∗ , Φ K j ) [ l o g    p ( y ∗ ∣ z , x ) ] − K L [ q ( z ∣ y ∗ , Φ K j ) ∣ ∣ p ( z ∣ Φ K j ) ] (12) -log\;p(y^*|x,\Phi_K^j)\leq \mathbb{E}_{q(z|y^*,\Phi_K^j)}[log\;p(y^*|z,x)] - KL[q(z|y^*,\Phi_K^j)||p(z|\Phi_K^j)] \tag{12} logp(yx,ΦKj)Eq(zy,ΦKj)[logp(yz,x)]KL[q(zy,ΦKj)∣∣p(zΦKj)](12)
    基于最小化这个上界,可以得到最终监督的Loss
    L s u p e r = − α ∗ E q ( z ∣ y ∗ , Φ K j ) [ l o g    p ( y ∗ ∣ z , x ) + l o g    p ( z ∣ Φ K j ) − l o g    q ( z ∣ y ∗ , Φ K j ) ] + β ∗ E q ( z ∣ Φ K j ) [ − l o g    p ( y ∗ ∣ z , x ) ] \mathcal{L}_{super}=-\alpha*\mathbb{E}_{q(z|y^*,\Phi_K^j)}[log\;p(y^*|z,x) + log\; p(z|\Phi_K^j)-log\;q(z|y^*,\Phi_K^j)]+\beta*\mathbb{E}_{q(z|\Phi_K^j)}[-log\;p(y^*|z,x)] Lsuper=αEq(zy,ΦKj)[logp(yz,x)+logp(zΦKj)logq(zy,ΦKj)]+βEq(zΦKj)[logp(yz,x)]
    其中, α \alpha α β \beta β是超参数。

    ​ 通过优化 L s u p e r \mathcal{L}_{super} Lsuper,同时最小化了 − l o g    p ( y ∗ ∣ x , Φ K j ) -log\;p(y^\ast|x,\Phi_K^j) logp(yx,ΦKj)的上边界和下边界。

    七、整体训练流程

    for 迭代数 do

    ​   采样源风格 s i s_i si和目标风格 s j s_j sj

    ​   从 D i D_i Di中采样风格实例 Φ K i \Phi_{K}^i ΦKi,从 D j D_j Dj中采样风格实例 Φ K j \Phi_{K}^j ΦKj

    ​   从 D i D_i Di中采样实例 x x x,其中 x ∉ Φ K i x\notin \Phi_K^i x/ΦKi

    ​   累加 L r e c o n \mathcal{L}_{recon} Lrecon L c y c l e \mathcal{L}_{cycle} Lcycle L s t y l e \mathcal{L}_{style} Lstyle

    ​   if y ∗ y^\ast y存在 do

    ​     累加 L s u p e r \mathcal{L}_{super} Lsuper

    ​   更新生成器 G G G的参数

    ​   for 判别器更新的step do

    ​     使用 L C \mathcal{L}_{C} LC更新生成器 C C C的参数

    ​   end for

    end for

    更多相关内容
  • 实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码 04 图像风格迁移实用代码...
  • 实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用代码 30 快速图像风格迁移实用...
  • OpenCV图像风格迁移所用模板-Candy 使用方法: import cv2 image_file = 'xxx.jpg' #目标文件 model = 'Candy.t7' #模板文件 net = cv2.dnn.readNetFromTorch('models/' + model) image = cv2.imread('...
  • 使用神经网络进行艺术风格迁移的原始工作提出了一种适用于任意绘画的慢速优化算法。随后的工作开发了一种快速艺术风格转换的方法,该方法可以实时运行,但仅限于一种或一组有限的风格。 该模块执行快速的艺术风格...
  • 图像风格迁移技术是计算机视觉中的重点技术,传统的图像风格迁移技术采 用手工演算的方式,计算过程复杂,计算时间漫长,图像风格迁移效果不理想。 随着人工智能技术在计算机视觉领域的应用逐步广泛,一些艺术风格...
  • 针对该问题,不同于基于特征或公共子空间的域适应方法,提出一种基于图像风格迁移的解决方法。具体地,基于CycleGAN网络改进得到Face-CycleGAN,在保持身份属性的前提下,对现有带标签数据进行风格迁移,使其在背景...
  • 该论文提出了一种基于深度 CNN 的艺术风格迁移方法,该方法可自动将艺术风格叠加在任何输入照片上。 生成的图像具有与艺术家的画作相似的视觉外观。 现有的艺术风格转移方法是使用艺术家的一幅画来生成他/她的绘画...
  • OpenCV图像风格迁移所用模板文件之starry_night.t7 使用代码: import cv2 image_file = xxx.jpg' #目标文件 model = 'starry_night.t7' #模板文件 net = cv2.dnn.readNetFromTorch('models/' + model) ...
  • 实现基于深度卷集神经网络的图像风格迁移的程序,采用python语言编写代码
  • 基于opencv的风格迁移

    2021-01-20 03:10:38
     风格迁移的也是深度学习中的一个小的计算机视觉任务。目的是将A图像的风格迁移到B图像。  风格的定义在在深度学习中可以认为是一些底层的特征。比如纹理特征等。 2、代码  像我这样懒的孩子不喜欢训练一个模型的...
  • 图像风格迁移原始论文完整实现代码,可以实现内容图片和风格图片的转化,https://blog.csdn.net/kevinoop/article/details/79827782 这个博客有代码详细介绍。
  • 图片风格迁移系统.zip

    2021-10-14 20:15:38
    pytorch深度学习实现的图片风格迁移系统,含结果、工程文件、jupyter文件、redeme说明,个人课设作品分享,原创,项目完整
  • 训练时间10小时,完成6万张图片输入训练,模型名字中数字为读取多少张图片后生成的模型,文件夹内图片为该模型的风格,该方法一个模型只能实现一个风格
  • 图像风格迁移代码.zip

    2020-11-03 16:45:22
    图像风格迁移源代码,jupyter文件有注释,附带VGG16。基于keras进行了实现。 程序中使用到了VGG16的预训练模型vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5(已放入zip包),第一次调用会自动下载,如果下载...
  • 下载深度学习的VGG19网络参数,有下载地址,VGG19网络参数参数下载放在指定的位置,即可运行
  • 图像风格迁移。输入目标图像和风格图像,把目标图像转化为风格图像的风格(如:素描,油画等)适用于风景,人物,建筑照片的艺术化处理
  • 深度学习风格迁移训练后权重 ckpt格式
  • 影像风格迁移.zip

    2020-05-18 17:05:50
    实现文章Gatys_Image_Style_Transfer_CVPR_2016对应的代码,将一个影像的风格(特征)通过深度学习网络提取并添加到目标影像中,文件中包含imagenet-vgg-verydeep-19预训练模型(大小受限放在百度盘,链接看使用方法...
  • 神经风格迁移技术主要用于对图像、视频等进行风格化,使其具有艺术美感,该领域极具应用价值,是人工智能的热门研究领域之一。
  • 风格迁移模型实例

    2019-04-03 16:11:51
    风格迁移模型的实现例子,有兴趣的可以看看,虽然只是个简单的例子,但对初学者还是比较友好的
  • 单张图片的图像风格迁移,包含图像已训练完成的数据模型,可以进行输出图片的质量选择,进行照片,背景图风格转换学习。
  • 使用VGG19迁移学习实现图像风格迁移 这是一个使用预训练的VGG19网络完成图片风格迁移的项目,使用的语言为python,框架为tensorflow。 给定一张风格图片A和内容图片B,能够生成具备A图片风格和B图片内容的图片C。此...
  • 《数字图像处理》期末考核报告题 目基于 CycleGAN 实现图像风格迁移姓 名学 号院、 系专 业二〇二一年十二月基于 CycleGAN 实现图像风格迁移摘 要:使用循环一致性生成生成对抗网络(Unpaired Image-to-Image ...
  • 介绍了一种使用多维度直方图匹配的图像风格迁移算法,对图像风格迁移问题采用多维度直方图匹配的方法,实现灰度图到灰度图的风格迁移,彩色图到灰度图的风格迁移
  • 基于卷积神经网络的风格迁移算法,模型使用VGG-19,实验环境:Tensorflow2.0,python3.6,支持GPU加速
  • -- 本文来自于VIP Lab的黄宇杰同学撰稿风格迁移是一个有趣的计算机视觉话题。它被用于我们的日常生活中,比如我们常用的美图工具中的各类滤镜背后就是风格迁移技术。其实包括真人到二次元人物、二次元人物到真人之间...

    463ee4ad896bd0542e13c870ecb7a9d9.png

    -- 本文来自于VIP Lab的黄宇杰同学撰稿

    风格迁移是一个有趣的计算机视觉话题。它被用于我们的日常生活中,比如我们常用的美图工具中的各类滤镜背后就是风格迁移技术。其实包括真人到二次元人物、二次元人物到真人之间的转换[1](图1(a)),还有妆容的迁移[2](图1(b))等都可以看作是风格迁移在一些特定领域的应用。风格迁移还经常作为辅助手段来提高其它计算机视觉任务的性能,如行人重实别[3]。而且风格迁移对于理解图像和图片表示的研究具有很重要的意义。

    ce34b91238ced7ccce50cffe43bca675.png
    图 1

    通常提及风格迁移(Style Transfer),如图2所示,我们指的是将图A的风格迁移到图B中去,即生成一张具有图A风格和图B内容的图C。这里我们主要介绍从Gatys et al. [4]将神经网络引入风格迁移领域后,任意风格迁移的发展历程。

    7825fff0ee9670690cdc4d9a1c3cb284.png
    图 2

    Gatys et al. [4]通过根据内容(生成的图片具有其内容)和风格(生成的图片具有其风格)图来对一张白噪声图片进行训练,从而获得风格迁移后的图片。训练方法采用的是和训练网络一样的梯度下降法,这里只是把白噪声图片里的像素值当作网络的权重来进行训练。那么问题的关键就是如何构建损失函数了。因为风格迁移时是难以收集真正的风格迁移后的图片来作为label(标签),所以它的学习过程是半监督或者无监督的。这里作者采用了分别根据风格图和生成图来构成风格损失,根据内容图和生成图构成内容损失。

    • 内容损失

    作者采用图片由VGG16 [5]输出的特征图构成内容损失,公式如下:

    eafdd10cd0c6668d3d14fbf1e59d228c.png

    其偏微分公式如下:

    8c85dd9b2b1ad62031740cb58a1db06a.png

    其中和分别表示内容图和生成的图由VGG16第l层输出的特征图在位置(i, j)处的值,这里j的范围是[0, W*H),i的范围是[0, C),其中W和H分别是特征图的宽和高,C是特征图的通道数。下面就是确定l,为此作者进行了实验,如图3下半部分所示,只使用内容损失来训练白噪声图片,a-e分别是利用VGG16的conv1_2, conv2_2, conv3_2, conv4_2, conv5_2层输出的特征图来构成内容损失,然后训练白噪声图片得到的结果。可以发现随着层数的加深高层次的内容信息被保留,低层次的细节像素信息被剔除。而风格迁移要的就是剔除低层次细节信息后的高层次内容信息,因为低层次细节信息中会保留原图的风格。所以作者最终采用的是conv4_2输出的特征图。

    1d9ea4ba59fa09dec7ce99063a920a8a.png
    图 3
    • 风格损失

    作者利用VGG16输出的特征图的Gram矩阵[4]来表示一张图的风格。Gram矩阵的获取公式如下:

    66b9d2e5b56cea288dafe31aefbb8685.png

    其中是VGG16的l层输出的特征图F对应的Gram矩阵中的一个值,ij是通道索引,k是特征图宽和高构成的空间中的位置索引。这个公式相当于将特征图中的ij通道拿出来进行点积。一个特征图对应的Gram矩阵就是将这个特征图中的通道两两组合进行点积所获得的值的集合,假设一个特征图有C个通道,那么其对应的Gram矩阵拥有C*C个值。由生成图和风格图从VGG16的l层输出的特征图构成的风格损失如下:

    cfefb1ffeecae424fb4f06dd53f6e63b.png

    GA分别是风格图和生成图对应的Gram矩阵。NM分别表示特征图通道数和宽与高的乘积。因为风格不同于内容,涉及局部和全局风格,而VGG16的不同层对应的语义级别和分辨率不同,所以作者采用了VGG16不同层输出构成的风格损失的组合来获得最终的风格损失:

    2e666cd4a5fd946561c5a462d6888386.png

    其中w表示这一层风格损失的权重(都取1),ax分别是风格和生成图。第l输出的特征图构成的风格损失对应的偏微分为:

    a89a9a8d1e1f5cc27b085d03eea3ae33.png

    如图3上半部分所示,只用风格损失去训练白噪声图片,a-e分别是使用{conv1_1},{conv1_1, conv2_1},{conv1_1, conv2_1, conv3_1},{conv1_1, conv2_1, conv3_1, conv4_1}和{conv1_1, conv2_1, conv3_1, conv4_1, conv5_1}。可以发现随着选取的层数增多,去除了内容信息的风格被更好地提取了出来,只使用浅层的话风格缺少全局性。所以作者最后选用了{conv1_1, conv2_1, conv3_1, conv4_1, conv5_1}。

    总的损失函数如下:

    fd2b8d3bc3f28fa830a88fbdb83978d1.png

    其中和分别是内容和风格损失的权重,p, ax分别是内容,风格和生成图片。有了损失函数,对白噪声图片进行梯度下降训练即可,最终算法地整体结构如图所示:

    5d2e7e282cee9fe7c13753ed1b806e69.png
    图 4

    本算法的效果如下图所示:

    a274a08c0dafcf57b8cebbc1a4c4811e.png
    图 5

    这个算法开创性地将神经网络引入风格迁移,使得风格迁移地效果有了质地飞跃,可以说它是使用神经网络做风格迁移的开山鼻祖,后面一系列的研究都是以它为前提的。这个方法虽然效果显著,但是每生成一张风格迁移图片都需要经过训练,而这个训练时非常耗时的。为了解决这个问题,一系列工作被展开。

    一个网络一种风格

    [4]的中方法是通过训练白噪声图片完成风格迁移,为了解决训练过程的耗时问题,能否通过训练网络,然后让网络来完成风格迁移呢?风格迁移是根据一张风格图和一张内容图去获得迁移后的图片,所以可以说之前的训练过程包含内容和风格两方面的训练。因此[6]和[7]利用神经网络代替了内容的训练。因为[6]和[7]中的算法思路基本相似,所以这里以[6]中的方法为例来进行介绍。

    38da8796debb3ccb59c6aafc759d5659.png
    图 6

    [6]设计了如图6所示的网络来完成特定风格的迁移,即针对一张风格图片ys,Image Transformation Net完成训练后,输入任意的内容图片x,可以完成这张内容图片对于图片ys的风格的迁移。采用的损失函数和[4]中一样。Image Transformation Net输出的完成迁移后的图片作为[4]中损失中的生成图片。图中VGG-16是用于在训练时产生损失函数的。yc是训练时候用的内容图片(不断变换的),训练的时候ycx是保持一致的,ys则是固定的风格图片。图7是作者用50张不同的内容图片,分别输入训练好的Image Transformation Net以及使用[4]中的方法(二者都采用相同的风格图),从而获得它们的损失函数值,图中的实线是平均值,虚线是平均值加减方差后的值,我们可以发现Image Transformation Net可以获得和[4]方法接近的损失函数值。

    798b6cc3cf52fd22c0947aa46d3aae58.png
    图 7

    图8则是一些可视化的风格迁移结果,效果也不错。

    f0088179c431bb61dfb2590bf0f2fdc2.png
    图 8

    当然同期还有一些算法能够利用一个前馈网络完成多个风格的迁移,如[8]和[9],但是还是未能完成用一个前馈网络完成任意风格迁移,所以我们这边也不对他们做过多的介绍。

    我们直接进入任意风格迁移的世界。(未完待续)

    展开全文
  • 图像风格迁移-数据集

    2021-03-05 06:58:34
    暂无描述 GBDT原理.md
  • 使用Tensorflow2.0实现神经风格迁移,详细代码介绍可以参考我的博文:https://blog.csdn.net/qq_36758914/article/details/104799358
  • 通过PSNR和SSIM判断图像相似度,从宫崎骏动漫“起风了”中截取图像数据集,数据集中的图像大小为512*512,共1936张图像,该数据集可用于深度学习风格迁移

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,208
精华内容 17,283
关键字:

风格迁移