其他分享
首页 > 其他分享> > 论文翻译:DeepFaceLab:一个简单,灵活的可扩展换脸框架

论文翻译:DeepFaceLab:一个简单,灵活的可扩展换脸框架

作者:互联网

DeepFaceLab:一个简单,灵活的可扩展换脸框架

时间有限,翻译仓促,为个人学习所用,仅供参考。

DeepFaceLab: A simple, flexible and extensible face swapping framework

paper:https://arxiv.org/abs/2005.05535

open-source:https://github.com/iperov/DeepFaceLab/


文章目录


摘要

DeepFaceLab是一个由iperov开发的开源换脸deepfake系统,它在Github上已经获得3000多收藏和14000点赞:它为那些对深度学习框架没有广泛认知,以及模型开发需求的人们,提供了一个易于使用的重要的pipeline,同时,为那些需要其他特征加强他们自己pipeline的人们保留了灵活宽松的联结结构,使他们不必撰写复杂的范例代码。

在这篇论文里,我们细化了一些驱动DeepFaceLab的实现的准则,介绍了它的pipeline,通过这些,用户可以不费力地把pipeline的每一个方面模块化,以达到他们相应的目的,并且值得一提的是,DeepFaceLab可以实现不被主流的测假方法发现的结果。我们将通过把我们的方法和现存流行系统的比较,来说明我们系统的优点。


一、介绍

自从近年来深度学习被用于cv领域,数字化图像的操作处理,尤其是人类肖像的操作处理有了快速的提升,在大多数情况下达到了超级现实主义的效果。在通过源面孔转化成目标面孔的fake内容生成中,换脸是一个eye-catching任务,同时也包含了源面孔的面部运动,情绪变形。

脸部处理技术背后最主要的动机是GAN。越来越多的通过StyleGAN,StyleGAN2的脸部合成正在变得越来越真实,完全无法被人类视觉系统分辨。

通过以GAN为基础的换脸方法,大量的滑稽合成视频被发布在youtube和其他视频网站上。允许普通网民轻松地创造fake图片和视频的商业APP,极大地促进了deepfakes换脸技术的传播,诸如ZAO和FaceAPP。最著名的论坛MrDeepFakes,主要谈论deepfakes技术领域里边缘切割进展,或者生成精致换脸视频的一系列技巧,从而加快网络上deepfakes-made视频的提升。

这些内容的出现和技术的革新可能会影响公共论文的质量,并且保护人类的权利,特别是deepfakes或许被滥用成消息误导和操控,骚乱和说服的来源。识别受控媒体是一项技术要求高且快速发展的挑战,它需要整个技术行业以及其他行业的协作。

反伪造检测的媒体研究者被鼓舞,并献身于难度不断增加的脸部伪造检测。DFDC是一个典型的例子,它由Facebook和MIcrosoft在2019年发起,耗资百万美元。

然而对deepfakes检测来说,被动的防守永远不是一个好主意。在我们的展望里,无论是对学术界还是对普通民众来说,知道deepfake是什么,以及它是怎么做出一段从源面孔转变到目标面孔的极现实视频,比仅仅是被动地反抗它要好很多。俗话说得好,最好的防守是进攻。让普通网民认识到deepfake的存在和被发布在社交网络的换脸视频的日益强大的性能,比起成为真真假假的滑稽视频的反对者更重要。

据我们所知,合成Obama,FSGAN和FaceShifter是最具代表性的面部处理合成视频。这些相关工作的问题是,他们的作者并没有把他们的代码全部开源,而是只释放了其中的一部分,但是仅通过开源部分复现这些论文,产生一些被论文提出的具有说服力的结果是非常难的。谚语“魔鬼藏在细节里”是我们所有训练生成模型的人的座右铭。自从换脸算法的趋势是不断增加的复杂性,插入越来越复杂的代码,仅仅根据论文fulfill一个精彩的换脸算法看起来变成了一个不现实的目标。

