赞
踩
Sad Talker:使用一张图片和一段语音来生成口型和头、面部视频
代码:https://github.com/Winfredy/SadTalker
出处:CVPR2023 | 西安交大、腾讯、蚂蚁
时间:2023.03
贡献:
Talking Head 的模式:
SadTalker 的主要部件如下,下图不是绝对严格的流程图,只是一个大概的图示例而已:
使用语音来驱动一张静态的图片生成动态的视频一直是很有挑战的工作,但其又有很多应用场合,比如数字人的生成或语音会议等。
之前的一些方法主要是聚焦于生成唇部运动模式(lip motion),因为唇部动作和发音的关系是最紧密的,还有一些方法生成 head pose 的的动作。
上述的方法主要通过 landmark 和 latent warping 引入 2D motion fields。但是生成的 vedios 还是不够自然和真实,主要问题:
想要生成一个看起来比较自然的 talking head vedio 还是面临着很多的挑战,主要是由于不同的发音会对应不同的动作,唇部动作(lip movement)和发音的关系是最大的,其次还有头部动作(head poses)和眨眼动作(eye blink)等。
所以,基于脸部 landmark 的方法会产生变形扭曲的脸部结果,因为没有将 head motion 和 expression 完全解耦开来。
本文中,作者的出发点在于,3D facial model 包含了高度解耦的表达,并且可以被用于单独学习每种 motion
本文提出的方法是:SadTalker:Stylized Audio-Driven Talking-head video generation system
具体做法:
训练的时候会分模型训练,在推理的时候是 end-to-end 的模式
本文框架如图 2 所示,使用 3D motion coefficient 作为 talking head 生成的中间表达特征
3D 信息对提升生成的 vedio 的真实性是很重要的,因为真实的 vedio 是在 3D 环境下采集的
之前的方法很少考虑到 3D 空间,因为从单个图片中获得 3D coefficient 是很困难的,且高质量的 face render 很难设计。
所以本文作者参考了从单张图来重建 3D 的方法 [5],且把预测出的三维模型 3D Morphable Models (3DMMs) 看做中间变量的表达
在 3DMM 中,3D face shape S 被解耦如下:
motion 系数: β , r , t \beta, r, t β,r,t
motion 系数包含两部分:head pose 和 expression
所以,如果一起学习这些参数的话,会引入很多的不确定性,因为 head pose 其实和声音的关系比较弱,lip motion 和声音的关系比较强
1、ExpNet:
学习一个通用的模型来从声音来产生 expression coefficient 是比较难的,主要原因有两个:
ExpNet 是怎么做的:
如图 3 所示:
整个 ExpNet 的结构可以写成如下的形式:
loss 函数:
2、PoseVAE
如图 4 所示,这里使用了一个 VAE based 模型来学习更真实的 head movement ρ ∈ R 6 \rho \in R^6 ρ∈R6
训练时, pose VAE 在固定 n 帧上使用 encoder-decoder 的结构进行训练
encoder 和 decoder 都是两层 MLP 结构,输入包含连续 t 帧 head pose ,且假设其服从高斯分布。
decoder 中,网络学习的目标是从分布中通过采样来生成 t 帧 pose ,但不是直接生成 pose,而是学习和第一帧 pose ρ 0 \rho_0 ρ0 的残差,这样能保证生成的 pose 更连续、稳定、一致,所以也叫 conditional VAE,这里的 conditional 就是第一帧的 head pose。
此外,还将每个声音的特征 a { 1 , . . . , t } a_{\{1,...,t\}} a{1,...,t} 和 style identity Z s t y l e Z_{style} Zstyle 作为条件来作为 identity style。
KL 散度用于衡量生成的 motion
MSE 和 GAN loss 用于保证生成的质量
生成了 3D motion coefficient 后,需要通过面部渲染来得到最后的 3D-aware image animator
作者受启发于 face-vid2vid[42],这个方法能够实现从单张图中学习隐含的 3D 信息。
可以使用 3DMM coefficient 来驱动 face render,如图 5 所示
所以,本文在此处提出了 mappingNet 来学习 3DMM motion coefficient (head pose 和 expression)和隐式无监督 3D keypoints 的关系。
训练分为两步:
训练数据集:
测试数据集:
训练:
推理:端到端的推理
和多种不同的方法类别进行了对比:
如表 1 所示,本文提出的方法在视频质量、头部动作多样性上都表现的更好,且在 lip synchronization(唇部同步性)上和其他 talking head generation methods 都有相当的效果
如图 6 所示,作者在视觉上展示了唇部同步性的效果,本文的方法在视觉观察上和真值的同步性最好,Wav2Lip 的下半张脸被模糊了,PC-AVS 和 Audio2Head 能艰难的维持面部个体特征,且 Audio2Head 只会产生正面的脸,MakeItTalk 和 Audio2Head 由于使用的 2D warping 所以脸部会扭曲。
作者还做了一个 user studies 来让 20 位人员来对不同方法生成的 20 个视频进行评选,让这些人员根据视频锐度、唇部同步性、头部动作多样性和自然性、整体的质量来对这些视频进行评分,38% 的人认为本文的方法的唇部同步性比其他方法好
1、ExpNet 的消融实验
如图 7 和表 3 所示,联合学习 motion coefficient 很难生成看起来真实的 talking head vedios
2、PoseVAE 的消融实验
3、FaceRender 的消融实验
尽管本文方法能够使用单个图像和语音来生成较为真实的视频,但也有一些局限性
由于 3DMM 不能建模眼睛和牙齿的变化,所以 FaceRender 中的 mappingNet 不能合成看起来真实的牙齿,但这个局限性可以通过 blind face restoration networks[43] 来提升,如图 10 所示
另外一个局限性是本文的方法只考虑了 lip motion 和 eye blinking,没有考虑其他面部表情,如情绪和眼神看的方向,所以生成的视频的人物的表情是固定的,会降低一定的真实性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。