【论文精读】 SadTalker:Stylized Audio-Driven Single Image Talking Face Animation(CVPR2023)

简介: 【论文精读】 SadTalker:Stylized Audio-Driven Single Image Talking Face Animation(CVPR2023)

论文: 《SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation》

github: https://github.com/Winfredy/SadTalker

摘要 Abstract

通过人脸图像和一段语音音频生成TalkingHead Generation仍然包含许多挑战:不自然的头部运动扭曲的表情和身份变化。 作者认为这些问题主要是因为从耦合的 2D 运动场中学习。 另一方面,使用 3D 信息也存在表情僵硬和视频不连贯的问题。

因此作者提出SadTalker,生成3DMM的三维(头部姿势、表情)系数,利用三维面部渲染器进行视频生成。为了学习逼真的运动场系数,作者建模音频与不同类别运动场系数之间联系。作者提出ExpNet,蒸馏运动场系数与三维渲染人脸学习准确面部表情。对于头部姿势,作者设计PoseVAE生成不同风格头部动画。最终生成的3DMM系数映射至面部渲染器的三维关键点空间进行生成视频。

1. 介绍 Introduction

我这里列出几个我看论文时觉得有趣和重要的点

  • 作者观察到,3D面部模型包含高度解耦的表示,可用于来单独学习每种姿势的运动
  • SadTalker全称实际是:Stylized Audio-Driven Talking-head video generation system through

implicit 3D coefficient modulation,作者希望通过3D模型中解耦出来每种姿势的运动来进行学习,这里面就用到了3DMM的运动系数。

  • 作者希望在音频audio中生成逼真的运动系数(例如:头部姿势,嘴唇运动和眨眼),并且单独学习每个运动,这样可以减少不确定性,所以建模音频和运动场系数的关系
  • 对于表情系数的提取,提出一个音频到表情系数网络ExpNet,希望从Wavlip的唇形运动系数和重建渲染的 3D 面部上的感知损失(唇形同步损失、面部关键点损失)中提取系数 。
  • 对于特定姿态的头部姿势来说,提出了PoseVAE,用条件VAE来学习给定姿势的残差来模拟多样性和逼真的头部运动。
  • 在生成了逼真的3DMM运动系数后,再通过一个3D感知面部渲染器来驱动源图像,这个方法借鉴了facevid2vid的想法,建模了3DMM运动系数和面部渲染器的三位关键带你空间之间的关系。

主要的贡献是作者提出了SadTalker,利用ExpNet从音频中蒸馏和提取出真实3DMM的运动系数,利用PoseVAE可以学习特定的头部姿势,最后受facevid2vid的启发,建模了3DMM系数与3D感知面部渲染器中的三维关键点之间的关系,最后可以从源图像生成逼真的视频。

2. 方法 method

Figure 2. Main pipeline. Our method uses the coefficients of 3DMM as intermediate motion representation. To this end, we first generate realistic 3D motion coefficients (facial expression β, head pose ρ) from audio, then these coefficients are used to implicitly modulate the 3D-aware face render for final video generation.

整个方法如图2所示,整个系统利用3DMM系数作为中间表示。首先从原始图像中提取出系数,然后从音频中提取出真实的3DMM的系数(面部表情系数β, 头部姿势ρ),最后通过3D感知面部渲染器生成得到最后的视频。

3.1. Preliminary of 3D Face Model

在3DMM中,人脸的shape S 可以被解耦为以下公式

image.png

其中 S ‾  表示3D人脸平均shape, 表示形状正交基,U e x p U_{exp}U

exp

 表示表达正交基,α、β为相关系数,其中分别描述的是人的身份和表情。为保留姿态变化,系数r、t分别表示头部旋转及变换;为了使得参数与人体解耦,作者利用音频仅建模参数{β, r, t},其中头部姿势参数ρ = [ r , t ] ρ=[r,t]ρ=[r,t],这些参数用于调制面部渲染器生成最终视频。

3.2. Motion Coefficients Generation through Audio

**3D运动系数包含头部姿势和表情,其中头部姿势是全局运动,而表情相对是局部的,所以如果一起学习的不确定性会提高。又因为音频与头部姿态弱相关而与嘴唇变换强相关。**因此作者使用PoseVAE生成头部姿态相关系数,ExpNet生成表情相关系数。

ExpNet

