FSGAN Subject Agnostic Face Swapping and Reenactment翻译+重点标注

图1:面部交换和重新激活。左:源面交换到目标上。右:用于控制源图像中出现的面部表情的目标视频。在这两种情况下,我们的结果出现在中间。更多信息请访问我们的网站:https://nirkin.com/fsgan。

我们提出了一种人脸交换gan(fsgan)来实现人脸交换和再激活。与之前的工作不同,fsgan是不受主题限制的,可以应用于成对的脸,而不需要对这些脸进行训练。为此,我们描述了一些技术贡献。我们提出了一种新的基于递归神经网络(RNN)的人脸重建方法,该方法可以根据姿势和表情的变化进行调整,并且可以应用于单个图像或视频序列。对于视频序列,我们引入了基于重影、delaunay三角剖分和重心坐标的连续插值方法。被遮挡的面区域由面完成网络处理。最后,在保持目标肤色和光照条件的前提下,利用一个人脸融合网络实现了两张人脸的无缝融合。该网络采用了一种新的poisson混合损耗,将poisson优化与感知损耗相结合。我们比较我们的方法与现有的最先进的系统,并显示我们的结果是定性和定量优越。

人脸交换是将一张人脸从源图像传输到目标图像的任务,以便它无缝地替换出现在目标图像中的一张人脸,并产生真实的结果(图1左)。面部再现(又称面部转移或木偶制作)使用一个视频中的控制面部的面部运动和表情变形来指导视频或图像中出现的面部的运动和变形(图1右)。由于这两项任务在娱乐领域[1,21,48]、隐私领域[6,26,32]和训练数据生成方面的应用,它们都吸引了大量的研究关注。

以前的工作提出了交换或重新实现的方法,但很少同时提出这两种方法。早期的方法依赖于底层的3d面部表示来转移或控制面部外观。根据输入图像[44,42,35]估计人脸形状,或者固定[35]。然后将3d形状与输入图像[10]对齐,并在传输强度(交换)或控制面部表情和视点(重新生成)时用作代理。最近,基于深度网络的人脸操作方法被提出。例如,生成性对抗网络(gans)[13]成功地生成了真实的假面像。条件gans(conditional gans)[31,17,47]用于将描述真实数据的图像从一个域转换到另一个域,并激发了多个人脸重建方案[37,50,40]。最后,deep fakes项目[12]利用cgan在视频中进行面部交换,使得非专家可以广泛地进行交换,并受到公众的极大关注。这些方法可以通过替换经典的图形流水线来生成真实的人脸图像。但是,它们仍然隐式地使用三维面表示。

. 一些方法依赖于潜在特征空间域分离[45,34,33]。这些方法从人脸的剩余特征中分解出人脸的身份成分,并将身份作为潜在特征向量的表现形式进行编码,造成了显著的信息损失,限制了合成图像的质量。特定于对象的方法[42、12、50、22]必须针对每个对象或一对对象进行培训,因此需要昂贵的特定于对象的数据-通常是数千张人脸图像才能获得合理的结果,从而限制了它们的潜在使用。最后,以前的人脸合成方案,特别是基于3d的方法,都需要特别注意处理部分遮挡的人脸。

我们提出了一种基于深度学习的方法来实现图像和视频中的人脸交换和重新生成。与之前的工作不同,我们的方法是主题不可知的:它可以应用于不同主题的脸,而不需要特定主题的培训。我们的面部交换gan(fsgan)是端到端可训练的,并产生照片逼真,时间连贯的结果。我们作出如下贡献

•与主题无关的交换和重新生成。据我们所知,我们的方法是第一个同时操纵姿势、表情和身份的方法,而不需要特定于人或特定于对的训练,同时产生高质量和时间一致的结果。

•多视图插值。提出了一种基于重影、delaunay三角剖分和重心坐标的连续插值方法。

