【CV博客翻译】An overview into InterFaceGAN: Edit facial attributes of people using GANs

原文地址:https://medium.com/codex/an-overview-into-interfacegan-edit-facial-attributes-of-people-using-gans-34f2273d5941
在这里插入图片描述我们如何使用GANs来编辑图像的语义属性?例如,改变一个人的年龄或性别,同时保留一般的脸形和其他属性?两幅图像的latent vector之间的典型翘曲展示了面部特征的平滑过渡,但多个features纠缠在一起,对特定属性的精确控制几乎不可能。

尽管GANs能够生成质量惊人的图像,但在理解和操作latent space方面的工作却不多(understanding and manipulating the latent space)。之前基于GAN语义属性编辑的工作包括:使用精心设计的loss function、额外的属性标签或特殊架构进行再训练。我们不能使用现有的高质量图像生成器来编辑给定的图像吗?正如本文所建议的,我们必须从理论上和经验上了解单个面部特征是如何在latent space中编码(encode)的

之前,我们回顾了Image2StyleGAN,在那里我们看了将给定图像映射到StyleGAN的latent space的方法,这通常被称为GAN反转。我们将回顾一种将多种语义的变化进行分解和隔离的方法。本文提出了一个由一组技术组成的流水线,在latent space中拆分语义层面的人脸属性,并实现对属性的精确控制。

这篇论文…

• 分析和衡量了不同的语义属性是如何在latent space中编码的。
• 使用subspace projection来分解这些语义属性。
• 提出了一个用于脸部编辑的方法,能够改变一个属性而不影响其他属性。

Properties

在这里插入图片描述
一个n维空间的超平面是一个可以分离原空间的(n-1)维子空间subspace。例如,一个二维平面可以分离一个三维空间,一个一维线可以分离一个二维平面。

第一个属性表明,当我们用法向量n^T z=0定义超平面hyperplane时,n^T z>0的向量点就在超平面的某一侧。想象一下,一个二维平面被一个线性方程linear function分割

Understanding the GAN Latent space

GAN中的生成器可以被看作是一个函数g: Z → X,
其中Z通常是一个高斯分布(Gaussian distribution),X是图像空间(image space)。
考虑一个具有m个语义的语义空间S⊆R^m和一个语义评分函数f_S。直观地说,一个latent的语义得分semantic score 被测量为f_S(g(z))

本文提出,当我们在两个latent code之间进行线性插值(linearly interpolate)时,我们观察到图像中包含的语义的线性变化。假设只有一个语义(m=1)。考虑一个带有法向量n的超平面,将语义分开。我们将与样本z的 "距离 "定义为d(n, z) = n^T z.我们期望这个距离与语义得分成正比,f(g(z)) = λ d(n, z)。

根据属性2,任何latent的z ~ N (0, Id)都可能接近于一个给定的超平面。因此,我们可以将一个语义建模到线性子空间n中。

让我们考虑有多个m>1语义的一般情况。考虑s = [s_1, … s_m]作为生成图像的真实语义得分,s≈f_S(g(z)) = ΛN^T z其中Λ是一个常数向量,N是一个包含m个分离边界的矩阵。使用基本的统计规则,我们可以计算出均值和协方差统计量为

然后我们可以得出结论,s实际上是从一个正态分布s ~ N (0, Σs)中采样的。直观地讲,对于s中的每个向量来说,要想完全解除纠缠,Σs必须是一个对角矩阵。(n_i)^T (n_j )也可以用来测量第i个和第j个语义之间的纠缠。

*n^T表示向量n的转置。

Conditional manipulation

在这里插入图片描述

假设我们找到了某一语义的决策边界n。我们用z_edit = z + αn来编辑原始潜伏代码z。当多个语义纠缠在一起时,编辑一个语义会影响其他属性。例如,在n1方向上移动一个点,不仅会影响属性1,还会改变属性2的距离。为了解决这个问题,本文应用投影法使N^T N成为一个对角线矩阵,其中语义是相互独立的

考虑两个具有法向量n1和n2的超平面,投影方向n1-(n1^T n2)n2(黑色向量)改变属性1而不影响属性2。对于两个以上的属性,我们要减去从原始方向(n1)到由所有条件方向构造的平面的投影。

Finding semantic boundaries

我们如何在潜空间中定义面部属性的语义边界?我们训练一个线性SVM来预测某个二元语义(例如,男人与女人的图像),给定其latent code。线性模型本身在潜空间上定义了一个超平面,法向量n可以从模型中导出。

Latent code上的事实属性的标签是用一个在CelebA属性上训练的辅助分类器来分配的。在50万张合成图像中,对每个标签具有最高置信度的1万张图像(例如,1万张男性和1万张女性图像)被抽样作为训练和验证集。这个过程将在本文第3.3节 "实施细节 "中详细说明。

