GAN论文阅读笔记(7)— Pivotal Tuning for Latent-based Editing of Real Images

原论文:Pivotal Tuning for Latent-based Editing of Real Images
论文:https://arxiv.org/abs/2106.05744
代码:https://github.com/danielroich/PTI

1 GAN反演

现有的图像编辑神经网络,都是在基于图像生成神经网络所生成的基础上进行编辑的。其原因在于,,图像编辑的原理大体上可简单描述为:对图像所对应的在 lantent space 上的 lantent code 进行编辑来达到改变生成出来的图像的效果。

而对于一个真实图像,在没有找到其对应的在StyleGAN中 lantent space 的 lantent code 前则无法对其进行图像编辑。

而将真实图像投影到 GAN 的 lantent space 中得到对应 lantent code 的操作就称为 GAN 反演 ( GAN inversion ).

1.1 失真和可编辑性权衡

众所周知,StyleGAN 是基于 W W W 空间训练的。对于一个在大规模数据集上预训练的 StyleGAN 而言,对于一个取自 W W W 的 lantent code w ∈ W w \in W wW 可以生成具有高感知质量和低失真度的图片。但现已有研究表明: W W W 潜在空间的表达性是有限的,因为不是每个图像都可以准确地映射到 W W W 中。

这就导致了如果不加思考的将目标图像反演到 W W W 潜在空间中,可能会导致部分在 StyleGAN 训练中未包含在 W W W 潜在空间的属性也不能被映射到其中,这将不可避免地导致反演后得到的lantent code 可编辑性下降。

为了缓解这一限制,已有研究证明了任何图像都可以被反转成 W W W 的扩展,表示为 W + W+ W+,其中风格代码由许多风格向量组成。 W + W+ W+ 具有更多的自由度,因此明显比 W W W 更具表现力和可编辑性。尽管这种扩展的表现力足以表示真实图像,但却不可避免地使得生成图像失真。

这种两者不可兼得的情况,称之为:失真与可编辑性的权衡

现有的 GAN 反演的大多是围绕于如何平衡两者之间取得更好的结果而进行研究。

2 PTI

在介绍前,先看看效果:

图一:
在这里插入图片描述

图1所示。在应用 PTI 后可以利用基于 StyleGAN 的图像编辑技术来对真实图像进行编辑,且效果相当不错。且对于超出 W W W 的图像 ( 小丑的浓妆 ) 也可以达成很好的编辑效果。

一般而言,现有的 GAN 反转方法大致可以分为三大类别:
1:直接优化潜在向量 ( lantent vector ) 的方法,使输出图像与目标图像之间的重建误差最小
2:训练编码器将给定目标图像映射到潜在空间
3:结合以上两者

本文中的方法,Pivotal Tuning ( PTI ) 为其中的第一类方法,其主要优点在于反演效果好,主要的缺点在于需要对生成器进行微调。考虑到 StyleGAN 的训练难度,训练过程需要相当长的时间。( 笔者复现实验时,使用NVIDIA GeForce RTX4060 Laptop GPU 的笔记本电脑,对单张图片进行反演、编辑操作需要约5分钟才能完成 )

相比训练一个新的编码器的方法,PTI 通过微调生成器来使其适应输入图像。其主要流程简述如下:

1:对于一幅或一组真实图像,先利用现有的 GAN 反演技术 ( 编码器 ) 将其投影到 lantent space 得到 lantent code : w p w_{p} wp 。在这个阶段,生成器 保持冻结,训练 编码器。

2:将 w p w_{p} wp 视为锚点,微调预训练的 StyleGAN 生成器使其能够生成 w p w_{p} wp 对应的高保真图像。在这个阶段 编码器 保持冻结,训练 生成器。

这一整个过
程可以看作是先投飞镖( w p w_{p} wp)到靶子 ( lantent space ) 上,再移动靶子 ( 优化生成器 ) 让飞镖到中间 ( w p w_{p} wp -> W W W ) 的过程。

图二:
在这里插入图片描述