•新的损失功能。我们提出了两个新的损失:逐步一致性损失,用于小步骤逐步训练人脸重新生成,以及泊松混合损失,用于训练人脸混合网络将源人脸无缝地集成到其新上下文中。

我们对我们的方法进行了广泛的测试,报告了定性和定量的消融结果,并与现有技术进行了比较。我们的结果的质量超过现有的工作,即使没有主题特定图像的训练。

相关工作 

处理人脸图像外观的方法,特别是用于人脸交换和重新生成的方法,有着悠久的历史,可以追溯到近20年前。这些方法最初是出于隐私考虑而提出的[6,26,32],尽管它们越来越多地用于娱乐[21]或娱乐(例如[1,48])。基于3d的方法。最早的交换方法需要人工参与[6]。几年后提出了一种自动方法[4]。最近,face2face将表达式 从源面传输到目标面[44]。通过将3d可变形面部模型(3dmm)[5、7、11]拟合到两个面部,然后将一个面部的表达式组件应用到另一个面部,并小心地将其应用到口腔内部区域来执行转移。Suwajanakorn等人的再实施方法。[42]使用重建的(前总统)奥巴马的3D模型,在面部地标的引导下,使用与Face2Face相似的填充面部内部的策略,合成了面部的嘴部。正面表情由averbuchelorater操作。[3]通过使用二维包裹和面部标志将口腔内部从源图像转移到目标图像。

最后,Nirkin等人。[35]提出了一种人脸交换方法,证明了三维人脸形状估计对于真实的人脸交换是不必要的。相反,他们使用一个固定的三维面形状作为代理[14,29]。和我们一样,他们提出了一种人脸分割方法,尽管他们的工作不是端到端可训练的,需要特别注意遮挡。我们的成绩比他们的好。.

基于gan的方法。gans[13]被证明生成了与目标域具有相同分布的假图像。尽管训练的gans能够成功地生成真实的图像,但它可能是不稳定的,并限制了其在低分辨率图像中的应用。然而,随后的方法提高了训练过程的稳定性[28,2]。Karras等人[20]使用从低到高图像分辨率的渐进多尺度方案训练gans。Cyclegan[52]提出了一个循环一致性损失,允许在不同域之间训练无监督的泛型转换。isola等人应用了一种l1丢失的cgan。[17]推导了pix2pix方法,并证明其在gssynthesis结果中具有吸引力,可用于将边转换为面等应用。              使用gans进行面部操作。pix2pixhd[47]通过应用多尺度cgan架构并增加感知损失,使用gans进行高分辨率图像到图像的转换[18]。gan imation[37]提出了一种基于情感动作单位的双发生器cgan,它可以产生一个注意图。这张地图被用来在重影图像和原始图像之间进行插值,以保留背景。gan notation[40]提出了由面部标志驱动的深度面部再造。它使用三重一致性损失逐步生成图像:它首先使用地标对图像进行正面化,然后处理正面。              Kim等人[22]最近提出了一种混合的3d/deep方法。它们使用经典的图形管道渲染特定对象的三维重建。渲染后的图像由一个生成器网络进行处理,训练将每个对象的合成视图映射到真实照片。

最后,提出了一种基于特征分离的人脸操作方法。rsgan[34]对面部和头发的潜在表现进行了分解,而fsnet[33]提出了一个潜在空间,将身份和几何成分(如面部姿势和表情)分离开来。

图2:拟议的FSGAN方法概述。(a)递归再激活生成器gr和分段生成器gs。gr估计重建后的人脸fr及其分割sr,gs估计目标图像的人脸和头发分割掩模st。(b)修补发电机GC根据ST修补∮fr的缺失部分,以估计完整的重新修补面fc。(c)混合生成器gb使用分段掩码st混合fc和ft

