Wav2Lip:A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild
本文为笔者论文学习笔记,如有错误及时联系,谢谢
文章目录
- Wav2Lip:A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild
paper
1.1 Abstract
这项工作主要研究了用任意身份的语音或者视频来驱动另外一个语音视频。
目前的工作擅长在特定的人的静态图片或视频产生准确的唇部动作。然而在动态的面部视频中,它们不能准确地变形任意身份的嘴唇动作,从而导致视频中重要的部分与新的音频不同步。
本文确定了与此问题相关的关键原因,并在这里使用一个强大的唇口同步鉴别器学习来解决它们。接下来,提出了新的、严格的评估基准和度量标准来准确地度量无约束视频中的唇同步。对具有挑战性的基准的广泛定量评估表明,本文提出的Wav2Lip模型生成的视频的唇口同步精度几乎与真实同步视频一样好。
1.2 Contribution
- 提出了一种新的唇同步网络:Wav2Lip
- 我们提出了一个新的评估框架,包括新的基准和度量
- 我们收集并发布了ReSyncED,一个真实的唇同步评估数据集
- Wav2Lip是第一个生成的视频唇同步精度与真实视频相同的模型。
1.3 Method
“通过一个唇口同步专家学习一个准确的唇同步生成器”是这个方法的理念。
为什么选择这个理念,我们首先确定了现有框架在真实视频中出现唇口不同步的两个关键原因:L1重建损失和GAN中的判别器损失无法有效的惩戒假图像的生成。
1.3.1 Pixel-level Reconstruction loss is a Weak Judge of Lip-sync
#像素级别的重构损失对于唇同步判断来说是微弱的。
人脸重建损失是计算整个图像的,以确保正确的姿态生成,保留身份,甚至在人脸周围的背景。但唇部重建的损失只占不到4%。因此,在网络开始进行细粒度唇形校正之前,周围的图像重建应首先进行优化。[1]中的实验表明,唇部的构建在训练进行到一半时(epoch = 10,total = 20)才开始。因此,有一个额外的判别器来判断唇同步是至关重要的,就如同LipGAN中那样。但是LipGAN中的判别器有多有效呢?
1.3.2 A Weak Lip-sync Discriminator
#弱唇同步判别器
作者发现使用LipGAN的判别器在LRS2的测试集上进行测试时,唇同步率只有56%。为了进行比较,作者将在这项工作中使用的判别器在同一测试集上的准确率为91%。
首先,LipGAN的检测器使用的是一帧图像用来检测,在后续的实验中表明,上下文信息也是非常有用的。其次,训练过程中生成的图像由于大的尺度变化和大的姿态变化而包含大量的伪影。作者认为GAN中的判别器将大量注意力用在了伪影上面,而忽略了音频的唇口同步。这将会导致唇同步检测的准确率下降。作者表示从真实的视频帧中捕获的唇同步的精确概念可以用来准确地判别和加强在生成的图像中的唇同步。
1.3.3 A Lip-sync Expert Is All You Need
#你只需要一个强大的唇同步专家
通过上面两点的简述,作者提出使用一个预先训练过的专家级的唇同步判别器,它可以准确地检测真实视频中的同步。并且,这个判别器不应该像LipGAN中的判别器一样对结果进行微调。在这里使用修改过的SyncNet来完成判别任务。修改点如下:
- 使用彩色图像代替灰色图像作为SyncNet的输入
- 采用更深的结构,是采用跳转连接
- 使用不同的损失函数:余弦相似性和二值交叉熵(cosine-similarity with binary cross-entropy loss)。也就是说,计算 经Relu-activated过的视频 v v v和音频 s s s的点积,将每个样本的值归一化到[0,1],以表示输入音频和视频同步的概率:
1.3.4 Generating Accurate Lip-sync by learning from a Lip-sync Expert
#通过学习一个唇同步专家来生成准确的唇同步
现在有个准确的唇同步判别器,可用用它来惩戒生成器。
1.3.4.1 Generator Architecture Details
#生成器结构细节
使用了类似于LipGAN的结构,主要贡献在于训练的时候使用了专家级判别器。
生成器 G G G包含三个结构:身份编码器、语音编码器、脸部解码器
身份编码器由一堆残差卷积层组成,编码一个随机参考系 R R R并与姿态先验 P P P(下半部分脸遮挡 )在通道轴连接。
语音编码器由2D卷积组成,用于对输入语音段 S S S进行编码,然后用于与人脸结果连接。
解码器也是由转置卷积组成,用于上采样。
生成器训练目标是最小化生成帧 L g L_g Lg和真实帧 L G L_G LG之间的 L 1 \textup{L}1 L1重建损失:
1.3.4.2. Penalizing Inaccurate Lip Generation
#惩戒不准确的嘴部生成
由于专家判别器需要5帧的输入,所以需要生成器生成5帧。在这里采样一个随机的连续窗口,以确保尽可能多的姿态时间一致性。当生成器独立处理每一帧时,我们沿着批处理维度堆叠时间步长,即输入形状为 ( N ∗ T v , H , W , 3 ) (N*T_v,H,W,3) (N∗Tv,H,W,3)。当将生成的帧提供给专家判别器时,时间维度沿着通道维度连接起来,就像在训练鉴别器时所做的那样,最终输入的形状为 ( N , H / 2 , W , 3 ∗ T v ) (N,H/2,W,3*T_v) (N,H/2,W,3∗Tv)。这里只取一般高度是因为判别器只需要下半部分。生成器的训练目的同样包含最小化来自专家判别器的同步损失:
需要注意的是,在生成器的训练期间,专家鉴别器的权重将保持冻结。这种纯粹基于从真实视频中学到的唇同步概念的强烈推动着生成器实现真实的唇同步,以最小化唇同步损失。
1.3.5 Generating Photo-realistic Faces
#生成真实的脸
在实验中,作者发现使用一个强大的唇同步判别器可以加强生成一个精细的唇部。但是有时候会产生一些伪影和模糊。为解决这个问题,我们设置了一个简单的基于GAN思想的视觉质量判别器。因此我们拥有两个判别器,一个是用于唇同步,一个用于更好的视觉质量。与唇同步判别器不同的是,视觉质量判别器是和生成器一同训练的。
判别器 D D D的训练目的是最大化目标函数 L d i s c L_{disc} Ldisc:
式中 L g L_g Lg对应着生成器 G G G生成的图像, L G L_G LG对应着真实图像。
生成器的训练目的是最小化 L t o t a l L_{total} Ltotal:
其中, s w s_w sw为同步惩罚权值, s g s_g sg为对抗性损失。
因此,整个完整的网络的优化目标是高同步精度和高视频质量。
只使用LRS2数据集训练整个网络,总共训练了90小时;batchsize = 80;优化器:adam lr = 1 e − 4 1e^{-4} 1e−4, β 1 = 0.5 \beta_1=0.5 β1=0.5, β 2 = 0.999 \beta_2=0.999 β2=0.999;Lip-sync判别器权重冻结。
该模型逐帧产生说话人脸,每个时间步长的视频输入都是采用当前时间源视频中人脸的裁剪,并且连接当前相同人脸(下半部分遭到遮挡)的裁剪,因此在推理过程当中,由于姿态不发生变化,就不会产生虚影。相应的音频片段也作为音频子网络的输入,生成的图像是裁剪的人脸,但嘴部发生了变化。