来源:知乎—吴海波 侵删
https://zhuanlan.zhihu.com/p/429965015
最近和团队的小伙伴 @swwei 做点了talk face generation的工作,挑了2篇近期比较典型论文和大家分享下。
01
任务描述
1. Defination: 给定一段音频<audio>,给定一张驱动人脸图片<face image>,生成一段由给定的人脸驱动的视频。通俗来讲,视频的内容是由这个人"说出来",为了生成更加真实的视频,嘴唇以及面部的表情应当和音频保持良好的同步。
2. Demo: 驱动的face image: taylor,输入的audio源:trump.wav
Diffcults:
Robust generation: 模型需要适应不同角度、不同姿态的驱动人脸输入,不同噪声条件下的音频输入,甚至跨语言合成
音视频之间的一致性问题:如何准确地保证唇形、头部姿态、面部表情和语音内容的一致性?语音信号其实很难去映射头部姿态、面部表情等信息
生成的视频的逼真度:1) 视频帧的逼真度(高分辨率、高保真度); 2) 视频序列的逼真度
02
方法描述
1、方法分类
目前talking face generation方法主要可以归于2类:
(1) 直接法: 直接学习从音频(audio)到视频帧的映射(audio2image);
(2) 间接法: 利用中间模态表征(一般是人脸的2D、3D landmarks特征)来连接音频输入和视频输出,模型被解藕成二个部分: audio2landmark,landmark2image
2、DAVS: Talking Face Generation by Adversarially Disentangled Audio-Visual Representation (AAAI 2019)
2.1 Motivation
Baseline work: 生成的结果会存在明显的瑕疵

论文认为,talking face generation存在挑战的原因在于:人脸的外观变化和音频的语义是通过细微的脸部运动耦合在一起的,直接去联合学习人脸外观变化和音频内容是很困难的。因此本文提出通过分离音视频表征的方法来实现talking face generation
方法整体框架如下:(image侧信息分离成: Ep + Ew)

2.2 Learning Joint Audio-Visual Representation(本质上都是音频信号学习)
三个编码器:
Ev_p: 身份特征编码器(identity encoder)
Ev_w: 反映语音内容的编码器(可以理解为唇形编码器),从图像角度去编码 [visual speech]
Ea_w: 从音频角度去编码语音信号 [audio speech]
Shared WordId Space:
利用音视频唇形阅读任务通过一个共享的词id空间<wid space>实现音视频表征的联合学习,通过图像识别单词是一个唇语阅读问题,通过音频识别单词是一个语音识别问题。(其实也是一个多模态信息融合的过程)
训练流程:

训练流程是3个loss的叠加:词id的分类loss(softmax loss)、音频特征向量和视频特征向量之间的对比度loss(pairwise loss)

以及域对抗训练loss,使判别器能够正确区分音频特征向量到底是来自于图像域还是音频域,和前面的分类损失和对比度损失的优化目标形成对抗
2.3 Adversarial Training for Latent Space Disentangling (全文亮点)
Step1: 预训练的人脸识别模型构建person Id space <pid space>
Step2: 采用对抗训练的方式(adversarial training)使得pid space和 wid space相互独立

Cw_p:从wid空间中分离pid信息的判别器(上图的classifier),目的是将person ID特征能正确映射到词id空间(wid),判别器更新:

生成器(上图encoder部分)目的是使得person ID fv_p不能在词id空间正确分类,根据熵原理,当属于每个类别的概率都一样时,此时熵最大,生成器达到最优,即每个类别概率是1/N,生成器更新:

扩展实验(tony-experimental)-验证对抗训练的有效性(改进现有的gan的训练流程,直接从2分类变成多分类对抗训练,并且可以显式通过指定标签生成对应类别的图像),demo如下:

2.4 Inference: Arbitary-Subject Talking Face Generation
本文另外一个独特的点就是:即可以从视频生成也可以从音频中生成,甚至可以融合音视频去生成
训练时,pid特征来自于视频帧,音频特征可以从视频帧提取或者从音频中提取,最后的生成器训练阶段包含2部分损失:
帧级别重构损失:

序列级别的GAN loss(时序GAN):

2.5 Abalation Study
GAN loss作用:

wid训练中各个loss作用:

Feature disentangle作用:

(也可以通过训练线性分类器来判断特征分离的效果)
Results