更多地,这些算法或者系统或多或少,需要复杂的人类手拣操作或者特殊条件,这提升了想要深度钻研的初学者的参与门槛。比如说,合成Obama需要高质量的Obama3D模型和一个人工绘制的标准mask,意思是当你改变视频进度或者重新挑选你需要的源人物时,你需要特色化一个新的3D模型并绘制一个用于合成的标准mask。显然,这很难。

作为一个完整的fake数字内容生成pipeline,与换脸无关,越来越多的组建需要完善整个框架:比如人脸探测模块,人脸识别模块,人脸对齐模块,人脸语义解析模块,人脸融合模块等等。现在的不完整的pipeline工作是以某种方法隐藏起该领域的进程,并且增加很多初学者的学习成本。

为了解决这些问题,DeepFake已经介绍了完整的生成pipeline,连同诸如眼神活动,面部肌肉运动的面部情绪,用目标人物替换掉源人物。然而,这些DeepFakes产生的结果有些不足,Nirkin的自动换脸结果也是如此。

本论文介绍了DeepFaceLab,一个有着干净pipeline设计的易于使用的开源系统,它可以不费力地得到逼真的换脸结果。DeepFaceLab在公众间变得十分流行。例如,许多artists以DeepFaceLab为基础创造了视频并且发布到他们的youtube频道,他们之中人气最高的五个人均有20万以上的订阅,他们的DeepFaceLab一共获得了100万以上的点击量。

DeepFaceLab的贡献总结如下:

二、DeepFaceLab的特性

DeepFaceLab的成功源于先前想法编织到平衡速度和易用性的设计中,以及人脸识别,对齐,重建和分割领域的机器视觉爆炸等等。这里有我们的成果的四个主要特性:

Leras 现在DeepFaceLab提供了一个只建立在TensorFlow上的高水平深度学习新框架,旨在去除无必要的约束和通用高水平框架制造的额外的花销,比如Kerasa和plaidML。iperov命名它为Leras:Lighter Keras的缩写。Leras的主要优点是:

把用户放在首位 DeepFaceLab致力于pipeline可用性制作,包括数据加载器和处理,模型训练和后处理,尽可能地简单和多产。不像其他的换脸系统,DeepFaceLab提供了一个完整的命令行工具,pipeline的每一个方面都可以根据用户的选择被执行。尤其是,内在复杂性和细粒度控制的许多手拣特征,比如用于面部对齐的标志面部标志,应该被在内部处理并隐藏进DeepFaceLab。也就是说,如果人们遵循工作流程的设置,可以不需要手拣特征就得到平稳的逼真换脸结果,仅仅需要两个文件夹:源(src)和目标(dst)且不需要把其中的同一脸部情绪配对。某种程度上,DeepFaceLab可以像傻瓜相机一样工作。

更多地,根据很多来自DeepFaceLab用户的实践性反馈,因为有很多诸如泛光灯,雨,被玻璃隔开,脸部伤痕等的复杂性被处理,所以需要一个高灵活和适用性的脸部转换器。因此,转换方面提供了交互性模块,它减轻了deepfake生成器等工作负载,因为在他们对多种选项和多种可行/不可行特征进行改变时,交互性预览帮助他们观察到所有改变的影响。

工程支持 为了尽可能利用CPU和GPU的全部潜能,一些实用主义的方法被加入进来以提升性能:多GPU支持,半精度训练,用以提升吞吐量的固定CUDA内存的使用,用以加快图片操作和数据处理的多线应用。

可扩展性和测量性 为了增强DeepFaceLab工作流程的灵活性,也为了吸引研究讨论的兴趣,用户可以替换DeepFaceLab里不符合他们项目性能需求的任意组件,大多数DeepFaceLab的模块被设计成可互换的。例如,为了在更好地探测大角度人脸,人们可以提供新的人脸探测器。一个普遍的情况是许多DeepFaceLab的使用者倾向于适用化地改变他们的网络结构,实用性地训练它们。比如说用PGGAN组合特殊的LSGAN或者WGAN-GP的loss实用性地训练。

