机器之心专栏
作者:网易互娱AI实验室
网易互娱AI实验室提出了基于单幅图片的实时高分辨率人脸回放算法,分别支持在桌面GPU和手机CPU上以实时帧率生成1440x1440和256x256的人脸回放图像。
近年来,人脸再现技术因其在媒体、娱乐、虚拟现实等领域的应用前景而备受关注。它最直接的帮助就是帮助提高音视频的制作效率。
人脸重放算法是一种以源人脸图像为输入,能够将驾驶人脸的面部表情和头部姿态迁移到源图像中,同时保证迁移过程中源人脸的身份不变的算法。相关技术在虚拟主播和视频会议等媒体和娱乐应用中具有巨大的潜力。然而,现有算法往往计算复杂度较高,其性能无法满足实时应用环境的要求。
针对这一痛点,网易互娱AI实验室提出了基于单张图片的实时高分辨率人脸复刻算法。与现有的SOTA方法相比,该算法在保证结果质量的同时,算法速度最高可提高9倍。支持在桌面GPU和手机CPU上分别以实时帧率生成1440x1440和256 × 256分辨率的人脸复刻图像。
近日,网易互娱AI实验室与清华大学合作,对方案进行了系统梳理,撰写了一篇论文:《实时高分辨率单镜头人脸复现》,已收录于《ECCV 2022》。
2 Faceρ生成结果,左:1440 × 1440分辨率结果(帧率:25 fps,GPU:Nvidia GeForce RTX 2080Ti),右:256 × 256分辨率结果(帧率:25 fps,CPU:高通Kryo680)
项目地址:https://github.com/NetEase-GameAI/Face2FaceRHO
技术背景
目前已经有很多关于人脸重现的相关研究。然而,无论是传统的基于CG的技术、基于图像的检索还是GAN方法实现人脸回放,都需要大量的源人脸的训练数据(几分钟到几小时),在实际应用场景中几乎无法满足。
因此,近年来,一些学者提出了仅依赖少数或单张人脸图像进行人脸复现的算法。这些方法的主要思想是对人脸的外观和运动信息进行解耦和编码,然后在大量的视频集合中通过自我监控来学习它们的先验信息。根据运动信息编码方式的不同,相关的工作可以分为两类:基于warp的和直接合成的。其中,基于变形的方法将运动信息的显示表示为一个运动场,而直接合成方法是将人脸的外观和运动信息分别编码在低维隐藏空间空中,然后解码得到合成结果。
虽然这两种方法目前都能取得不错的效果,但各有利弊。基于变形的方法只适用于头部姿态变化较小的情况,而编辑前后头部姿态变化较大时效果往往较差。直接合成法虽然可以应对姿态的较大变化,但合成结果的整体保真度不如变形法。比如编辑后往往会改变原来的人脸身份。此外,最重要的是现有方法的复杂度往往较高,性能无法满足实时应用环境的要求。
针对两种方法存在的问题,项目组创新性地融合了两种方法,给出了一个支持实时人脸回放的优化框架。利用该框架,我们首次在不降低最终合成质量的情况下,仅依靠CPU实现了手机上的实时人脸回放。同时,如果使用桌面GPU,该框架可以支持1440 × 1440的高分辨率实时人脸回放。
技术理念
该方案的核心思想是将直接合成方法融入到基于变形的算法流程中,主要包括两个模块:
1.由于基于变形的算法不需要从头合成所有人脸信息,具有构建支持实时应用的网络结构的潜力,因此本方案以基于变形的算法框架为骨干,提出了轻量级的U型变形网络结构;同时,结合直接合成法的姿态编码方法对驾驶人脸的三维姿态进行编码并注入网络,从而提高大姿态的生成质量。
2.为了进一步提高算法的效率,该方案还提出了一种分层运动场预测网络来估计从源人脸到驾驶人脸的像素运动。与现有的单尺度运动场估计算法不同,该方案可以基于不同尺度的特征点图像对运动场进行由粗到细的预测,保证了计算精度,进一步降低了算法的复杂度。
算法流程图
技术实现
在这个训练阶段,源图像和驱动图像对被用作输入。首先利用3DMM算法拟合照片中人脸的形状、表情和头部姿态参数,计算出相应的特征点图像。然后,渲染模块根据源图像、运动场、源图像和驱动脸部的头部姿势来合成脸部重放结果。其中,运动场由运动模块基于不同尺度的特征点图像由粗到细进行预测。
3DMM配件
该方法首先利用网易互娱AI实验室开发的人脸3DMM重建算法,计算输入源图像和驾驶图像的人脸参数之和,其中人脸形状参数、人脸表情参数和头部姿态参数,S和D分别代表源人脸和驾驶人脸。与现有方法在应用3DMM重建结果时需要重建整个人脸不同,该方案只需要利用拟合的人脸信息来重建一些关键点。在当前方案中,基于Face++的106点人脸特征点分布方案,我们选取了72个人脸关键点来构建后续运动模块所需的人脸特征点图。
渲染模块
该方案的渲染模块主框架采用了基于变形的方法。然而,传统的算法框架仅支持将输入图像尺寸下采样到原始尺寸的1/4。使用更多的下采样层数会明显降低图像合成质量,导致整个网络不得不对图像进行更大规模的处理,从而增加算法的运行时间和内存占用。
为了解决这一问题,该方案提出了一种更高效的渲染框架,支持将输入图像下采样到原始图像的1/16,同时保证最终的合成质量。网络结构如下图所示。主要结构由一个U形编码器和解码器组成。因为每个下采样层都会造成图像细节的丢失,所以我们通过增加编码器和解码器之间的跳转连接来补偿这种信息丢失。通过采用这种设计方案,我们可以引入两个额外的下采样操作,与现有的基于变形的算法框架相比,在基本不改变生成质量的情况下,可以加快至少3倍。
渲染模块网络结构图
传统的基于变形的网络框架的另一个显著缺点是它们只能处理有限范围内的姿态变化。因此,本文借鉴直接合成法的思想,借助姿态信息有效提高大姿态下的人脸合成质量,将头部姿态信息进行编码并注入编码器E_I和D _ I,其中主流的头部姿态编码方法多基于2D人脸特征点、3D人脸特征点或网格后的3DMM人脸模型。但是,这些信息的生成或处理会引入不可忽视的计算成本。
因此,该方案直接使用3DMM拟合阶段获得的头部姿态信息作为姿态编码,并将其注入到渲染网络中。具体来说,首先通过反卷积网络对6维姿态信息进行矩阵编码,然后通过SPADE模块注入到渲染框架中。这里不采用主流的AdaIn方法对姿态信息进行编码和注入的主要原因是对时间效率的考虑。测试表明,AdaIn中使用的MLP结构消耗更多的时间,最终结果与SPADE方法相似。
运动模块
从源图像到驱动图像的人脸运动信息的准确估计对基于变形方法的合成质量起着重要作用。利用人脸的3DMM网络作为运动场估计的引导信息,是目前主流且有效的方式。但是这种方法首先需要重建整个人脸模型,而这种方法只需要重建人脸网络上的稀疏特征点。该方案通过将这些重构的特征投影到二维上,绘制人脸特征点作为预测运动场的指导信息,可以避免整个人脸网格的软渲染过程(往往非常耗时),使得算法的输入数据即使在手机CPU上也能快速生成。
运动模块网络结构图
目前,主流的体育领域预测网络框架大多是基于单尺度沙漏网络,虽然效果不错但效率较低。受近期光流场估计方法根据低分辨率预测结果逐步生成高分辨率结果的启发,本文提出了一种类似的由粗到细的运动场估计策略,在不损失预测精度的情况下,比传统的单尺度算法速度提高了3.5倍。如上图所示,运动模块使用三个子网络来预测不同尺度下的运动场。每个子网络使用不同尺度的源图像和特征点图像作为输入,输出为运动场的残差,用于为前一个网络的预测结果增加细节。
此外,每个子网络的上采样特征图将被发送到下一级网络,以加快网络训练的收敛速度。需要注意的是,发送到不同尺度子网络的特征点图中使用的特征点数量也在逐渐增加。如上图右侧所示,每层使用的特征点是72个特征点的子集,编号分别为8、27、72。
训练和预测的详细信息
本文使用VoxCeleb数据集进行训练,该数据集包含约20k的视频数据。训练过程是自我监督的,从同一视频中随机抽取两幅图像分别作为源图像和目标图像。另外,本文采用联合优化的方法在训练中更新渲染网络和运动网络的网络结构参数,损失函数包括以下几项:
其中对应重建损失、变形损失、对抗损失、特征匹配损失,每个损失项的权重分别为15500,1,1。在本文的实现中,使用VGG-19网络计算生成结果与真实背景之间的感知损失,然后计算使用预测运动场对源图像进行变形的结果与真实背景之间的L1损失,以约束运动模块生成正确的运动场。对抗性学习用于进一步提高合成结果的质量,特征匹配损失用于稳定整个训练过程。
在预测过程中,对于给定的源图像,其人脸3DMM参数、特征点图以及渲染网络中计算出的特征码都可以离线预计算。剩下的步骤都是在线计算(比如驾驶面、运动场等的3DMM参数。).
效果显示
项目组分别在人脸复现和人脸重建两项任务中,将提出方案的生成结果与现有的SOTA方法(FS-VID2VID、双层、LPD、FOMM、MRAA、Headgan)进行了比较。从图中可以看出,无论是在保持人脸身份方面,还是在编辑头部大姿态方面,所提方案的结果都优于或类似于现有的最优方法,充分说明了算法的有效性。
人脸重放算法的比较
人脸重建算法的比较
此外,项目组还给出手机算法的运行效率。该算法目前支持在手机CPU下实时生成帧率为25 fps的256x256分辨率人脸回放图片,而现有方案不支持在手机CPU下实时运行。
手机运行时间
最后,项目组给出了算法分别在PC和移动端运行的演示例子。
移动演示
电脑演示
剧终
授权请联系本微信官方账号。
投稿或寻求报道:content@jiqizhixin.com