Real-time Face Video Swapping From A Single Portrait
换脸是最近两年比较火的人脸应用,例如2019年一夜爆红的App ZAO,玩过的小伙伴估计对她的惊艳效果还记忆犹新。
本文提出了一种基于优化的实时视频人脸替换方案,只需一张图片便可替换掉目标视频中的人脸。
本文作者来自美国休斯敦大学,作者提出了一种新颖的方法来使用一张图片替换目标视频中的人脸。人脸互换/替换在最近两年是一个热门的话题,但大部分效果较好的方案都是基于深度学习的方法,需要大量的训练数据或者针对特定视频进行训练。本文提出了一种基于优化的方法,不需要任何训练数据,便能对任意视频进行人脸替换,在 nVidia Geforce GTX 2080Ti GPU 上文章方法能够以 55 FPS 的速度实时运行。
论文:http://suo.im/69t3lt
视频:
Method
文章方法的流程如下图 2 所示,首先从源图像和目标视频的每一帧重建出 3D 人脸模型、反射率 (albedo)、光照和头部姿态,每个人脸模型进一步被分解为代表面部表情的粗糙模型和代表皮肤皱纹的顶点偏移。然后将目标人脸表情和皱纹细节合成一个新的源人脸网格,再通过求解泊松方程,使得源人脸的反射率和目标人脸的反射率相匹配。最后再使用目标视频中每一帧的人脸光照和头部姿态,渲染计算的人脸网格得到新的人脸图片,并根据人脸关键点把目标图片帧的背景变形到渲染的人脸图片并进行无缝融合。
Face Tracking
Coarse Face Modeling
作者使用 FaceWarehouse 数据集构建了一个双线性的张量 ,这样通过将 和 50 维的身份向量 、25 维的表情向量 相乘,便可以得到一个具体的 3D 人脸网格。作者使用优化的方法,通过极小化如下能量函数将人脸模型拟合到图片中检测到的 73 个人脸 2D 关键点:
其中 和 分别是一对 3D-2D 人脸关键点对应点, 和 是人头的旋转和平移。
Shape from Shading Refinement
重建的粗糙人脸模型包含 5.6K 顶点和 33K 个三角面片,为了进一步增加细节信息,作者首先将人脸模型进行 4-8 Subdivision (一种三角网格细分方法),直到人脸网格顶点和像素差不多能够一一对应,然后参考文章[2]的方法,基于 shape-from-shading 算法通过极小化下面能量函数优化光照、反射率(albedo) 和每个顶点的偏移:
这里 是9维的球谐函数 (Spherical Harmonics, SH) 的系数, 是二阶的球谐函数基,其以表面法向 作为输入,这里 是增加了细节后的顶点 处的人脸法向,其由顶点偏移 表达, 是顶点 处的反射率。作者使用块坐标梯度下降算法 (block coordinate decent algorithm) 交替求解光照 、反射率 和顶点偏移 。
下图 (b) 和 (c) 分别展示了重建的粗糙人脸和带细节人脸模型,(d) 是使用估计的光照和反射率渲染的人脸模型结果。
Face Swapping
换脸任务是将目标视频中的人脸替换成源图像的人脸,同时保留目标人物的面部表情,目标视频中的头发、人体和背景保持不变。与基于深度学习的方法学习2D图像中的人脸特征不同,本文方法处理3D人脸网格的替换,将面部几何结果分解为大范围表情和细微皱纹,然后将其分别从源人脸迁移到模板人脸。
Coarse Mesh Swapping
人脸模型替换只需将源图像人脸的身份系数 和目标视频每一帧的人脸表情系数 作用在 上即可
Wrinkle Prediction
替换的粗糙人脸网格缺乏面部几何细节,作者进一步使用拉普拉斯网格编辑 (Laplacian Surface Editing) 方法,将源图片中的人脸细节迁移到目标视频中每一帧的人脸模型上。
Appearance Harmonization
将源人脸和目标视频背景组合在一起渲染一个具有真实感的人脸视频是一个非常有挑战性的问题。源人脸的颜色可能和目标人脸差异很大,这会导致在人脸边界区域接缝明显。此外源人脸图片和目标人脸视频可能是在不同的光照环境下拍摄的,即使 alpha blending 或梯度域上的融合也会造成不真实的结果。一个可能有效的方法是 image harmonization,但该方法需要求解一个大型的稀疏线性方程组,且不易在 GPU 上求解,因而不适用于实时应用,而且实验还表明该方法不能保证整个视频序列的时序一致性。
因此作者提出在纹理空间进行面部外观的协调化,为每个人脸网格顶点计算一个适应目标视频的人脸 albedo 和对应的噪声,只需在前面几帧计算好,后面的过程中保持不变以保证人脸替换结果的时序一致性。
Albedo Adaptation
Albedo 自适应需要为每个顶点计算一个适应目标视频的 albedo 颜色,该 albedo 有着和目标人脸相似的全局颜色,并和源人脸有着相同的局部梯度,通过在纹理空间构造并求解一个泊松方程得到,泊松方程的边界顶点的 albedo 值设置为目标人脸的 albedo,内部区域的 albedo 梯度设置为源人脸的 albedo 梯度,其离散化表达即:
这里 表示人脸网格的边集合, 表示人脸网格的边界。、 和 分别是源人脸、目标人脸、适应目标视频的人脸 albedo。下图5的第二列展示了优化后的人脸 albedo。
Noise Matching
与目标视频的背景相比,使用适应性 albedo 渲染的脸部噪声较小,这是 Shape from Shading Refinement 阶段施加的平滑项的结果。因此作者对每个人脸网格顶点加入噪声颜色以匹配目标背景中的噪声模式。首先通过计算渲染人脸和输入图片的差来分别计算出源人脸和目标人脸的噪声
然后通过直方图匹配 (histogram matching) 来获得匹配的噪声:
其中 是使得源噪声 与目标噪声 匹配的转换函数。上图5的第三列展示了噪声匹配的结果,可以看到得到的人脸更加逼真。
Video Rendering & Composition
接下来只需使用目标人脸的头部姿态渲染源人脸得到新图片并将其与目标背景融合,第 帧的人脸网格顶点位置 为
其中 和 分别是第 帧目标视频中人脸的旋转和平移。接下来计算人脸模型的顶点方向 ,然后在目标光照 下渲染得到新的图像:
人脸替换的一个潜在问题是 源人脸和目标人脸的形状可能会大大不同。如下图6所示,当一个长方形脸被一个正方形脸替换时,背景中的眼睛、耳朵区域可能会被渲染的人脸所覆盖,从而造成一些缺陷。为了缓解这个问题,作者根据脸部的边界和关键点 对背景图像进行了变形。具体来说,将目标人脸的边界点和内部关键点投影到图像平面上,并使用这些点进行 Delaunay 三角剖分来细分图像。由于面部拓扑是固定的,因此仅需三角化一次并进行缓存即可。然后将人脸网格 上同样的顶点投影到目标帧图像上,作为目标来变形背景图像,变形操作可以通过 shader 高效实现。最后再通过 GPU alpha blending 将渲染的人脸图像和变形的背景融合在一起,用于融合的 alpha map 是提前计算的,边界顶点的 alpha 值较小。最终的融合结果如图6(e)所示。
Implementation
作者使用 C++ 和 CUDA 实现了文章的方法。粗糙人脸网格重建阶段在 CPU 上运行,其他阶段在 GPU 上并行运行。作者使用 cuSolver 求解光照估计中的线性方程,顶点偏移估计中的非线性最小二乘问题使用 GPU 并行的高斯牛顿求解器求解,每一帧迭代10次,最佳步长由预条件共轭梯度 (Preconditioned Conjugate Gradient, PCG) 求解器迭代10次求解得到。对于 albedo 估计和外观协调化,作者同样使用 PCG 求解器迭代100次来求解大型稀疏线性系统。
文章中的所有实验均在台式机上运行,该台式机配备了 3.7 GHz Intel Core i7 CPU 和 nVidia Geforce GTX 2080Ti GPU。输入的图像和视频是使用 Logitech C922x Pro 网络摄像头拍摄的,作者以 1080P 分辨率拍摄源图像,并以 720P 分辨率和 60 FPS 拍摄目标视频。粗糙人脸网格重建需要1毫秒的CPU时间,人脸网格的完善、替换、渲染和合成需要8毫秒的CPU和18毫秒的GPU时间。反照率估计和自适应总共需要3毫秒,并且仅在视频的前几帧中运行。总体而言,文章的系统在实验计算机上能够以 55 FPS 的速度运行。
Results
下图展示了同一源人脸图片替换不同人脸视频图片的结果,虽然人脸的肤色为了与目标视频协调一致而有所变化,但源图片中的人脸形状、眉毛、鼻子和胡须在结果中都得以保留。
下图展示了不同源人脸图片替换同一人脸视频图片的结果,可以看见源图片中的人脸形状和面部特征 (如眉毛、鼻子和痣) 在结果中都得到保留,而肤色、表情和光照则来自目标视频中的人脸。
下图展示了文章方法和 FaceSwap、Deepfakes 和 Nirkin et al. 方法的比较,文章方法不需要任何训练数据,且能够保留更多的面部细节。
参考
Real-time Face Video Swapping From A Single Portrait. Luming Ma, Zhigang Deng. ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D), 2020.
Real-time Hierarchical Facial Performance Capture. Luming Ma, Zhigang Deng. ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D), 2019.
推荐阅读
- FaceShifter - 面向高保真和遮挡感知的换脸算法
欢迎关注公众号“人脸人体重建”,和您分享值得关注的人脸人体相关技术最新文章。