三、Pipeline

在DeepFaceLab(简称DFL)中,我们简要地把pipeline列举为三个主要组件:提取,训练和转换。这三个部分按顺序出现。而且,值得一提的是DFL是一个典型的一对一换脸器,就是说只有两个文件夹:src和dst,分别是源和目标的缩写,被用于下面的描述。更多地,不像先验工作,我们可以生成高分辨率的图片并泛化成各种输入分辨率。

1 提取

提取是DFL的第一个方面,它包含许多算法和处理部分,例如人脸探测,人脸对齐和人脸分割。提取的代码后,用户会得到有着来自输入数据文件的脸部标志和精确mask的对齐人脸。另外,DFL提供了许多可以表示提取人脸收敛区域的人脸类型(比如半脸,全脸,整脸)。除非另外说明,默认为全脸。

2 训练

对于让DeepFaceLab得到逼真换脸结果这一目标来说,训练扮演了非常重要的角色。

不需要aligned src和aligned dst里的面部情绪严格匹配,我们的目标在于设计一个简单高效的算法范例,以解决这一不配对问题,同时保证生成人脸的高精度和感知质量。如图3(a)所示,DF包括一个Encoder和一个Inter,二者均使用src和dst共享权重,另一个分别属于src和dst的Decoder。src和dst的泛化是通过共享Encoder和Inter来实现的,它简单地解决了之前提到的不配对问题。

src和dst的隐藏code是Fsrc和Fdst,两者都提取自Inter。

就像图3(b)所描述那样,LIAE是一个更复杂的结构,有共享权重的Encoder,Decoder和两个独立的Inter模型。另一个不同于DF的点是InterAB被用于生成src和dst的隐藏code,同时InterB只输出dst的隐藏code。这里,FsrcAB表示从InterAB产生的src的隐藏code,我们将此表现形式概括为FdstAB和FdstB。

从InterAB和InterB得到所有的隐藏code后,LIAE通过频道串联起了feature maps:FsrcABIIFsrcAB成为src新的隐藏code的表现形式,同样FdstABIIFdstB是dst的新的隐藏code的表现形式。

然后FsrcABIIFsrcAB和FdstABIIFdstB被输入进了Decoder,因此我们得到了预测src(dst)及其masks。蝉联两FdstAB和FdstB的动机是,把隐藏code的方向像我们需要的类型(src和dst)的方向进行偏移,借此InterAB获得了一个在隐层五脏俱全的以及well-aligned的,scr和dst的表现形式。

除了模型的结构,一些有用的tricks同样对提升生成人脸的质量有很大的提升。受PRNet的启发,同时为尽可能地利用人脸mask和标志需求的驱动,我们加入了一个普通SSIM的权重求和的mask loss,旨在让人脸的每个部分在AE训练结构下都能有不同的权重,比如,比起脸颊,我们给眼睛区域加了更多的权重,以使得网络专注于生成拥有生动眼睛的人脸。

对于losses,DFL默认使用混合loss(DSSIM(结构性不同)+MSE)。使用这个组合的原因是为了从两者提取益处:DSSIM更快地生成人类脸同时MSE提供更好的清晰度。这个组合loss旨在发现一般性和清晰度之前的折中和妥协。

不需要写太多标准代码,我们减少了用户设计他们自己训练范例或者网络结构的负担,特别是,用户可以为了混合src和dst的潜在表现形式(比如LIAE)添加额外的中级模型,或者,当用户选择用GAN范例时,自适应性的判别器训练(比如多尺度判别器或者RealnessGAN判别器)可以被放在decoder之后,旨在减少人脸生成的语义缝隙,特别是在scr和dst的数据集有限的情况下。

