通过语音驱动的风格化3D面部动画生成需要学习语音、风格和相应的面部运动之间的多对多映射关系。然而,现有方法要么使用确定性模型进行从语音到运动的映射,要么使用一种独热编码方案来编码风格。独热编码方法无法捕捉风格的复杂性,从而限制了泛化能力。在本文中,我们提出了 DiffPoseTalk,这是一个基于扩散模型的生成框架,结合了一个风格编码器,从参考视频中提取风格嵌入。此外,我们将这一方法扩展到了头部姿势的生成,从而提高了用户的感知体验。大量实验证明,我们的方法优于现有的先进方法。
论文题目:DiffPoseTalk: Speech-Driven Stylistic 3D Facial Animation and Head Pose Generation via Diffusion Models
作者:Zhiyao Sun 等
来源:Arxiv
论文链接:https://arxiv.org/abs/2310.00434
内容整理:王怡闻
引言
语音驱动的3D面部动画从任意语音信号生成与嘴唇同步的面部表情,需要学习语音、风格和相应的面部运动之间的多对多映射关系。大多数现有的语音驱动的3D面部动画方法依赖于确定性模型,这些模型通常无法充分捕捉复杂的多对多关系,而且面部动作过于平滑。此外,这些方法通常在训练过程中使用独热编码来表示风格特征,因此限制了它们适应新的风格的能力。为了解决上述限制和挑战,我们提出了DiffPoseTalk。与现有方法相比,DiffPoseTalk的主要改进可概括如下。我们使用基于注意力的架构将面部动作与语音对齐,并训练一个扩散模型来预测面部表情信号;除了表情之外,我们还预测了说话者的头部姿势,并设计相应的损失函数以获得更自然的动画。此外,我们利用Wav2Vec来编码输入的语音,以提高泛化能力和稳健性。最后,我们开发了一个风格编码器,从风格视频剪辑中获取潜在的风格代码。最后,我们构建了一个包含多种说话风格的语音驱动的面部动画数据集。
我们的贡献总结如下:
- 我们提出了一种基于扩散模型的方法,用于生成来自语音的多样化和富有风格的3D面部动作和头部姿势,充分捕捉了语音、风格和动作之间的多对多映射关系。
- 我们开发了一个风格编码器,用于从参考视频中提取个性化的说话风格,并在推理时以classifier-free的方式指导模型生成。
- 我们建立了一个高质量的音频-视觉数据集,包含多种身份和头部姿势。
方法
问题公式化
我们的方法以语音特征 A0:T,模板面部形状参数 β 和说话风格向量 s 作为输入,然后生成一个基于3DMM的 3D 面部动画,表示为一系列3DMM表情和姿势参数 X0:T。风格向量 s 可以使用我们的说话风格编码器从一个短参考视频中提取出来。
输入语音处理
Wav2Vec2 具备生成强大和上下文丰富的音频特征的能力,优于传统的特征提取方法,如 MFCC。因此,我们采用 Wav2Vec2 作为我们的语音编码器。Wav2Vec2 由一个时域卷积音频特征提取器和一个多层 Transformer 编码器组成。为了将音频特征与面部动作对齐,我们在时域卷积之后引入了一个 resample 层。
3D人脸表征
我们利用 FLAME 模型来重建人脸。基于 FLAME 模型的人脸几何形状可以用参数 β,ψ,θ 来表示,其中 β 是形状参数,ψ 是表情参数,θ 是姿势参数。给定一组 FLAME 参数,可以使用:
来获得 3D 面部网格。对于面部动画,我们预测表情参数 ψ 以及姿势参数 θ 中的下巴和全局旋转分量。为了简化符号表示,我们将 ψ 和 θ 记为“运动参数” x,并将网格构建函数重写为 M(β,x)。
面部动画生成扩散模型
通常来说,去噪网络被训练来预测噪声或干净的样本 X0。在这个方法中我们选择后者,因为这使我们能够将几何损失考虑在内,这些损失提供了对面部动作更精确的约束。
结构
我们的基于 Transformer 的去噪网络,如图2所示,由两个组件组成:
- 预训练的Wav2Vec2编码器,用于提取语音特征A。
- Transformer解码器,用于以迭代的方式从加噪数据 Xn中采样预测的动作 X0。
我们还设计了编码器和解码器之间的对齐掩码,它确保了语音和动作模态的正确对齐。具体来说,t处的动作特征仅与t处的语音特征相关联;初始标记由扩散时间步n和其他条件组成,它与所有语音特征相关联。我们允许Wav2Vec2语音编码器的Transformer部分可以进行训练,这使Wav2Vec2能够更好地直接从语音中捕获动作信息。
去噪网络的输入处理如下:对于给定长度为T的语音特征序列,我们将其分成长度为Tw的窗口(如果音频不够长,会添加填充)。为了确保连续窗口之间的平稳过渡,我们将上一个窗口的最后Tp帧语音特征A_Tp:0和运动参数X_Tp:0作为条件输入包含在内。对于第一个窗口,语音特征和运动参数被替换为可学习的起始特征Astart和Xstart。网络接收先前和当前的语音特征A_Tp:Tw,运动参数X0_Tp:0,以及加噪的运动参数X0:ntw。然后,去噪网络输出干净样本。
损失函数
我们使用简单损失函数来评估预测样本:
为了更好地约束生成的面部动作,我们将FLAME参数转换为零头部姿态的3D网格序列
和
风格控制设计
风格编码器
我们引入了一个设计用于捕捉给定演讲者的独特演讲风格的说话风格编码器。演讲风格是一个多方面的属性,表现在诸如嘴巴开合的大小、面部表情动态和头部运动模式等各个方面。鉴于描述演讲风格的复杂性和难度,我们选择通过对比学习的隐式学习方法。我们基于这样一种假设,即同一个人在两个接近的时间点的短期演讲风格应该是相似的。
说话风格编码器使用一个Transformer提取风格特征,编码器的特征hi通过平均池化得到风格嵌入s中。
我们使用NT-Xent损失进行对比学习。每个训练小批次由长度为2T的语音特征和动作参数的Ns个样本组成。我们将样本长度分成两半,以获得Ns对正样本。对于给定的正样本对,其他2(Ns-1)个样本被视为负样本。我们使用余弦相似性作为相似性函数。正样本(i,j)对的损失函数定义如下:
训练策略
用classifier-free指导推理
实验
数据集
在这项工作中,我们使用了两个数据集的组合。首先,我们整合了高清对话面部(HDTF)数据集,这是一个高质量的音频-视觉集合,包括从YouTube获取的720P-1080P分辨率的视频。通过使用作者提供的下载脚本,我们成功获取了348个视频,涵盖了246名主题,总共约16小时的素材。然而,这些视频主要来自三个政治周刊节目的收集,因此数据集偏向正式演讲风格,面部表情和头部运动有限。为了解决这个限制,我们引入了一个额外的数据集——具有头部姿势的对话面部(TFHP),包括342名受试者的704个视频,总共10.5小时。我们的TFHP数据集在内容上更加多样化,包括讲座、在线课程、采访和新闻节目的视频片段,因此捕捉到更广泛的演讲风格和头部运动。我们按演讲者划分了合并数据集,结果为460个用于训练,64个用于验证,64个用于测试。所有视频都转换为25帧。采用一种具有精确重建唇部运动的最先进的3D面部重建方法,将2D视频数据集转换为3DMM参数。
对比
我们采用了两个已建立的度量标准——唇顶点误差(LVE)和上半脸动态偏差(FDD)来定量评估生成的面部表情。为了评估头部运动,我们使用了节拍对齐(BA),计算了检测到的头部运动节拍在预测和实际结果之间的同步性。由于嘴巴的开合大小也可以表明演讲风格,我们引入了一个新的度量标准,称为嘴巴开合差异(MOD),它测量了预测和实际数据之间嘴巴开合大小的平均差异。
消融实验
我们进行消融实验来评估我们提出的方法中关键组件和技术的影响:
1)无SSE:我们移除了说话风格编码器。
2)无Lgeo:移除了所有几何损失,包括与面部顶点和头部运动相关的损失。
3)无AM:移除了编码器和解码器之间的对齐掩码。
4)无CFG:我们没有使用无分类器指导。
可以看到,移除说话风格编码器导致在所有度量标准上的性能下降,因为我们的方法不再能够生成适合个体说话风格的动画。移除所有几何损失导致我们的方法无法产生精确的面部动画。移除对齐掩码会导致严重的不同步问题。不使用无分类器指导也会影响结果的质量。
总结
在本文中,我们提出了DiffPoseTalk,这是一种基于扩散模型的新方法,用于从语音生成多样化和富有风格的3D面部动画和头部姿势。我们充分利用了扩散模型的能力,有效地复制多种形式的分布,从而解决了多对多映射的挑战。此外,我们解决了当前扩散模型的局限性,这些局限性阻碍了其直接应用于语音驱动的表情动画。借助扩散模型和说话风格编码器的强大功能,我们的方法在捕捉语音、风格和动作之间的多对多关系方面表现出色。我们还提供了一个高质量的音视频数据集,包含704个视频,涵盖了不同的说话风格,具有丰富的头部运动,并根据它来训练我们的模型。实验结果表明,我们的方法在捕捉说话风格方面非常有效,而且在唇同步、头部姿势拍子对齐和自然性方面优于先前的最先进方法。在未来的工作中,我们将考虑加速生成过程。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。