通过音频生成准确表情相关参数有两个难点:

  1. 不同人体音频到表情有不同表现,这不是一个一对一的任务;
  2. 表情中有些与音频无关动作,这影响预测准确性;

所以说ExpNet用于降低这些不确定性,而对于个人身份ID问题,可以通过第一帧的表情系数的 β 0  建立表情和特定人的身份进行关联;为了减少在说话时其他面部成分的表情的权重,就利用预训练的Wav2lip生成的嘴唇运动系数作为target,除此之外,其他的微表情通过额外的关键点损失来约束。

如图3,对于一段音频,首先生成t帧表情系数,其中每个帧的音频特征就是0.2s的梅尔频谱。训练时,利用一个基于ResNet的音频编码器 Φ A  映射到一个隐空间,然后线性层作为一个映射网络Φ M  解码表情系数,并且还引入参考表情β 0用于保持个人特征,在训练时仅仅使用唇部区域作为真值,因此作者还引入了眨眼控制的信号z b l i n k z_{blink}

来形成可控的眨眼,以及对应的眼部关键点的损失用于控制眨眼。

image.png

image.png

PoseVAE

如图4,一个基于VAE的模型PoseVAE用于学习逼真的有个人风格的头部运动ρR6,PoseVAE是一个编码器解码器结构。在训练时,在固定的n帧进行训练,编码器与解码器输入包括连续的t帧头部姿势,embed为高斯分布,解码器网络根据采样到的分布学习生成t帧姿态。

PoseVAE没有直接生成姿势,而是学习与第一帧姿势 ρ0 之间的残差,这使本方法能够在测试阶段中基于第一帧条件下的生成更长、稳定和连续的头部运动。

此外,根据CVAE的想法,还添加了相应的音频特征a { 1 , … , t }

和风格z style

作为条件,使得模型更关注节奏及个人风格。其中L KL

用来衡量生成运动的分布,L mse 和L GAN

确保生成的质量。

e2dbcdd749b94b7a8a478e3f07dbc510.png

3.3. 3D-aware Face Render

这一部分是从face-vid2vid得到的灵感,可以隐式地从单个图像中学习 3D 信息,不过face-vid2vid需要真实视频作为驱动信号,而作者提出的面部渲染器利用3DMM参数进行驱动,如图5,作者利用映射网络学习3DMM运动系数与无监督3D关键点之间关系。

这个mappingNet是通过几个一维卷积层构建的,并且中间还利用了PIRenderer进行平滑,但是在后面的消融实验中发现,利用PIRenderer的对齐运动系数会影响到生成视频的运动自然度,只使用表情系数和头部姿势系数会得到更好的结果。

训练主要分为两部分:

以自监督的方式训练face-vid2vid

冻结frozen外观编码器、关键点估计、图像生成模块参数进行finetuning,而后通过重构的方式训练映射网络,在关键点空间使用lossL 1loss约束。

4. Experiments

与SOTA实验相比

如表1可以看到,与其他实验相比,生成的视频质量更高,并且具有头部姿势多样性。

Table 1. Comparison with the state-of-the-art method on HDTF dataset. We evaluate Wav2Lip [28] and PC-AVS [48] in the one-shot settings. Wav2Lip* achieves the best video quality since it only animates the lip region while other regions are the same as the original frame. PC-AVS** is evaluated using the fixed reference pose and fails in some samples.


下图就是上述的一些展示结果,可以看到与其他方法相比,Wav2Lip 产生模糊半脸。 PC-AVS 和 Audio2Head 没能保持身份ID,Audio2Head 只能生成前面说话的脸。此外,MakeItTalk和 Audio2Head 由于 2D 变形而生成扭曲的面部视频,并且SadTalker生成的视频也更加高清。

Figure 6. We compare our method with several state-of-the-art methods for single image audio-driven talking head generation. Our method produces much higher quality results in terms of lip synchronization, identity preservation, head motion and image quality. We give the target image above for both lip shape and identity reference. Please refer our supplementary video for better comparison.

User Studies

这里做了一个很有趣的实验,就是让用户来评估一下视频的质量和结果,结果发现用户比较多认为SadTalker生成的视频比较好,作者说可能认为大部分更注重整体的质量和结果,而上述表1所示的结果可能更注重细节了。

nfluence their opinions. User study.

消融实验

ExpNet

从表3可以看出,学习所有系数很难得到很好的结果,初始表情β 0

