FaceID-GAN:Learning a Symmetry Three-Player GAN for Identity-Preserving Face Synthesis论文翻译和解读

写在之前:这篇work的精妙程度是我平生仅见,或者是我还没看过太多论文。网络模型的设计加上合适的损失函数,一篇CVPR就出来了。

 

摘要

人脸合成使用GANs已经获得了很卓越的效果。现存在的方法将GAN当做一个二人游戏,游戏中D来判别人脸是来自生成样本还是真实样本,同时生成器通过生成更加逼真的图像来减少判别器的精度。他们的竞争在当判别器不能分辨两个域(真和假)的时候收敛。

和二人游戏的GAN不同,这篇工作通过提出FaceID-GAN生成保留身份特征的人脸。FaceID-GAN将一个人脸身份的分类器当做第三人,和G做竞争,通过分辩真假样本的人脸身份。当G产生具有高质量同时保留了身份特征的人脸时,系统达到静止点。与简单的模型化分类器作为而外的判别器不同,FaceID-GAN是满足了信息对称的,确保了真实的和合成的样本可以被映射在相同的特征空间。换句话说,身份分类器用来从身样本输入和假生成图像提出各自的身份特征,实质上减轻了GAN的训练难度(后面有解释)。更多的实验展示了我们的gan能够生成任意的角度同时保留身份的人脸(就是生成的是指定哪个人的人脸,这张脸的其他角度也能生成),比最近的工作的效果更好。(例如DR-GAN

介绍

图像生成在最近几年已经获得了很多关注。在这些works里面,合成一张不同角度同时还能保留身份特征的人脸是一个重要的任务,归功于它在工业上广泛的应用,例如视频监督和人脸分析。

最近这个任务被一些GANs很大程度的推进了。正如图1展示的,之前的工作[dr-gan][large-pose face frontaliaztion in wild]都典型基于原始的GAN,都是二者游戏,包含了D和G。在传统gan中,G利用xr做输入,输入合成图像xs,同时D把这俩当做输入,输出他们是否是真实图像还是生成图像。在训练过程中,D和G彼此对抗,D最大化它的分类精度,G努力合成高质量的图像来减少D的分类精度。当D不能将G生成的图像辨别是否是从真实样本中来的,就收敛了,这也说明真假域的图像质量已经很接近了。

为了产生保留身份的人脸,现有的方法扩展了原始的GAN,通过增加了一个分类器C,利用xr和xs做输入,来预测身份标签lid,lid∈Rn,是n维向量。代表了N个人物的one hot标签。换句话说,为了保留身份信息,G期望生成带有同一个人的脸,同时在C的监督下。

尽管以上说得C足够学习身份特征,它还是不能够满足保留身份的要求。这种要求应该是能让真实样本域和生成样本域足够接近。(就是说C可以用于分类,但在C的监督下,G不能生成保留身份的人脸,为啥?看下面水平线之间的内容)。

下面水平线之间的内容不是论文翻译,是我对上面这句话的理解。


在之前的一些方法中,如dr-gan,仅仅对真实样本的身份类别进行分类,就是将真实样本要分到具体是哪个人上去。但仅对假样本分类到真和假的类别中(二分类),假样本无需具体分类到哪个人身上。这样的话,假样本如果足够真,那么假样本应该处在真样本所代表的的特征空间之内。

那么在C的监督下,G生成的xs要满足尽量和xr相似,那么xs理应是与xr相同的人脸,但是论文的意思应该是:这样的过程不够推进xs和xr相同的程度。见下图。

符号说明:

  • 是id为1的真实人脸图像经过C得到的特征向量,右上角的r意思是这是real样本的特征。
  • 是id为1的合成人脸图像经过C得到的特征向量,右上角的s意思是这是synthesized样本的特征。它位于id1类的边缘处。
  • 蓝色圆圈的不解释!!

如果仅仅使用C来对xr和xs分类,那么效果就是左边的图。之间的距离是小于和其他类的距离,所以C能判断出是和一类,就是说G应该能生成相同人的脸。但是这个过程却忽视了有多接近。我们当然希望同一个人的真假样本的特征很接近。如果做到这一点呢?

在FaceID-GAN中,C的输入有xr和xs,C做的事情是,既要对xr判断属于哪个人,也要对xs判断属于哪个人,所有C的输出是一个2*N的向量。前N个用于对xr分类,后N个用于对xs分类。(说明在xr和xs的标签是一样的,将这两标签拼接就是C的标签)。

也就是也对假样本做身份分类,让假样本的特征分布和真样本的特征分布靠的更加紧密。这就达到了提升假样本和真样本的相似程度。


(继续翻译)

 

这篇工作论述了建立在传统的二者游戏的gan是不足以保留身份特征的。我们提出faceId-gan,一个新颖的深度GAN网络,能保留身份信息。它有两个吸引人的属性。

第一,faceID-gan,提供了新颖的角度来拓展gan,通过加入了第三者来玩博弈游戏。不同于之前的方法,那些方法仅仅把C当做旁观者,没有和G做对抗。FaceID-gan将C视为参与游戏的第三人,C不仅仅学习身份特征,还通过给他们分配不同身份标签给G域和D域(实际在实现上,身份标签应该是相同的,因为C的输入和G的输入都是相同的一个mini batch)。直觉上认为,C联合D与G对抗。实际上,C和D分别区分人脸的身份和图像质量(真假),G试着提高生成的图像质量来减少C和D的分类精度。当C和D不能区分两个域的时候,训练收敛,暗示了G能够产生既保留身份信息也非常逼真的人脸图像。

第二,这篇工作遵从信息对称设计GAN,信息对称是设计GAN结构的中一般性原则。在图1,faceID-gan的C从xr和xs提出特征,导致了信息的对称,不同于图1.a.2,xs的特征是从C提出的,xr的特征是隐式的从G中提出的。回忆一下,网络必须将推动向前进来试图保留身份。如果这些特征是分别由C和G提出的,这两特征的距离可能会很大(这里的距离指的是余弦距离,设计到人脸识别,见我的博客 arcFace的前景提要部分)带来训练上的困难,因为这两个模块代表了不同的特征空间。相反,在FaceID-GAN中,因为两个域的特征都是用了C提出,特征之间的距离可以很近,即使在训练初期,这减轻了训练的难度。

论文的主要贡献有:

传统的两者游戏GAN扩展到三者游戏,C和D联合对抗G,使得G生成质量高的、保留身份信息的人脸。

为了设计FaceID-GAN,遵从信息对称原则减轻训练难度(真假域的特征都从C提出)。

在生成高质量的人脸同时,FaceID-GAN还能生成不同角度和表情的人脸,超越了现有的方法,那些方法都要很仔细的设计处理姿态变化。(难道faceID-Gan的训练不需要角度标签吗?还真不需要,借助3DMM)

 

相关工作

(仅翻译和faceid-gan有关的部分)

FaceID-GAN

在(d)中, FaceID-gan从两个点解决以上提出的缺点(省略部分)。第一,以上所有的方法都是基于两人游戏的Gan,在保留身份特征上只能有平平的效果(flat,古天乐相貌平平?)。相反,我们的GAN加入了第三者,G同时对抗C和D。第二,我们的gan遵从信息对称原则(criterion)(上图的两个P的参数是共享的,两个C参数也是共享的)。最后,G直接从两域获得的特征做监督,而不是某种label,这导致了更好的效果。(这就厉害了,dr-gan需要做出pose label,faceid-gan仅仅提供身份label,也能产生不同角度的人脸)

在这篇工作中,我们使用知名的3DMM来帮助表示面部形状特征fp,不仅包含姿态,还有表情和一般的形态。

 

方法

(模型很复杂,损失函数很多)

上图说明了我们的gan的全部框架。给一个128*128的输入xr,P估计xr的面部形态特征(这个特征很关键的,姿态变换和表情都在这个特征里面),记作,基于3DMM。然后把转换为想要的形态特征,使用g(·)。代表了用户想要的姿态和标签。C是一个人脸识别网络模块,用来提出特征,输出。G利用和随机噪声z,(z是128维的向量)这三个做输入,合成一张人脸图像xs,大小也是128*128。

P使用预训练resnet18的模型,不用训练。

总览

正如之前讨论的,faceID-GAN是三者博弈,包括D,C,G,前两个合作分辨真假域,同时G减少C和D的分辨能力。在这篇工作中,G是受P监督的,从而控制角度和表情。三个模块的损失函数分别是

R,Φ,dcos和dl2是不同的能量函数;是不同的权重参数(超参数),kt是正则化系数,用来平衡在第t次迭代。

直观上看,Ld最小化R(xr),最大化R(xs),来根据图像质量来分辨两个域。Lc包含身份分类器Φ,用来分类两个域的的人脸,使用之前提到的两个不同的标签,根据人脸身份来分辨两域(我觉得这里有问题,C的作用仅仅是,无论样本是真是假,都去分类,不在意是真样本还是假样本,那么怎么能说用人脸身份来区分两个域呢?)。在Lg,G尝试通过生成质量更加好的,逼真的人脸来最小化R(xs)。G也被训练要求最小化xr的特征和xs的特征的余弦距离(就是第二项,代表假脸和真脸是一个人的脸的相似程度被push)并且还最小化假图像经过P得到的合成形态特征和指定的形态特征,(第三项的意思就是生成的图像在姿态上和表情上都努力和指定的姿态表情相似)。为了保留身份信息和改变pose和表情,我们论述这些模块的细节。

3.1 判别器D

判断真假域,传统的方式是使用二分类。然而,对于图像生成问题,这是不可取的,这是由于图像的稀疏性。为了能使用像素级的监督,我们利用了自动编码器作为判别器。换句话说,D通过最小化输入和输出的像素对(pixel-wise)距离来重建输入图像。我们有R(x) = ||x-D(x)||,用的是1范数。有,通过最小化真样本的重建误差和最大化假样本的重建误差。(我在没看到这之前,猜想D可能是一个类似于DCGAN的D的结构,原来不是,DCGAN直接把图像卷积成向量来做分类,是个二分类问题,为啥FaceID-GAN说这样不行呢?什么是图像的稀疏性呢?

按照【2】,为了保持R(xr)和R(xs)的平衡,我们引入了正则化系数kt,动态地在训练过程中更新。

 

3.2 分类器C

为了保持身份,C学习真实图像xr和合成图像xs的身份特征,分别是。C通过不同的标签将它们分类来区分两个域。我们论述C为一个2*N的分类问题,目的是把xr分类到前N个标签中,xs分类到后N个标签中,都使用交叉熵。

j∈[1,2N] ,是第j个类别的索引。然而,平等地对待这2N个类是不合理的,因为在身份特征空间,合成的图像应该靠近和它对应的真实输入,当同其他类别比较时。因此,我们引入损失权重λ,来平衡合成样本的贡献,使得C学习到更加精确的身份特征。

3.3 形态估计P

我们引入3DMM来将人脸图像投射到形态特征空间中,表征姿态和表情。人脸的3DMM论述如下:

是3D 人脸的平均形状,分别是形态和表情的PCA基。因此,在3DMM坐标系统,s是某种形态和表情的3D shape,能独特地被定义。这里V(·)是一个在图像坐标系统的3D shape,通过使用尺度系数f,旋转系数和平移系数  转换得到。

P是完整的一组3DMM参数。在这些参数之中,提供一般的形态信息,不同于身份信息,同时分别控制表情和姿态。

为了实现端到端的训练,我们联合了P网络来学习形态特征。在训练之前,我们按照【38】为所有训练图像xr准备3DMM系数,系数记作。和【37】相似,P被训练用来最小化权重距离函数

(这里训练P和训练FaceId-Gan是分开的,独立的。在Gan中使用的是预训练的P。)

W是一个重要的矩阵,对角线原色是权重。

不同于C保留两个域的身份,这篇工作要求姿态和表情富于变化而且不需保留。因此,给一个输入真实样本xr,我们使用P来提取它的形态特征。然后转换这个特征,使用g(·)

 

代表xr的原始的形态信息,代表了想要的表情和姿态。

(以上的W,g,是啥论文没提到,应该是【37】里面的东西)

 

换句话说,我们使用P网络,将分解为面部形态,姿态,表情。然后使用函数g,向形态特征引入随机性。同时,G这样训练:在P的监督下,通过保持不变,不管是什么,以此产生人脸。用这种方式,G能够产生任意角度和表情的人脸。

(回顾一下为啥work,代表了我们想要的身份信息和姿态表情信息,G的损失函数的第三项,就是用来优化生成图像的的距离,所以G会生成带有指定pose和表情的人脸。话说这网络是真的大,P虽然不参与训练,但是要回传梯度。)

(再想一个问题,为啥加入P网络就能端到端的训练了呢?P网络的在测试阶段的目的是预测人脸的面部形态特征,如果没有P网络,我们只能通过3DMM给出一张脸的形态特征,但这是不能梯度回传的,所以通过预训练一个P网络来实现给出形态特征。)

3.4 生成器G

正如公式3所示,不仅最小化R(xs)来对抗D,G通过最小化下面两个距离实现最小化:

通过最小化真实图像和生成图像的特征的余弦距离实现身份的保留,pose和表情通过最小化假脸的形态特征和指定的形态特征(desired shape)欧氏距离实现改变。

3.5 实现细节

在训练之前,所有的样本都经过【26】对齐,resize到128*128。C使用Resnet50,激活函数用SELU代替BN+RELU。P使用resnet18,在最后加上三个全连接层【24】。G和D使用BEGAN。

在训练阶段,z使用均匀分布,范围在【-1,1】之间。分别用于平衡G与D,C,P之间的初始loss。在开始是1,在训练过程逐渐减少。batch size是96,在8块GPU上训练。我们对四个部分都使用Adam,更新200k次。G和D的初始学习率是0.0008,每50k递减0.0002。C的初始lr是0.0008,在第150k次减少到0.0005。除了P是预训练的,剩下三个块都是从头训练。

 

实验

 

这部分无非是,从人脸生成和人脸验证两个部分说明下faceID-gan的卓越。人脸生成用G,人脸验证只用C。内容易懂就略过了。

 

notes:在github上还没有代码实现,我准备做第一个复现FaceID-gan的人。等我复现完成就会上传,届时这里也会更新地址,需要的人可以在下方留言,等我复现完成就会回复你们。计划用一个月吧


updated : 2019.3.14

我以后的方向,导师确定下来了,是视频目标分割方向(VOS),这个月也被其他事情耽误不少。网络搭起来了,但是并没有完全完成。代码见FaceID-GAN

详细情况看readme吧,如果你对这个网络确实很有兴趣,可以接着我的代码写。就这样吧,GAN方向的论文以后看的不会多了。毕竟研究生生涯这么短暂,把时间花在刀刃上

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值