在这项工作中,我们介绍了面交换gan(fsgan),如图2所示。设为源,它分别为fs∈is和ft∈it的目标图像。我们的目标是基于它创建一个新的图像,在保持相同的姿势和表情的同时用fs代替ft。fsgan由三个主要组件组成。第一个,以秒为单位详细说明。3.2(图2(a)),包括再激活发生器gr和分割cnn gs。gr给出了一个编码ft面部标志点的热图,生成了重新生成的图像ir,使得fr在相同的姿态和表情下描述fs,并计算了sr:fr的分割掩模,分量gs计算了ft的面部和头发分割。              如图2和图2所示,重入图像ir可能包含丢失的面部部分。2(b)。因此,我们应用面部修复网络,GC,详见第3.4使用分割st估计缺失像素。fsgan的最后部分,如图2(c)和sec所示。3.5,将完成的人脸fc混合到目标图像中,得到最终的人脸交换结果。我们的人脸分割网络gs的体系结构是基于u-net[38],使用双线性插值进行上采样。我们的所有其他生成器gr、gc和gb-都基于pix2pixhd[47]使用的生成器,包括粗到细生成器和多尺度鉴别器。与pix2pixhd不同,我们的全局生成器使用具有瓶颈块[15]的u-net架构,而不是简单的卷积和求和,而不是连接。与分割网络一样,我们在全局生成器和增强器中使用双线性插值进行上采样。生成器之间的实际层数不同。              与其他人一样,训练对象不可知的人脸再现是非常重要的,当应用于由大姿态相关的未看到的人脸图像时可能会失败。为了解决这一难题,我们建议将大姿态变化分解为小的可管理步骤,并在与目标姿态对应的最接近的可用源图像之间进行插值。以下各节将解释这些步骤

3.1.训练损失            

 特定领域的知觉丧失。为了捕捉精细的面部细节,我们采用了感知损失[18],广泛用于最近的面部合成工作[40]、室外场景[47]和超分辨率[25]。感知损失使用预先训练的vgg网络的特征图,使用欧几里德距离比较高频细节。我们发现很难完全捕捉人脸图像固有的细节,使用一个预先训练在通用数据集(如imagenet)上的网络。相反,我们的网络是在目标域上训练的:因此我们训练多个用于人脸识别和人脸属性分类的vgg-19网络[41]。设fi∈rci×hi×wi为网络第i层的特征图,其感知损失由    

        

重建损失 当公式(1)的知觉损失捕获精细细节膨胀时,仅使用该损失训练的生成器通常产生与低频图像内容重建相对应的具有不准确颜色的图像。我们还向发电机提供像素级损失:              总损失由             

式(3)中的损失用于我们所有的发电机。对抗性损失。为了进一步提高生成图像的真实感,我们使用了一个对抗性的目标[47]。我们使用多尺度鉴别器,由多个鉴别器d1,d2,…,dn组成,每个鉴别器在不同的图像分辨率下工作。对于发电机G和多尺度鉴别器D,我们的对抗损失定义为:             

 3.2.人脸重构与分割给出了一个图像i∈r3×h×w和一个代表人脸标志的热图h(p)∈r70×h×w,p∈r70×2,定义了人脸重构生成器gr为映射gr:r3×h×w,r70×h×w→r3×h×w。是与fs和ft相对应的3d地标和euler角。我们通过在es和et之间以及vs和vt的质心之间插值来生成中间2d地标位置pj,使用我们投影vs返回的中间点。我们递归地定义每个迭代1≤j≤n的重生成输出为

与其他文献[37]相似,gr中的全局生成器和每个增强器的最后一层被分成两个头部:第一层生成重新生成的图像,第二层生成分割遮罩。与其他人使用的二元面具不同[37],我们分别考虑面部和头发区域。二元面具隐式学习的再创造网络捕获大部分的头部,包括头发,我们分开分割。另外,附加的头发分割也提高了人脸分割的准确性。人脸分割生成器gs被定义为gr:r3×h×w→r3×h×w,在给定rgb图像的情况下,它输出一个编码背景、人脸和头发的3通道分割掩码。训练。受三重一致性损失[40]的启发,我们提出了逐步一致性损失。给定视频序列中同一被摄体的一对图像(is,it),设irn为n次迭代后的重影结果,eit,eirn分别为用分割掩模st和srj去除背景的同一图像。逐步一致性损失定义为:lrec(e irn,e it)。GR的最终目标:              对于GS的目标,我们使用标准交叉熵损失,LCE,以及GR的附加指导:              其中,st r是gr(it;h(pt))的分割遮罩结果,pt是与其对应的2d地标。我们交叉训练GR和GS。我们先训练一个时期的gs,然后再训练一个时期的gr,随着训练的进行,增加λ重激活。我们发现,训练gr和gs有助于过滤从粗糙的人脸和头发分割标签中学习到的噪声。

