1. 概述
虽然pix2pix作为风格转换模型被提出,但它依赖于成对的数据集。与之相比,CycleGAN通过引入循环损失,实现了无需配对数据的风格转换。不过,CycleGAN在处理需要大幅几何变化的风格转换时表现不佳,仅在如马和斑马这类颜色变化的场景中有效。
2018年,MUNIT利用变分自编码器(VAE)为两个领域间建立了共享潜在空间。直观上,用单一潜在变量表示两个领域内的目标是直接的,但实际上,捕捉更复杂的领域间几何结构却充满挑战。
本研究提出的模型将图像分解为几何和外观两部分,并将它们分别编码为潜在变量,从而实现了需要显著几何变化的风格转换。此外,与传统方法相比,我们的模型能够生成更自然、更多样化的图像。
论文地址:https://arxiv.org/abs/1904.09571
2.Transgaga
2.1 算法架构
所提出方法的架构图展示如下。目标是围绕中心界线,实现从左至右的域转换。
以架构图为参考,我们将图像分解为几何和外观两部分。由于架构的对称性,x被y替代。首先,让我们阐述图像的几何信息。图像的方向性被编码在一个由
g
x
g_x
gx表示的热图之中。输入图像首先送入
E
g
x
E_{g_x}
Egx,即自动编码器,以产生一个与输入图像分辨率相匹配的热图。该热图拥有30个通道。随后,该热图被送入
E
c
x
E_{c_x}
Ecx,也就是编码器,以提取出
c
x
c_x
cx,即几何形状的潜在表示(图中以黄色方块表示)。接下来是外观部分。图像的形状信息被直接送入编码器
E
a
x
E_{a_x}
Eax,以获得其潜在表示
a
x
a_x
ax。将上述得到的
c
x
c_x
cx和
a
x
a_x
ax送入解码器
D
x
D_x
Dx,即可重建图像
x
^
\hat{x}
x^。
风格转换是如何进行的呢?风格转换同样包含几何转换 Φ h x → y \Phi_{h_x \rightarrow y} Φhx→y和外观转换 Φ a x → y \Phi_{a_x \rightarrow y} Φax→y。通过 Φ \Phi Φ,几何和外观的潜在表征 p x p_x px和 a x a_x ax被分别转换到另一个域,它们各自拥有一个Transformer。
2.2 损失函数
在文档中提及的损失函数是TransGaGa模型的关键部分,用于实现图像风格转换。以下是对文档中损失函数部分的重新排版和详细解释:
VAE损失函数 (LCVAE)
VAE损失函数结合了KL散度和重构误差,用于确保模型正确编码和解码。公式如下:
L C V A E ( π , θ , ϕ , ω ) = − K L ( q θ ( c ∣ x , g ) ∥ p ( a ∣ x ) ) + ∥ x − D ( E c ( E g ( x ) ) , E a ( x ) ) ∥ L_{CVAE}(\pi, \theta, \phi, \omega) = -KL(q_\theta(c|x,g) \| p(a|x)) + \|x - D(E_c(E_g(x)), E_a(x))\| LCVAE(π,θ,ϕ,ω)=−KL(qθ(c∣x,g)∥p(a∣x))+∥x−D(Ec(Eg(x)),Ea(x))∥
- 第一项 − K L ( q θ ( c ∣ x , g ) ∥ p ( a ∣ x ) ) -KL(q_\theta(c|x,g) \| p(a|x)) −KL(qθ(c∣x,g)∥p(a∣x)) 是KL散度,表示热图中的潜在变量 c c c 与输入图像中的潜在变量 a a a之间的“距离”。
- 第二项 ∥ x − D ( E c ( E g ( x ) ) , E a ( x ) ) ∥ \|x - D(E_c(E_g(x)), E_a(x))\| ∥x−D(Ec(Eg(x)),Ea(x))∥ 是重构误差,确保解码器生成的图像与输入图像 x x x 接近。
几何损失函数 (Lprior)
几何损失函数关注热图中每个通道的值,防止热图集中于中心。公式如下:
L p r i o r = ∑ i ≠ j e x p ( − ∥ g i − g j ∥ 2 2 σ 2 ) + V a r ( g ) σ L_{prior} = \sum_{i \neq j} exp\left(-\frac{\|g_i - g_j\|^2}{2\sigma^2}\right) + \frac{Var(g)}{\sigma} Lprior=i=j∑exp(−2σ2∥gi−gj∥2)+σVar(g)
- σ \sigma σ 是超参数。
- 第一项鼓励每个通道 ( g_i ) 取不同的值。
- 第二项约束通道值的方差,避免取过大的值。
外观损失函数 (Lacon)
外观损失函数处理风格转换后图像的相似性。公式如下:
L a c o n = ∥ ζ ( x ) − ζ ( D y ( Φ g x → y ⋅ E g x ( x ) , Φ a x → y ⋅ E a x ( x ) ) ) ζ ( x ) ∥ Lacon = \left\| \frac{\zeta(x) - \zeta(D_y(\Phi_{gx \rightarrow y} \cdot E_{gx}(x), \Phi_{ax \rightarrow y} \cdot E_{ax}(x)))}{\zeta(x)} \right\| Lacon= ζ(x)ζ(x)−ζ(Dy(Φgx→y⋅Egx(x),Φax→y⋅Eax(x)))
- ( \Phi ) 是变换器,将几何和外观的潜在表示转换到目标域。
- ( D_y ) 是解码器,结合了变换后的几何和外观信息来生成图像。
- ( \zeta() ) 是训练后的VGG-16的输出,确保域变换前后图像在形状上的相似性。
总损失函数 (Ltotal)
总损失函数是上述损失函数的结合,加上其他CycleGAN中定义的损失项:
L t o t a l = L C V A E + L p r i o r + L a c o n + L a c y c + L c y c + L p i x c y c + L a a d v + L g a d v + L p i x a d v L_{total} = L_{CVAE} + L_{prior} + Lacon + L_{acyc} + L_{cyc} + L_{pixcyc} + Laadv + L_{gadv} + L_{pixadv} Ltotal=LCVAE+Lprior+Lacon+Lacyc+Lcyc+Lpixcyc+Laadv+Lgadv+Lpixadv
- L c y c L_{cyc} Lcyc 是CycleGAN中提出的循环损失。
- L a d v L_{adv} Ladv 类似于传统GAN中的对抗损失函数。
3.实验结果
基线是CycleGAN、UNIT、MUNIT和DRIT。生成的图像以其真实性和多样性作为评价指标。人的主观评价也会进行。
3.1 生成图像
以下是建议方法和基线的实际风格转换结果。
上图显示,所提出的方法具有自然的风格转换,而基线具有不自然的形状和破碎的轮廓。在图5中,我们比较了所提出的方法的多模态。在图5中,我们比较了所提出的方法与基线的多模态。
3.2 主观评价和得分
受试者从两个不同的模型中看到生成的图像。比较了一下,问他们(a)哪一个更真实,(b)哪一个有更好的几何形状。结果如下表所示。在(a)和(b)中,建议的方法比基线的性能高出50%。
接下来,我们使用FID和Diversity评分来评估模型。FID是输入图像和输出图像的分布距离,得分越低越好;Diversity是输出图像的多样性,得分越高越好;Diversity只对多模态模型进行评价。结果如下表所示,我们可以看到,除了猫→人脸和狗→猫的多样性外,其他提出的方法在得分上都有优势。
4.总结
在image2image任务中,我们将输入的图像分为几何图形和外观,并在潜伏空间中为它们分别准备了变换器,这使得我们能够在几何变化较大的情况下变换风格。此外,通过引入新的损失函数,我们使学习比CycleGAN更稳定。