Manipulating real images

我们如何将学到的语义应用于给定的图像编辑应用?这需要通过2种方法来实现。GAN反转和进一步训练。GAN inversion and further training.

GAN反转将目标脸部映射成一个latent code。这可能是一个挑战,因为GANs没有捕捉到完整的图像分布,而且往往会有信息损失。我们在之前的文章中讨论了GAN反转的一般情况,以及一种强大的GAN反转方法。

在GAN反演的两种方法中,本文以LIA为基线进行基于编码器的反演,并搜索W+空间进行基于优化的反演,这是Image2StyleGAN和其他论文所建议的。基于优化的方法表现更好,但与基于编码器的方法相比,速度要慢得多。

另一种方法是使用学到的InterFaceGAN在综合生成的配对数据集上训练额外的模型。InterFaceGAN模型可以生成无限的高质量配对数据。这个想法是在生成的数据上训练一个图像到图像的翻译模型,如pix2pixHD。为了实现连续操作,翻译模型首先学习一个相同的映射网络和一个为属性翻译而微调的网络。在推理时,我们在相同模型和微调模型的模型权重之间进行插值。

这种方法的推理速度要快得多,而且能够完全保留额外的信息,因为它消除了重建的需要。然而,由于pix2pixHD的内在限制,该模型不能学习大型动作,如姿势和微笑。因此,应用是有限的。

Results & Experiments

在上述方法的表述中,有很多的假设。
• 语义真的是在潜在空间中线性地表示吗?
• 线性模型能够正确地学习语义边界吗?
• 每个语义子空间真的独立于其他空间吗?
• 子空间投影能否实际地分解复杂的语义?
• 学习到的语义边界能不能推广到真实世界的图像?
这些关于假设的问题将在本节中进行评估。

  • 语义真的是在潜在空间中线性地表示吗?

    首先,潜伏空间是否可由线性边界或超平面分离?下图显示了线性SVM的分类性能。线性边界在验证集上对PGGAN(Progressive GAN)和SyleGAN W空间的准确率都达到~95%。这表明,对于二元语义,确实存在一个近似的线性超平面。
    在这里插入图片描述

    下图是直接根据法线向量插值一个latent code,不需要拆分。我们可以清楚地看到,每个属性都被正确地应用和去除。这进一步证明了latent space是线性可分离的,InterFaceGAN可以成功找到分离超平面。
    在这里插入图片描述

  • 学习到的语义边界能不能推广到真实世界的图像?

    然后,我们回答了这些语义边界是否可以推广到编辑真实图像的问题。如果我们观察下图,结果是令人心惊肉跳的。我特别惊讶于该模型是如何学会画 "强 "眼镜和 "弱 "眼镜的。GAN似乎在latent space中学习了一些可解释的语义。
    在这里插入图片描述

  • 每个语义子空间真的独立于其他空间吗?

    他们观察到,当latent的取样离边界和nature latent distribution分布太远时,会引入其他属性的变化。如下图中的一个例子。
    在这里插入图片描述

    使用所提出的方法,语义是否真的脱离了?为了评估语义之间的关联性,本文提出了几个衡量拆分的指标。

    一个经过训练的预测器(predictor)用于预测属性,用来测量真实数据中两个属性之间的相关系数。这可以用来测量两个属性之间的纠缠。合成数据的相关系数也被计算出来,并与真实数据的相关系数相比较。最后,可以使用潜在边界的法向量之间的余弦相似性。直观地说,这些方法应该能够测量出不相干性。

    这些方法在实践中都显示出类似的结果。在下面的表格中,我们观察到某些属性之间的高度纠缠,如年龄、性别和眼镜。我们还观察到在CelebA-HQ上训练的PGGAN和在FF-HQ上训练的StyleGAN之间纠缠的差异。我们可以观察到FF-HQ特有的数据中的一些偏见,比如微笑和性别之间的纠缠。另一个有趣的观察是,与z空间相比,W空间的纠缠明显。然而,这种在Z空间的纠缠可以通过拟议的条件操纵来缓解,如下图最后一行所示,在z空间的这种纠缠可以通过提议的条件操纵来缓解,如下图最后一行所示。

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

Conclusion

本文通过假设语义的线性变化来理解GAN的潜在空间。观察得出的结论是,每个语义都被表示为基于超平面的正态向量的正态分布。通过考虑一个能够根据语义属性线性分离潜伏空间的超平面,我们可以使用线性分类器对这个超平面进行建模。一个从潜意识到语义标签的线性SVM可以定义潜意识空间中语义属性的 “方向”。这是用子空间投影的方式来分解的。

在理解神经网络如何解释人脸方面,这篇论文提出的见解非常有趣。我尤其对投影如何能够分解各种语义感到震惊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值