2.6 小结
1. 对抗训练思想很重要,超越paper本身
2. 生成结果头部姿态不可动,极端条件下会failure
3. 直接法整个pipeline比较简单,清晰
3、MakeItTalk: Speaker-Aware Talking-Head Animation (SIGGRAPH 2020)
3.1 Motivation
面部表情和头部运动姿态对于生成逼真的talking face video非常重要,但是从音频很难去直接建模面部表情和头部运动姿态。不同的人在说同一段话的时候,其实具有不同的面部表情和头部运动姿态,但是他们的口型应该是一致的。因此本文作者提出在输入的音频信号中分离语音内容特征和说话者身份信息特征。
语音内容特征(speech content):用来预测嘴唇及其邻近区域的关键点偏移量 (general的信息)
说话者身份特征(speaker identity): 用来预测其余的关键点的偏移量以及头部运动特性,这部分其实是speaker-aware的,通俗理解为"个性化的"(personality)
方法整体框架图如下:(主要分成4个步骤)
Core idea: 利用脸部68个关键点作为中间模态来衔接语音到2D动画的映射。将整个问题分解为两个独立的问题,分别用神经网络学习了从音频到低维度脸部关键点动画的映射和脸部关键点动画到2D动画之间的映射.

3.2 人脸关键点预提取
利用预训练的人脸关键点检测模型提取68个人脸的3d关键点坐标

3.3 音频特征分离

音频特征分离需要用到voice conversion (VC):将一个人的声音变成另外一个人的声音(变声器),该模块需要把音频内容信息和说话者身份信息完全剥离开来。

VC其中的一种训练方式(对抗训练)

本文采用的是另外一种做法,speaker Encoder是使用的预训练好的voice vertification模型,通过重构损失训练content Encoder。
3.4 人脸关键点偏移量学习

3.4.1 基于语音内容的关键点偏移量学习

主要通过LSTM捕获关键点之间的时序依赖关系,预测每一帧关键点偏移量:

此阶段主要是为了基于语音内容学习通用的人脸关键点偏移量,因此在训练阶段所有的训练数据的关键点会被配准到一个标准的正面的人脸关键点上(此阶段为了保证模型预测效果,使用了高精度关键点数据集)
3.4.2 基于说话人信息的关键点偏移量预测

Self-attention Encoder: 面部表情和头部姿态持续时间会比较长,self-attention用来捕捉longer-range依赖

此阶段为了学习到个性化的关键点偏移量,在训练阶段使用真实的关键点位置(无需配准)

3.5 关键点到人脸图像生成

3.5.1 非真实图像生成
卡通、动漫、艺术风格绘画等,直接使用三角分割和Warping
3.5.2 真实图像生成
image2image translation网络(cycle-GAN),输入的是预测的关键点图像和真实驱动人脸图像在深度上concat(6通道输入图)
3.6 训练流程
3.6.1 voice conversion
3.6.2 基于语音内容的关键点预测

其中第二项是图拉普拉斯坐标距离,约束整体关键点的相对位置


3.6.3 基于说话人特征的关键点预测
为了使个性化的生成结果更加逼真,使用了discriminator,通过gan损失来对抗训练
Discriminator loss


Generator loss

3.6.4 ImageTranslation训练

3.7 小结
基于中间表示的模型通常性能更好,但是整个pipeline会更复杂;另外间接法被直接法控诉的一点就是整个流程没法end-2-end训练,中间关键点的精度会严重影响模型的性能。
03
思路扩展
直接法和间接法相互的优点是否可以整合?
DAVS作者在CVPR2021上PC-AVS(Pose-Controllable Talking Face Generation by Implicity Modularized Audio-Video Representation)

通过输入额外的姿态源视频来作为姿态引导,将姿态信息编码成一个12维姿态向量,不需要显式地学习中间的关键表示,避免了关键点预测不精确的问题。然而在实际应用中需要一个相关的姿态视频源去引导姿态生成,是落地场景中的一个限制
makeItTalk在训练过成中其实只利用到了音频信息,忽略了训练数据本身的视频信息。通过分离音频信息中的说话者特征去预测姿态相关的关键点偏移量,其实说明了说话者信息可以预测出姿态信息。而结合PC-AVS通过视频源编码姿态向量的方式,将二者结合起来。利用训练数据集本身的视频信息去编码姿态(显示或者隐式),音频信息分离出说话者信息同样编码姿态信息,让二者在训练中对齐。
预测的时候,直接输入音频信息,通过分离的出的说话者身份信息隐含的姿态编码,直接生成speaker-aware的讲话人视频
猜您喜欢:
附下载 |《TensorFlow 2.0 深度学习算法实战》