3.3 面视图插值             

标准计算机图形管道将纹理网格多边形投影到一个平面上,以便进行无缝渲染[16]。我们提出了一个新的,可供选择的连续插值方案。这一步是我们方法的一个重要阶段,因为它允许使用整个源视频序列,而无需在特定视频帧上训练我们的模型,使其不受主题限制。              给定一组源主题图像{is1,…,isn},以及对应面{fs1,…,fsn}的euler角{e1,…,en},我们构造源主题的外观图,如图3(a)所示。此外观贴图将头部姿势嵌入到三角形平面中,允许头部姿势跟随连续路径。我们先把欧拉角{e1,…,en}投射到一个平面上,然后降低滚动角。使用k-d树数据结构[16],我们移除角度域中彼此太近的点,对对应的euler角的滚动角接近于零的点进行优先排序。我们进一步去除运动模糊图像。利用剩余的点{x1,…,xm}和四个边界点yi∈[-75,75]×[-75,75],通过delaunay三角剖分在角域中建立网格m。对于一个查询欧拉角,et,一个面,ft,和它对应的投影点xt,我们找到了包含xt的三角形t∈m。设X1、XI2、XI3为T的顶点,ISI1、ISI2、ISI3为相应的人脸视图。我们计算了X1,XI2,XI3的重心坐标,1,2,3的XT的重心坐标。插值结果ir为

其中pt是ft的2d地标。如果三角形的任何顶点是边界点,则将它们从插值中排除,并将权重λi规格化为一。              在图3(b,c)中示出了面部视图查询。为了提高插值精度,当外观图相对于偏航维数为单侧时,使用水平翻转填充视图;当外观图过于稀疏时,使用gr生成人工视图。             

3.4.无法在目标面上渲染源面fs中的面修复遮挡区域,ft.nirkin等人。[35]使用fs和ft的分段来移除遮挡区域,仅渲染(交换)在源和目标面中可见的区域。较大的遮挡和不同的面部纹理会在生成的图像中造成明显的伪影。为了缓解这些问题,我们使用了一个面部修复生成器gc(图2(b))。gc渲染面部图像fs,使得生成的面部渲染∮ir覆盖整个分割遮罩st(of ft),从而解决这种遮挡。考虑到重建结果,ir,相应的分割,sr,以及背景去除后的目标图像,所有这些图像都来自同一身份,我们首先通过模拟头发造成的常见面部遮挡,通过随机去除椭圆形状的部分来增强sr,从sr的边界开始,以不同的尺寸和长宽比,使用sr和ic的增强版本去除背景后,让“ir”为ir,完成对“ir”应用gc的结果。我们将修复发电机损耗定义为l(gc)=λrec l rec(ic,∮it)+λadv l adv,(10),其中l rec和l adv是sec的重建和对抗损失。

3.5 人脸混合提出的人脸交换方案的最后一步是将完成的人脸fc与其目标人脸ft混合(图2(c))。任何混合都必须考虑到不同的肤色和光线条件。借鉴poisson混合在修补[51]和混合[49]中的应用,我们提出了一种新的poisson混合损失。设其为目标图像,将重建后的人脸图像传输到目标图像上,并对所传输的像素点进行标记。在[36]之后,我们将泊松混合优化定义为             