图二中,左边是第一步后的结果。其中我们可以看出失真和可编辑性的权衡:A位于可编辑性更强的区域但不像真实图像 ( 正中 ) ,而 B 位于可编辑性较差的地方但更像真实图像。 右边为经过 PTI 之后的结果 (优化生成器后)。其中 C 既保持了 A 的编辑能力,也实现了 B 相似的与真实图像的相似性。

我们可以将 B 看作是我们投出去的 ‘飞镖’,而 A 为靶子的中心点。而 PTI 过程就可以看作为将作为背景的靶子整体移动,使 ‘飞镖’ 移动到靶心。很显然这个过程可以通过优化实现。

3 Method

这一部分将详细说明以上两步的具体流程。

3.1 反演部分

反演部分较为简单,其主要目的是将真实图片正确得投影到 lantent space 上来为接下来的 PTI 过程提供一个起点。在该过程中作者选择将真实图像投影到 W W W 中以获得更好的可编辑性,其带来的失真问题主要由第二步的 PTI 优化生成器来解决。

有研究表明,使用噪声正则化项优化噪声向量 n n n 可以显著改善反演,因为噪声正则化阻止了噪声向量包含重要信息。这意味着一旦 w p w_p wp 被确定, n n n 值在最终的视觉外观中起次要作用。

所以,在本质上,该步骤为直接优化 lantent code w w w 和噪声向量 n n n 来重建图像。其优化目标如下:

w p , n = arg ⁡ min ⁡ w , n L L P I P S ( x , G ( w , n ; θ ) ) + λ n L n ( n ) w_{p},n=\arg \min_{w,n}L_{LPIPS}\left ( x,G(w,n;\theta ) \right )+\lambda _{n}L_{n}(n) wp,n=argw,nminLLPIPS(x,G(w,n;θ))+λnLn(n)

其中 G ( w , n ; θ ) G(w,n;\theta) G(w,n;θ) 为使用权值 θ \theta θ 的生成器 G G G 生成的图像, w p w_{p} wp 为所需的起点,在这里我们称其为 pivot code。LPIPS 损失为 GAN 模型常见的损失计量方法在这里不多赘述。

需要注意的是,这一部分中的 w w w 为将真实图像输入到现有的反演方法中得到的,而不是通过 StyleGAN 自带的 Mapping 部分来通过输入 z z z 生成的。

注:该部分中作者使用的 ’现有的反演方法‘ 为《Analyzing and Improving the Image Quality of StyleGAN》中提及的方法,详细请参考该论文。

3.2 PTI 部分

正如之前所说的,如果在这里直接使用 w p w_p wp 来生成反演后的图像必然会有明显的失真。

在这一部分中,首先先解冻生成器 G G G 并对其调整、优化。对于第一步中得到的 pivot code w p w_{p} wp ,设 x p = G ( w p ; θ ∗ ) x^{p}=G(w_{p};\theta^{*}) xp=G(wp;θ) 为使用 w p w_p wp 和调整后的权值 θ ∗ \theta^{*} θ 生成的图像。有以下损失函数:

L p t = L L P I P S ( x , x p ) + λ L 2 L L 2 ( x , x p ) L_{pt}=L_{LPIPS}(x,x^{p})+\lambda_{L2}L_{L2}(x,x^{p}) Lpt=LLPIPS(x,xp)+λL2LL2(x,xp)

其中 θ \theta θ 的初始值为预训练的生成器的权重, w p w_{p} wp 为常数。通过优化该损失,对生成器 G 的权值进行调整,来使得真实图像 x x x 和生成的反演图像 x p x^{p} xp 更加相似。

该损失也可以扩展到一组图片上:

L p t = 1 N ∑ i = 1 N ( L L P I P S ( x i , x i p ) + λ L 2 L L 2 ( x i , x i p ) ) L_{pt}=\frac{1}{N}\sum_{i=1}^{N} \left ( L_{LPIPS}(x_{i},x_{i}^{p})+\lambda_{L2}L_{L2}(x_{i},x_{i}^{p}) \right ) Lpt=N1i=1N(LLPIPS(xi,xip)+λL2LL2(xi,xip))

其中 x i p = G ( w i ; θ ∗ ) x_{i}^{p}=G(w_{i};\theta^{*}) xip=G(wi;θ).