在src2dst(图片4)的情况下,我们对生成人脸用一个奇特的真人脸模型TrueFace在转换阶段于dst的相似度更高。对于LIAE来说,它旨在让FsrcAB的分布更接近于FdstAB。对于DF来说,目标变成了Fsrc和Fdst。

不像deepfakes和其他换脸框架的固定分辨率限制,我们可以生成高分辨率图像,并且通过适应训练模块的模型定义设置,来泛化为各种输出分辨率,借助DFL简洁明了的界面这非常容易。

显然,LIAE和DF都支持上述功能,而且这些功能被设计成可插拔,进一步提高DFL框架的灵活性。关于DF和LIAE的更多设计细节,请关注Appendix。

3 转换

最后,我们来到了转换部分,如图4所讲,用户可以交换src和dst中的人脸,反之亦然。

在src2dst情况下,转换中,换脸方案的第一步是把生成人脸Itr以及它的maskMt,从dst Decoder转换到src中的目标图片It的原位置,由于Umeyama的可逆性。

下面有关融合,它的目标是,把重新对齐重新定制的人脸Itr沿着Mt的轮廓无缝地契合到目标图片It上。为了肤色一致问题,DFL提供了超过5种颜色转换算法(比如,reinhard颜色转换:RCT,交互分布转换:IDT等等)以使得Ttr更适应于目标图片It。最重要的是,融合的结果可以通过合并两个图片来获得:Itr和It。Ioutput = Mt同或Itr + (1-Mt)同或It。

任意融合都必须考虑,尤其是带有界限区域的Itr和It,不同的肤色,脸部形状和光线条件之间的交合点。这里我们定义了自己的泊松融合最优法(refer to paper)

从公式2不难看出,我们只需要用a最小化脸部部分,因为(refer to paper)是一个常数项。

然后我们来到了DFLpipeline和转换工作流程的最后一步:鲜明化。我们加入了一个预训练的脸部超清神经网络(FaceEnhancer)以鲜明化已融合的人脸。生成人脸在大多数现在的state-of-the-art换脸工作里,多多少少,是平滑且缺少关键细节的(比如痣和皱纹)。

如果一切顺利,我们会得到一个高清fake图片预览(把生成的人脸无缝地放进目标人脸所设计的部分,同时适应肤色,然后根据提取部分得到的它的坐标,将其重新适合原始图片),它将很难被分辨真假,即使是通过频域分析的帮助。

四、DeepFaceLab的生产性工具

普通意义上,当有具备换脸条件的人脸时,DFL作为一个制作视频流程中的生产性工具。因此,合成fake图片的真实性要求远高于消费者级别的产品,比如高分辨率,复杂遮盖(人脸分割TernausNet)和糟糕的照明。

为了解决这一问题,我们提供了一些高效工具,以得到超极清晰和真实的高清fake图片。

如图5所示,两种在DFL提取部分被普遍使用的工具。图5(a)是一个手动人脸探测器和面部标志提取工具,它为大欧拉角人脸设计,普通的脸部探测器和面部标志提取器在大欧拉角人脸上会失败(人脸对齐PRNet)。

另外,当合成视频中存在视频抖动,这个工具可以帮助用户平滑目标人脸的面部标志,通过以相邻帧为参考。

类似的,图5(b)(人脸分割)是针对面部mask范围的细粒度控制,的XSeg手动人脸分割编辑器,它用来避免遮挡的干预,像是手,头发等等。

训练期间,我们为研究者提供细化的预览,以在不写任何额外代码的前提下,检测他们自己的新想法,loss运动在图6的黄蓝行被标明,它表示src2src和dst2dst的loss的历史,为人们debug他们独一无二的模型结构好与坏,提供了有价值的信息(put users first)。

五、评估

六、总结

标签:src,翻译,DeepFaceLab,dst,脸部,DFL,人脸,换脸
来源: https://blog.csdn.net/weixin_46808382/article/details/112575218