代码:https://github.com/genforce/interfacegan
本文的PAMI版本:https://arxiv.org/pdf/2005.09635.pdf
摘要:
Despite the recent advance of Generative Adversarial Networks (GANs) in high-fidelity image synthesis, there lacks enough understanding of how GANs are able to map a latent code sampled from a random distribution to a photo-realistic image. Previous work assumes the latent space learned by GANs follows a distributed representation but observes the vector arithmetic phenomenon. In this work, we propose a novel framework, called InterFaceGAN, for semantic face editing by interpreting the latent semantics learned by GANs. In this framework, we conduct a detailed study on how different semantics are encoded in the latent space of GANs for face synthesis. We find that the latent code of well-trained generative models actually learns a disentangled representation after linear transformations. We explore the disentanglement between various semantics and manage to decouple some entangled semantics with subspace projection, leading to more precise control of facial attributes. Besides manipulating gender, age, expres-sion, and the presence of eyeglasses, we can even vary the face pose as well as fix the artifacts accidentally generated by GAN models. The proposed method is further applied to achieve real image manipulation when combined with GAN inversion methods or some encoder-involved models. Extensive results suggest that learning to synthesize faces spontaneously brings a disentangled and controllable facial attribute representation.
大多研究对抗生成网络(GAN)的文献,都着眼提升生成图片的质量,很少的文献去研究图片中的语义信息是如何产生以及如何在隐藏空间(latent space)中组织的,GAN学习到的特征是什么,。这篇论文,就着重的研究了隐藏空间和图片语义信息空间之间的联系,并利用这样的联系,来修改隐藏空间的编码(latent code),从而达到对生成的图片进行图像编辑的目的。文章以训练好的人脸生成的GAN模型,以及人脸属性编辑任务为背景,对于图片中的属性语义信息,与用以生成图片的编码之间的关系,进行了探索。
对于一个训练好的GAN模型,那么有GAN的映射,g:Z->X,其中Z是隐藏空间,X是生成的图片空间。对于每张图片x∈X,都包含着具体的语义信息。那么,引入新的函数,文中称为的语义分数函数,fs:X->S,其中S是m维的语义空间,对应m个语义(属性)。那么,这样就可以建立从隐藏空间,到语义空间之间的联系:s=fs(g(z))。
文章引入了两个性质:
性质1大致的意思是,给定一个法向量n,那么与n向量积为0的向量,组成了一个超平面(这个超平面与该法向量垂直)。对于任意的z向量,如果它与法向量n的向量积满足nz>0,那么这些z向量位于(由n确定的)超平面的同一边。
性质2的大致意思是,向量z与由法向量n确定的超平面之间的距离,大概率在某一范围之内,文中计算的是距离大于5个单位的概率为1e-6,也就是基本上z与超平面的距离不超过5。
回到文中研究的内容,对于单个语义信息而言,之前的很多文献在对于两个编码z1和z2进行插值的时候发现,图片的内容会缓慢的发生变化,根据这个现象,本文做出第一个假设,认为对于任何一个二值语义(比如性别的语义,只有男和女两种取值,暂时不提新型人类啊),那么在隐藏空间存在一个超平面作为这个语义的分割边界。那么,在这个边界的一边改变编码的数值,语义会保持相似;穿过分割边界,那么语义会发生反转。这样就类似于性质1中任意的向量z与某一超平面的关系,因此,找到一个具体的语义函数为
f(g(z))=λd(n,z),其中d(n,z)=nz,λ>0是一个标量,测度语义与距离变化之间的快慢。
然后,讲单一属性的假设推广到多个属性,那么有这样,多属性的分布,是一个多变量的正态分布,只有各个属性的法向量n_i互相正交,各个属性才会互相独立(这一般也是不可能的);因此n_i n_j能够度量属性i和属性j之间的相互依赖程度。
有了上述,对于语义信息与隐藏空间的关系的假设,本文自然而然的引出了,对于单个属性进行编辑操作的方法,将图片对应的编码修改为zedit = z+αn,简单的解释就是,用原来的编码,加上在分割平面的法向量方向上的移动,其实就是更接近分割平面,穿过分割平面或者远离分割平面。但是,这样直接修改,如果不同属性存在依赖关系的话(即分割平面的法向量不正交),那么修改一个属性,会导致其他属性的变化,因而需要其他方法,来尽可能保持其他属性不变。由此,本文引出了多属性情况下,条件操作方法,以由两个超平面法向量n1和n2定义的两个属性为例,在编辑n1定义的属性时候,更改编码的方向为n1-(n1n2)n2;简单来说就是找到一个与n1还有夹角,但是与n2垂直的方向,以此类推到多个属性。
在有了上述编辑单个属性的方法的情况下,最后一个问题就是,当给定一张人脸的时候,如何获得其对应的编码。文中并没有具体研究这个问题,而是给出了两类解决该问题的文献,大致的办法就是用不同的(两类)方法,推断出图片对应的编码,然后再修改编码,进而用其对应的GAN生成修改后对应的图片。这样,就可以验证编码中是否真的存在文中讨论的语义信息,以及它们编码属性的方式是如何的。
整篇文章的一个基础的假设就是,对于二元(二值)的属性而言,存在一个超平面,对于属性进行分割。其实,这样的假设就很类似与二分类任务:找到可以分割二类的划分的超平面。于是,本文用二分类中最经典的算法SVM验证了这个假设的正确性。
以上述的基础,本文接下来的实验部分,实现了单个属性的编辑,以及多个属性的条件编辑(也就是编辑一个属性,保证其他属性不发生变化)。除此之外,文中实验探究了隐藏空间编码之间相关性与属性实际相关性的反应,也探究了距离分割平面超过阈值之后,属性编辑的变化。文中用到的预训练的模型是StyleGAN和PGGAN。