3.3 局部正规化 ( Localoty Regularization )

PTI 会引起连锁反应——由非局部 lantent code 生成的图像的视觉质量会受到其损害。

如果对图像属性编辑有了解的朋友可能更能理解上面这句话的意思。在笔者的理解看来,所谓的 PTI 部分就是另一个版本的图像属性编辑。在图像属性编辑中,我们通过编辑神经网络对 w w w 按照特定方向进行修改得到 w e d i t w_{edit} wedit ,以用来生成修改后的图像 x e d i t = G ( w e d i t ; θ ) x_{edit}=G(w_{edit};\theta) xedit=G(wedit;θ) ,再通过计算 x x x x e d i t x_{edit} xedit 损失来优化编辑神经网络.。我们会发现 w p w_{p} wp w e d i t w_{edit} wedit 的调优步骤十分的相像,这也就给 PTI 带来了 图像属性编辑中一个常见的问题:因为 StyleGAN 的输出相对于输入变化地平滑,因此 w w w 移动 ( 变化 ) 时,它的邻域将被拖拽

可以参考我前几篇阅读笔记中内容:https://blog.csdn.net/weixin_48981284/article/details/135563200

而这样的拖拽会导致图片的属性纠缠在一起。还记得我们在文章开头时提到的吗?GAN 反演技术就是为了 图像编辑技术而服务的。可编辑性的下降是不能允许的。

为了减轻这种副作用,作者引入了一个正则化项,旨在将 PTI 的变化限制在 lantent space 的局部区域。在每次迭代中,作者对一个正态分布的随机向量z进行采样,并使用 StyleGAN 的映射网络 ( Mapping network ) f f f 生成对应的 lantent code w z = f ( z ) w_{z} = f (z) wz=f(z),然后使用插值参数 α α α w z w_z wz w p w_p wp 之间进行插值,得到插值码 w r w_{r} wr.

其具体计算过程如下:

w r = w p + α w z − w p ∥ w z − w p ∥ 2 w_{r}=w_{p}+\alpha \frac{w_{z}-w_{p}}{\left \| w_{z}-w_{p} \right \|_{2} } wr=wp+αwzwp2wzwp
然后再最小化使用初始权重 θ \theta θ 生成的图像 x r = G ( w r ; θ ) x_{r}=G(w_{r};\theta) xr=G(wr;θ) 与 优化后的权重 θ ∗ \theta^{*} θ 生成的图像 x r ∗ = G ( w r ; θ ∗ ) x_{r}^{*}=G(w_{r};\theta^{*}) xr=G(wr;θ) 之间的损失:

L R = L L P I P S ( x r , x r ∗ ) + λ L 2 R L L 2 ( x r , x r ∗ ) L^{R}=L_{LPIPS}(x_{r},x_{r}^{*})+\lambda^{R}_{L2}L_{L2}(x_{r},x_{r}^{*}) LR=LLPIPS(xr,xr)+λL2RLL2(xr,xr)

这同样也可以扩展到一组图像的情况:

L R = 1 N r ∑ i = 1 N r ( L L P I P S ( x r , i , x r , i ∗ ) + λ L 2 R L L 2 ( x r , i , x r , i ∗ ) ) L^{R}=\frac{1}{N_{r}}\sum_{i=1}^{N_{r}} \left ( L_{LPIPS}(x_{r,i},x_{r,i}^{*})+\lambda^{R}_{L2}L_{L2}(x_{r,i},x_{r,i}^{*}) \right ) LR=Nr1i=1Nr(LLPIPS(xr,i,xr,i)+λL2RLL2(xr,i,xr,i))

将以上两个优化目标结合起来有:

θ ∗ = arg ⁡ min ⁡ θ ∗ L p t + λ R L R \theta^{*}= \arg\min_{\theta^{*}}L_{pt}+\lambda_{R}L_{R} θ=argθminLpt+λRLR

其中 α , λ R , λ L 2 R , N r \alpha,\lambda_{R},\lambda_{L2}^{R},N_{r} α,λR,λL2R,Nr 为超参数。

4 实验部分

等我把代码完全搞懂再随着代码部分一同补充……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值