SyncTalk The Devil is in the Synchronization for Talking Head Synthesis|论文随记
发表于:CVPR2024
原文链接:https://arxiv.org/abs/2311.17590
贡献:
- 提出了一种面部同步控制器,该控制器将视听编码器与面部动画捕获器结合使用,确保准确的唇形同步和动态面部表情渲染;
- 引入了头部同步稳定器,可跟踪头部旋转和面部运动关键点。该稳定器采用束调节方法(bundle adjustment method),保证头部运动平稳、同步;
- 设计了一个肖像同步生成器,通过修复 NeRF 建模中的伪影并细化高分辨率视频中的头发和背景等复杂细节来提高视觉保真度。
现有工作存在的缺点
- 基于GAN的方法,生成的图像质量欠佳;
- 基于NeRF的已有方法,大部分都是直接依靠语音信息进行面部图像合成,生成的图像相比于GAN质量有提升,但是存在:同步性和自然性不好,缺乏对面部表情的控制,姿势不稳定,头部和躯干分离等问题。
3 方法
8267)
3.1 模型概述
如图2所示。SyncTalk主要由3部分组成:a)由FaceSync控制器控制的嘴唇运动和面部表情,b)由HeadSync稳定器提供的稳定头部姿势,c)由动态肖像渲染器渲染的高同步面部帧。
3.2 Face-Sync Controller
Audio-Visual Encoder
与已有方法不同,作者没有采用用于语音识别的预训练音频视觉编码器,而在LRS2数据集上训练的视听同步音频编码器。使用一个唇同步鉴别器对其进行监督训练,可以鉴别语音经过编码器输出的特征与真实唇部特征是否重叠。通过下方余弦相似度公式计算:
然后通过二元交叉熵损失,最小化同步样本的距离并最大化非同步样本的距离。
预训练上述视听特征提取器后,使用卷积网络获取音频特征Conv(A),并对面部特征Conv(F)进行编码。将特征进行连接,使用堆叠卷积层操作解码,来恢复面部帧,重建损失如下:
Facial Animation Capturer
为了面部表情的同步、真实,本文引入了一个表情同步控制模块。引入了一个3D面部先验,使用B代表的52个语义面部融合变形系数来对面部进行建模,如图3所示。由于3D面部模型可以保留面部运动的结构信息,因此可以反映面部运动的结构信息。
在训练过程中,我们首先使用一个复杂的面部融合形状捕获模块来捕获面部表情作为 E ( B ) E(B) E(B),并选择七个核心面部表情控制系数来控制眉毛,额头和眼睛区域。它们与表情高度相关,并且独立于嘴唇运动。我们可以在推理过程中同步说话人的表情,因为面部系数是语义可知的。
Facial-Aware Masked-Attention.
引入一个注意力模块,对嘴唇特征和表情进行解耦,减少互相干扰。基于区域注意力向量V,分别将mask M l i p M_{lip} Mlip和 M e x p M_{exp} Mexp添加到嘴唇和表情的注意力区域。
可以通过上述注意力得到解耦的唇部特征 f l = f l i p ⊙ V l i p f_l = f_{lip} \odot V_{lip} fl=flip⊙Vlip和表情特征 f e = f e x p ⊙ V e x p f_e = f_{exp} \odot V_{exp} fe=fexp⊙Vexp。
Head-Sync Stabilizer
为了估计头部姿态,最初,通过在预定范围内的i次迭代来确定最佳焦距。对于每个焦距候选项 f i f_i fi,系统重新计算旋转和平移值。目标是最小化来自3DMM的投影地标与视频帧中的实际地标之间的误差。形式上,最佳焦距 f o p t f_{opt} fopt由下式给出:
随后,利用最佳焦距 f o p t f_{opt} fopt,系统细化所有帧的旋转R和平移T参数,以更好地将模型的投影地标与实际视频地标对齐。该细化过程可以在数学上表示为:
Head Points Tracker
对于头部关键点,以前的方法采用3DMM技术先提取头部姿势生成不太准确的结果。为了提高R和T的精度,本文选择使用光流估计的模型来跟踪面部关键点K。
具体来说,使用预先训练的光流估计模型,获得面部运动光流,使用拉普拉斯滤波器来选择最显著的流量变化所在的关键点,并跟踪这些关键点在流量序列中的运动轨迹。通过这个模块,方法确保了所有帧中更精确和一致的面部关键点对齐,提高了头部姿势参数的准确性。
Bundle Adjustment
给定关键点和粗略的头部姿势,本文引入了一个两阶段优化框架来提高关键点和头部姿势估计的准确性。
第一阶段:随机初始化j个关键点的3D坐标并优化其与图像屏幕上跟踪的关键点对齐。如下函数:
第二阶段:细化3D关键点和相关的头部联合姿势参数,通过Adam优化,算法调整坐标、旋转角度R、平移T以最小化对其误差,如下:
3.4 Dynamic Portrait Renderer
Tri-Plane Hash Representation
如下公式,代表预测的像素颜色如何表示。
为解决哈希冲突、优化音频特征处理,结合了三个特定方向的2D哈希网络。通过3D点坐标向三个单独的2D多分辨率编码器对其投影值进行编码转换:
其中 f a b A B ∈ R L D f_{ab}^{AB} \in R^{LD} fabAB∈RLD,层数为L、特征维度为D,表示投影坐标和对应的平面几何特征, H A B \mathcal{H}^{AB} HAB 表示平面AB的编码器。融合所得的结果得到几何特征 f g ∈ R 3 × L D f_g \in R^{3 \times LD} fg∈R3×LD为:
将特征串联得到3*LD通道向量。三屏幕哈希的隐式函数表示为:
其中 H 3 \mathcal{H}^{3} H3 表示合并了三个平面哈希编码器。
对于上述模型的训练,采用两步从粗到细的策略,首先使用MSE损失评估预测和实际图像颜色之间的差异,在细化阶段,结合LPIPS损失增强随机细节,类似于ER-NeRF。从图像中随机选择补丁P,与MSE计算加权损失:
Portrait-Sync Generator
为解决发丝或动态背景等精细细节方面的局限性,本文引入了一个包含两个关键部分的PortraitSync 生成器。
首先,NeRF 渲染面部区域 ( F r F_r Fr),通过高斯模糊创建 G ( F r ) G(F_r) G(Fr),然后使用同步的头部姿势与原始图像 ( F o F_o Fo) 合并,以增强头发细节保真度。其次,当头部和躯干结合在一起时,如果源视频中的角色说话而生成的面部保持沉默,则可能会出现暗间隙区域,如图5(b)所示。我们用平均颈部颜色 (Cn) 填充这些区域。这种方法通过肖像同步生成器产生更真实的细节并提高视觉质量。
4 实验
4.2 定量评价
唇部同步性定量比较:
4.3 定性评价
4.3 消融实验
结论
本文介绍了 SyncTalk,这是一种基于 NeRF 的高度同步方法,用于语音驱动talking-head合成。框架包括面部同步控制器、头部同步稳定器和肖像同步生成器,它们可以保持主体身份并生成同步的嘴唇运动、面部表情和稳定的头部姿势。通过广泛的评估,与现有方法相比,SyncTalk 在创建逼真且同步的头部特写视频方面表现出了卓越的性能。