官方源码和论文地址
又是基于StyleGAN用于图像编辑的又一力作!
基于StyleGAN做图像编辑,首先要找到隐向量(GAN inversion),这个过程的主流方式有两种:
- 优化隐向量,找寻能重构出指定图像的隐向量。代表有image2style,in-domian GAN。
- 设计一个Encoder,用于将图像映射到StyleGAN的隐空间上。代表有style-encoder。
- 其实还有一种比较小众,利用分类器的思想,步骤也繁琐。代表有interpretGAN。
IDEA
目前基于styleGAN的图像编辑,评判的标准有两个,重构出来的效果以及可编辑性的强弱,作者分别用distortion(扭曲程度)和editability(编辑能力)代表。很可惜的是,一般扭曲程度低的方法,编辑能力弱。这是因为找到的隐向量已经离stylegan的W空间很远了,不是一个分布。比如image2style就提出,在W+空间优化隐向量,可以重构出任意一行图像,不管是不是人脸图像,但可编辑能力大大降低。
作者认为,找到的隐向量为好的标准就是解决W空间。接近有两层含义:1. 每个style code之间的方差小;2.每个style code都在W空间中。
围绕以上两个原则,作者提出e4e(encoder for editing),一个编码器,用于将指定图像映射到隐空间上。同时还提出了一个用于评判隐向量重构性能和可编辑性能的综合性指标。
同时作者在正式介绍encoder之前,首先分析了扭曲程度和感知效果之间的关系。image2style已经指出,stylegan可以重构出任意的图像,不管是不是训练集中的图像样式。但找到的隐向量的编辑能力却很差,这是因为隐向量已经不在W空间了。此时该空间记作W空间。
如上图所示,在W空间有更好的重构效果,但在此隐向量上进行编辑,得到的图像的感知效果就很低,说明可编辑性很小。这说明,扭曲程度和可编辑性是两个矛盾的东西,想要可编辑性高,就要损失一定的重构效果。
W
W
W: stylegan的style map 的输出空间
W
k
W^k
Wk:还是在W空间,只不过有k个不同的向量,每个向量是对应的style modulation的输入,将被映射到W+空间。
W
∗
W_*
W∗:不在W空间,仅为了满足最大重构效果。不考虑可编辑性,如使用一些优化方式得到。
W
∗
k
W_*^k
W∗k:不在W空间,有是k个不同的向量,每个向量是对应的style modulation的输入,将被映射到W+空间。
Method
(作者关于GAN inversion的related work写的挺全面的,有兴趣的可以去读一下)
作者之所以选择encoder-based的inversion方法,原因有两点:
- 快速,因为基于优化的方式,要迭代很多次以上。stylegan2的project是1000次,大概7分钟。
- 让encoder的输出控制在W空间中更适合编辑,基于优化的方式不容易控制隐向量的分布。
一个好的encoder,需要输出空间接近W空间。想要做到这一点:
- 可以优化每个风格向量的方差,让其尽量小,极限的情况是完全一样;
- 并足够接近stylegan的W空间
优化方差
为了到达第一个目的,作者提出渐进训练方法。
首先encoder记作E,输入是指定图像x。输出是N个style code。
E
(
x
)
=
(
w
,
Δ
1
,
.
.
.
Δ
N
−
1
)
E(x) = (w, \Delta_1,...\Delta_{N-1})
E(x)=(w,Δ1,...ΔN−1)
后面N-1项是偏置,加在w上得到N个style code,具有不同的值,N就是stylegan中的style modulation层的数目。该空间记作
W
∗
k
W^k_*
W∗k空间。在训练初期,让所有的偏置都为0,这样N个向量都是相同的,都是
w
w
w。即先鼓励encoder往
W
∗
W_*
W∗空间上靠。然后逐渐的让偏置不一样,这样每个style modulation层都有不同的style code,灵活性更高,保证了重构质量,实现了从
W
∗
W_*
W∗空间上
W
∗
k
W^k_*
W∗k的变化。其实如果偏置都为0,encoder也倾向于向
W
W
W空间靠。但因为学习偏置的关系,离W空间也不远,也保证了可编辑的能力。距离由网络自己学习,自行权重可编辑性和重构性的tradeoff。
为了让偏置临近
W
∗
W_*
W∗空间,作者设置了一个浅显易懂的正则损失:
优化和W空间的距离
因为styleGAN的W空间并不能显式建模,所有作者使用了对抗思想,设置一个latent code discriminator(
D
W
D_W
DW)区分encoder的分布和W空间的分布。用同一个判别器,使用所有N个style code和真实的原始W空间向量。将N个loss求平均优化。
实现细节
loss function
- 用来优化扭曲程度的loss,有基于自监督的loss,感知loss,L2loss
- 用来优化可编辑能力的loss,有偏置正则loss,和隐空间判别器和encoder之间的对抗loss。
LEC指标(Latent Editing Consistency)
不介绍了,比较容易理解。
实验
作者设置了4个对照组
离W空间的距离
作者评估了encoder的输出空间的方差,D组是最小的。其实评估了离W空间的距离,使用的方式是从W空间采样得到隐向量,经过G,再用E映射到隐空间,对比两个隐向量的期望。