和唇部读取损L read 都是比较重要的,特别是唇部系数,更加重要。从下图7也可以看出,利用SadTalker的方法,增加了表情多样性和头部姿势的多样性。

PoseVAE

这是PoseVAE做的消融实验,可以发现比baseline是好很多的,几乎每一种方法都比baseline的多样性更高。

Face Render

作者做了两方面的消融实验的研究:

  • 第一行作者比较了一下PIRender生成的结果(也是利用3DMM系数作为中间表示),可以看出得到了更好的表情重建效果。
  • 第二行作者发现如果使用PIRender使用的面部对齐系数,会生成不真实的头部对齐视频,而本文生成的视频的结果更像真实视频中的轨迹图。

Limitation

现在SadTalker可以从单张图像和音频生成逼真的视频,但还存在一些限制。由于3DMMs没有眼睛和牙齿的变化,所以Face Render也会在某些情况下无法合成逼真的牙齿,这里面就用GFPGAN来改善这个问题。

除此之外,本文作者仅关注嘴唇及眼睛部分表情,对于情感及视线方向不关心,生成的视频也是固定的Style,从而降低逼真度,他也认为这是未来的工作之一。

5. 结论

作者利用3DMM运动系数作为中间表征,学习其与视频之间关系。利用ExpNet、PoseVAE学习逼真表情及多样头部姿势,3D面部渲染器用于建模3DMM系数与真实视频之间关系,从而可以生成比较逼真的Talking Head Generation的视频。

本文所提方法也可用于其他方向:个性化二维视觉配音,二维卡通动画、三维面部动画、基于NeRF的四维讲话头部生成。


相关文章
|
机器学习/深度学习
Whisper 整体架构图
Whisper 整体架构图
761 0
conda常用操作和配置镜像源
conda常用操作和配置镜像源
33016 0
|
11月前
|
数据采集 人工智能 运维
医疗大模型落地方案:技术选型、部署策略与调优
医疗大模型正推动医疗行业数字化转型,其落地涉及技术选型、部署策略和调优方案。技术选型需根据需求选择适合的模型类型与架构;部署策略包括本地化、私有云及混合模式,注重数据安全与系统集成;调优方案从数据、模型到应用层面全面优化性能。通过多学科协作与持续改进,医疗大模型可更好地融入临床工作流,提升医疗效率与质量。
1106 5
医疗大模型落地方案:技术选型、部署策略与调优
|
10月前
|
人工智能 测试技术 API
Apifox对比Apipost:2025年推荐的API协作工具
Apifox与Apipost这两大国产API平台的全方位较量,助你在2025年做出最明智的选择。
|
7月前
|
人工智能 自然语言处理 安全
Milvus x n8n :自动化拆解Github文档,零代码构建领域知识智能问答
本文介绍了在构建特定技术领域问答机器人时面临的四大挑战:知识滞后性、信息幻觉、领域术语理解不足和知识库维护成本高。通过结合Milvus向量数据库和n8n低代码平台,提出了一种高效的解决方案。该方案利用Milvus的高性能向量检索和n8n的工作流编排能力,构建了一个可自动更新、精准回答技术问题的智能问答系统,并介绍了部署过程中的可观测性和安全性实现方法。
1021 0
使用Cargo创建、编译与运行Rust项目
使用Cargo创建、编译与运行Rust项目
630 0
|
机器学习/深度学习 搜索推荐 算法
无需训练即可创建数字人,字节PersonaTalk视频口型编辑超SOTA
字节跳动研究人员提出了PersonaTalk,一种创新的音频驱动视觉配音方法,通过两阶段框架实现高保真度和个性化的口型同步视频生成。该方法无需特定人物训练,具有广泛的应用前景。
904 11
|
安全 Go 开发者
使用 contextvars 管理上下文变量
使用 contextvars 管理上下文变量
418 1
|
监控 Java 开发者
【并发编程的终极简化】JDK 22结构化并发:让并发编程变得像写代码一样简单!
【9月更文挑战第8天】随着JDK 22的发布,结构化并发为Java编程带来了全新的并发编程体验。它不仅简化了并发编程的复杂性,提高了程序的可靠性和可观察性,还为开发者们提供了更加高效、简单的并发编程方式。我们相信,在未来的发展中,结构化并发将成为Java并发编程的主流方式之一,推动Java编程语言的进一步发展。让我们共同期待Java在并发编程领域的更多创新和突破!
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
1262 1