其中(·)是梯度算子。我们将公式(11)中的泊松优化与知觉损失结合起来。泊松混合损耗为l(GB)

4.数据集和培训             

4.1   数据集和处理我们使用ijb-c数据集的视频序列来训练我们的生成器gr,为此我们自动提取描述特定主题的帧。ijb-c包含11k个面部视频,其中我们使用了5500个高清视频。与第3.3节中的帧修剪方法类似,我们修剪过于靠近的面部视图以及运动模糊的帧。              我们将分割的cnn,gs应用到帧中,并对人脸边界框中小于15%的像素被归类为人脸像素的帧进行修剪。我们使用DLIB的人脸验证1根据主题标识对帧进行分组,并通过2D地标中的最大方差来选择框架,从而限制每个主题的帧数。在每次训练迭代中,我们从两个随机选择的对象中选择帧is和它。我们训练vgg-19cnns在vggface2数据集[9]上进行人脸识别,在celeba数据集[27]上进行人脸属性分类。VGFace2数据集包含330万张图像,描绘了9131个身份,而Celeba包含202599张图像,用40个二进制属性进行注释。我们根据其他人使用的数据训练分割cnn,gs[35],这些数据由标记有人脸分割的10k张人脸图像组成。我们还使用lfw parts labels set[19]和3k个标记用于面部和头发分割的图像,使用面部标记移除颈部区域。我们使用了额外的1K图像和figaro数据集中相应的头发分割[43]。最后,Face Forensics++[39]提供了1000个视频,通过这些视频,他们使用深度赝品[12]和Face2Face[44]随机生成了1000个合成视频。

4.2 训练详情             

我们从头开始训练所提出的生成器,其中权重使用正态分布随机初始化。我们使用adam优化[24](β1=0.5,β2=0.999)和0.0002的学习率。我们每十个时期把这个比率降低一半。所有生成器都使用以下参数:λperc=1,λpixel=0.1,λadv=0.001,λseg=0.1,λrec=1,λstepwise=1,其中,在训练期间,λ重新激活从0线性增加到1。我们所有的网络都是在八个nvidia tesla v100 gpu和一个intel xeon cpu上训练的。GS的训练需要6个小时才能收敛,而其他网络只需两天就收敛。我们所有的网络,除了GS,都是用渐进多尺度方法训练的,从128×128的分辨率开始,到256×256的分辨率结束。在一个nvidia tesla v100 gpu上,重新激活的推断速率为30fps,交换的推断速率为10fps。

5.实验结果我们进行了大量的定性和定量实验来验证所提出的方案。我们将我们的方法与之前的两种人脸交换方法进行了比较:deepfakes[12]和nirkin等人。[35]和Face2面重构方案[44]。我们通过在人脸法医学的视频上运行我们的方法,在他们使用的同一对视频上进行所有的实验。我们进一步报告消融研究显示了我们管道中每个成分的重要性

5.1 定性的人脸重建结果图4显示了我们的原始人脸重建结果,没有背景去除。我们选择了不同种族、姿势和表情的例子。在最右边的专栏中可以看到一个特别有趣的例子,它展示了我们的方法处理极端表达式的能力。为了说明迭代重影的重要性,图5为小角度和大角度的差异提供了同一主题的重影。从上一列可以明显看出,对于较大的角度差异,使用多次迭代可以更好地保留标识和纹理。             

5.2 定性人脸交换结果图6提供了人脸交换示例,这些示例取自Face Forensics++视频,而无需在这些视频上训练我们的模型。我们选择了代表不同姿势和表情、面部形状和头发遮挡的示例。因为nirkinetal[35]是一种图像到图像的面部交换方法,公平地说,对于目标视频中的每一帧,我们选择具有最相似姿势的源帧。为了将视频场景中的fsgan与视频场景中的fsgan进行比较,我们使用了sec中描述的面部视图插值。3.3               

