[pdf][supp][page][code]

Question

改进目前的反演方法

Contribution

提出了一个基于残差的encoder,对比之前只经过一次推理的方法,该方法会进行多次迭代以获得更准确的结果,并且多次迭代需要的时间对比优化方法可以忽略不计

改进了encoder的重建能力,并且只增加了微不足道的推理时间

因为经过了多次迭代,该方法对encoder的复杂度要求不高,所以重新设计了简单版本的pSp和e4e编码器

Method

architecture

1
其中tt是当前的迭代次数,在第tt次迭代时,我们有ground truth xx,第t1t-1次迭代产生的结果y^t\hat y_t和latent code wtw_t,当t=0t=0时,w0=wˉ,y^0=G(w0)w_0=\bar w,\hat y_0=G(w_0)

首先将ground truth和上次迭代的结果在channel这一维度上concatenate起来

xt:=xy^tx_t:=x||\hat y_t

获得了一个6通道的tensor xtx_t,而encoder EE的任务是生成一个残差Δt\Delta_t

Δt:=E(xt)\Delta_t:=E(x_t)

更新第tt次迭代生成的latent code

wt+1Δt+wtw_{t+1}\leftarrow \Delta_t + w_t

使用更新后的wt+1w_{t+1}和生成器GG生成第t次迭代产生的图片

y^t+1:=G(wt+1)\hat y_{t+1} := G(w_{t+1})

上述encoder EE为简化设计的pSp、e4e的encoder,以pSp为例,相比于之前从三个不同size的feature map提取特征,重新设计的encoder只从最后16×1616\times16的feature map上提取特征,如下图

2

上述生成器GG为预训练的StyleGAN

loss

该方法使用的loss没有在文中描述,应该是因为使用的还是之前那几个loss,没有新的loss添加,大致看了下代码中使用的仍然是pSp中使用的loss

训练过程,同样是经过了几次迭代,每次迭代都计算梯度,然后在全部迭代结束之后,再更新网络参数

Results

重建效果对比

3

以上每一部分的第4列为基于学习的方法pSp、e4e,第五列为对应的使用简化pSp、e4e作为encoder的ReStyle。

与基于学习的方法(pSp、e4e)相比,有更好的重建效果,尤其是细节方面。其重建效果接近但没有超过基于优化的方法,但是使用的时间远小于基于优化的方法。

花费时间与质量对比

4

如图,从最终效果上来看,优化的方法和具有优化部分的混合方法的最终效果是最好的,但是其使用时间也是最长的,而ReStyle的使用时间与基于学习的pSp、e4e相差无几,但效果更好,甚至在LPIPS这一项达到了优化方法的水平

单观察ReStyle的曲线,可以发现迭代增加的效果会随迭代次数增加而减小,而且仅需要很少次数的迭代就获得了最好的效果

每一次迭代效果的变化

5

因为论文中的实验图没有真实图片,所以截取了补充材料中的图片,其中图片为每次迭代后生成的图片,蓝色为相对上一次迭代生成的图片变化小的地方,红色为相对上一次迭代生成的图片变化大的地方

6

上图为不同方法迭代的效果图

编辑能力

7

对比专门为编辑设计的e4e,仍然具有比优化和混合方法更好的编辑能力,并且比e4e的重建效果要好

Encoder Bootstrapping

该方法可以用于将真实图片转化为卡通图片,如图,用从FFHQ上训练的encoder,输入原始图像xx和平均图像xffhqavgx_{ffhq-avg},生成一个初始的w1,y^1w_1,\hat{y}_1,然后将其用作Toonify迭代的初始值,Toonify就是一个生成卡通图象的StyleGAN

以下是与其他方法的对比图以及每次迭代的对比图

9

Think

迭代应该是在找这个encoder泛化能力的极限,再想提升效果就只能对单张图片优化,猜测提高encoder的复杂度并增加迭代次数可以提高重建能力到优化方法的水平。而且可能出现的情况是,即使这个更复杂的encoder相对于之前最先进的encoder效果并没有提升,但是通过ReStyle迭代后可能会产生比最先进的encoder更好的效果

Why Work

该方法应该就是使用了优化方法迭代的特点,把用loss对单张图片进行优化改成了用encoder对单张图片进行优化,理所当然比单次迭代的方法要好