SimSwap

上交+腾讯

支持图片视频任意身份换脸(finetuning free);并且保持脸部属性如表情/姿态/光照等。

换脸的方法一般分两类:

Source-oriented Methods(如FSGAN和On Face Segmentation, Face Swapping, and Face Perception等):将target人脸的属性迁移到source人脸上,然后将source人脸融合到target人脸上。该类方法的通病是对source人脸比较敏感,夸张的表情或者大尺度的姿态会严重影响换脸的结果。

Target-oriented Methods(DeepFakes,IPGAN,FSNet,RSGAN,FaceShifter,DeepFaceLab):使用神经网络提取target人脸的特征,对该特征做修正,然后将修正之后的特征保存到换脸结果中。此类方法的要么不具有泛化能力,不足一旦训练完成,就只能对固定身份执行换脸;要么不能保持target人脸的表情等属性。

framework

swap的本质是将target人脸中的身份相关特征替换为source人脸的身份特征,而保留target人脸的属性相关特征。为了使整个模型能够泛化至任意ID(将source人脸的身份特征从decoder中剥离出来),在encoder和decoder之间添加一个ID Injection Module(身份注入模块),将target人脸的身份特征替换为source人脸的身份特征,同时训练时添加损失让网络自行学习身份和属性两种特征的解耦。该IIM模块主要包含两个步骤:特征提取和特征集成。特征提取即使用大规模人脸数据集上的arcface预训练模型提取source人脸的latent ID特征。特征集成使用9个堆叠的ID-blocks将source人脸的ID特征注入到target人脸特征中,ID-block中的BN被替换为Adaptive Instance Normalization(AdaIN),本质上是希望target人脸特征在分布上接近source人脸特征:

AdaIN

其中,

分别代表source人脸的latent ID特征,该特征经过一层全连接层得到的均值和方差。

由于训练过程中许多不同ID的source人脸都包含在其中,因此decoder的权重与ID无关,仅仅关注从特征重建图像。

训练过程中提取换脸结果的latent ID特征,计算其与source人脸latent ID特征的距离,最小化该距离。但是仅仅最小化该损失只会生成毫无表情属性的source正脸,因此利用对抗损失(Patch GAN)来提高生成质量。

此外,为了保留target人脸的属性特征,引入Weak Feature Matching Loss来约束保留人脸的属性信息。原始的Feature Matching Loss(pix2pixHD)表达式为:

OFML

D表示判别器,M代表判别器的层数,N表示某一层的分量数量。针对换脸任务,将其改为:

WFML

鉴于本任务旨在限制保留target人脸的属性特征,而属性特征通常是高层语义,因而只取判别器的后几层特征计算损失,最小化换脸结果和target人脸的L1范数。

因此,整体损失为:

ID Loss:

ID Loss

重构损失:

重构损失

对抗损失

弱特征匹配损失(multi-scale discriminator)

MWFML

整体损失函数:

Total Loss

训练:

Dataset: VGGFace2,去掉小于250x250的图片,检测对齐到224x224

人脸识别模型:Arcface from insightfacev2

Optimizers: Adam

训一个包含相同ID图片对的batch,再训一个包含不同ID图片对的batch,交替进行

部分效果展示


结果展示

你可能感兴趣的:(SimSwap)