5.3.与Face2Face相比,我们将我们的方法与Face2Face[44]在仅表达式重生成问题上进行了比较。给定一对面fs∈is和ft∈it,目标是将表达式从is转移到它。为此,我们通过交换fs的2d地标的入口点来修改ft的2d地标,类似于我们如何在sec中生成中间地标。3.2条。再激活结果由gr(it;h(_pt))给出,其中_pt是修改后的地标。示例如图7所示。

5.4 定量结果             

我们报告了定量结果,与我们定义的人脸交换问题一致:我们验证了方法在保持目标对象的相同姿势和表达的同时,如何很好地保持源对象身份。为此,我们首先将每个帧的人脸交换结果fb与被摄体的最近邻进行姿态比较。我们使用dlib[23]人脸验证方法来比较恒等式和结构相似性指数方法(ssim)来比较它们的质量。为了测量姿态精度,我们计算了FB的欧拉角与原始目标图像之间的欧几里德距离。类似地,表达式的精度被测量为2d地标之间的欧几里德距离。姿态误差以度为单位,表达式误差以像素为单位。我们在FaceForensics++中计算前500个视频的前100帧上的这些测量值的平均值和方差,并在视频中对它们进行平均。作为基线,我们使用Nirkin等人。[35]和DeepFakes[12]。从表1的前两列可以明显看出,我们的方法与以前的方法类似,保留了身份和图像质量。表1中最右边的两个度量显示,我们的方法比其基线更好地保留姿势和表达式。注意人眼对人脸上的伪影非常敏感。这应该反映在质量分数中,但这些伪影通常只捕获图像的一小部分,因此ssim分数不能很好地反映它们

图4:定性面部再造结果。第1行:重新激活的源面。第2行:我们的重新激活结果(没有背景移除)。第3行:从中传递姿势和表达式的目标面。             

图5:再生产限制。左上角的图像转换到第1行中的每个图像上(为了清晰起见,使用相同的主题)。第2行:用一次迭代重新执行。第3行:三次迭代             

表1:定量交换结果。关于FaceForensics++视频[39]。             

5.5.烧蚀研究             

我们用我们的方法的四种配置进行了消融试验:仅gr,gr+gc,gr+gb,以及我们的全管道。分割网络gs用于所有配置。定性结果如图8所示。定量结果报告表2。验证分数表明源标识在所有管道网络中都得到了保留。从欧拉和地标得分我们看到,目标姿态和表达式最好保留与完整的管道。误差差异并不是极端的,这表明修补和混合生成器gc和gb可以很好地保持姿势和表达式。由于在管道中添加了额外的网络和处理,ssim略有下降。              图6:[39]上的定性人脸交换结果。源照片交换到Nirkin等人提供的目标上的结果。[35]、深赝品[12]以及我们对未经训练的受试者面部图像的方法。             

表2:定量消融结果。当面取证+视频[39]。              

6.结论限制。图5显示了我们在不同的面部偏航角度下的重建结果。显然,角度差越大,图像的同一性和纹理质量就越差。此外,过多的面部重建生成器迭代会模糊纹理。不同于基于3dmm的方法,例如face2face[44],后者直接从im扭曲纹理             

年龄,我们的方法仅限于训练数据的分辨率。另一个限制来自使用稀疏地标跟踪方法,它不能完全捕捉面部表情的复杂性。             

讨论。我们的方法省去了繁重的、特定主题的、数据收集和模型训练,使得非专家可以进行人脸交换和重新生成。我们强烈认为,公布这类技术至关重要,以便推动制定侦查这类伪造行为的技术反措施,并迫使法律制定者制定明确的政策来解决其影响。抑制这种方法的发布并不会阻止它们的发展,相反,如果这些方法被滥用的话,它们将被用于挑选少数可能是盲目的决策者。            

图7:与Face2Face[44]在Face Forensics++[39]上的比较。如图所示,我们的方法显示的伪影比Face2Face少得多。

原文链接:https://blog.csdn.net/weixin_42057214/article/details/102860819

原文地址:https://www.cnblogs.com/Ph-one/p/12582532.html