论文阅读: 【landmark】MakeItTalk: Speaker-Aware Talking-Head Animation


在这里插入图片描述

前言

因为主要是对audio到landmarks部分做研究, 所以其余部分不做介绍.

MakeItTalk: Speaker-Aware Talking-Head Animation

method

在这里插入图片描述

概述

作者将整个框架称为MakeItTalk, 给定输入音频信号和单个图像, 首先解耦声音信号,将其分为内容编码和说话人身份编码, 利用两个编码后的信息来为图像设置动画. 中间方法是3D landmarks, 说话内容确定landmarks的轮廓, 说话人信息对其进行微调.

Speech Content Animation
  1. 首先提取音频与说话者无关的内容表示, 作者使用了AUTOVC, 来自论文AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss. In Proc.. AutoVC网络利用LSTM的编码器将声音到一个紧凑的表示 (bottleneck), 经过训练可以丢弃说话者身份但保留内容. 在论文中, 作者通过网络提取了 A ∈ R T × D A \text∈R^{T×D} ART×D的内容信息, T T T 是音频帧的总数, D D D 是内容的维度

  2. 在每个音频帧t, LSTM模块将 w i n d o w [ t → t + τ ] window[t\text→t+\tau] window[tt+τ]作为输入, 作者设置 τ \tau τ为18 帧, 在实验中窗口为0.3s. 使用landmarks检测器提取图片的landmarks q q q, q ∈ R 68 × 3 q\text∈R^{68×3} qR68×3, LSTM的输出送入MLP, 最终预测位移 Δ q t \Delta q_t Δqt

  3. 公式如下:
    在这里插入图片描述

其中 { w l s t m , w m l p , c } \{w_{lstm}, w_{mlp}, c\} {wlstm,wmlp,c}分别是LSTM和MLP网络学习的参数. LSTM有三层单元, 每层256个隐向量, 解码器MLP网络有三层, 内部隐藏向量分别是512, 256, 和 204 ( 68 × 3 ) 204(68\text×3) 204(68×3)

Speaker-Aware Animation
  1. 头部的运动和嘴部还有眉毛之间的微妙关联也很重要. 比如假如倾向于活泼的头部姿态预测和冷静的头部姿态预测就可以得到不同的landmarks, 如下图:
    2.

为了实现这点, 作者使用了 speaker verification model ,说话人之间的嵌入相似度最大化,而不同说话人之间的相似度最小化,原始身份嵌入向量 s 的大小为 256。作者发现,通过单层 MLP 将其维度从 256 降低到 128 改进了面部动画的泛化,尤其是对于训练期间未观察到的说话者. 鉴于提取的身份嵌入 s,进一步调制每帧地标 p𝑡,以便它们反映说话者的身份。
更具体地说,landmarks被扰动以匹配训练期间在说话者中观察到的头部运动分布和面部表情动态。

  1. 如上图所示:
    先使用lstm对时间窗口的内容进行编码, 这里的LSTM和上面编码内容的架构一样, 窗口长度也一样. 作者提到对于这个LSTM最好有不同的学习参数, 这样能得到更好的表征

  2. 公式如下:
    在这里插入图片描述
    w l s t m , s w_{lstm}, s wlstm,s 是可训练的参数

  3. 下面的模型将说话人的的身份嵌入向量 s s s, 声音的内容表示 c t ~ \tilde{c_t} ct~ 还有初始的静态landmarks q q q作为输入, 输入speaker aware的 lanmarks 位移

  4. 虽然音素通常持续几十毫秒,但头部运动(例如,头部从左到右摆动)可能持续一秒或几秒,甚至更长几个数量级。
    为了捕获如此长且结构化的依赖关系,作者采用了自注意力机制, 其计算输出,表示为学习每帧的加权组合, 即由LSTM提取的音频内容 c t ~ \tilde{c_t} ct~ 和说话人的身份向量concatenate. 分配给每个帧的权重是通过比较一个窗口内所有成对帧表示的 compatibility function, 来自论文Generalized end-toend loss for speaker verification 在实验中窗口 τ ′ = 256 f r a m e s \tau^{'}\text=256 frames τ=256frames(4 秒). 最后一个自注意力层的输出还有初始的静态landmarks由MLP处理来预测最后的每帧landmarks

  5. 整个speaker-aware animation parts的公式如下:
    在这里插入图片描述
    { w a t t n , s , w m l p , c } \{ w_{attn}, s, w_{mlp}, c\} {wattn,s,wmlp,c}是自注意力编码器和MLP解码器的可训练参数, p t p_t pt来自之前的公式 p t = q + Δ q t p_t\text=q+\Delta q_t pt=q+Δqt, p t p_t pt y t y_t yt 是捕获语音内容和说话人身份的最终每帧的landmarks

Single-Image Animation

我们模型的最后一步是创建输入的最终动画。给定一个输入图像Q和预测的地标{y𝑡 }的每一帧,我们产生了一个代表面部动画的图像序列{F𝑡 }。
输入的人像既可以是卡通脸,也可以是自然人脸图像。对于这两种类型的人像,我们使用不同的实现。

TRAINING
  • Voice Conversion Training

我们遵循[Qian et al. 2019] (AUTOVC)中描述的训练设置,说话人嵌入由Wan等人[2018] (Generalized end-toend loss for speaker verification.)提供的预训练模型初始化。
来自每个说话人的speech被content encoder处理, 然后同一个说话人的另一个语料被用来提取说话人嵌入(speaker embedding), 这个说话人嵌入和内容编码一起送给decoder来重构源语音。
一个训练源 来自每个说话人的训练源语音通过内容编码器进行处理。然后,同一源说话人的另一个语料被用来提取说话人嵌入,它与音频内容嵌入一起被传递给解码器,以重建原始源语音。内容编码器、解码器和MLP被训练成最小的 源语音频谱图的自我重建误差。[Qian等人,2019]。训练是在VCTK语料库上进行的[Veaux 等人 2016],这是一个语音数据集,包括109个不同口音的英语母语使用者的话语。语音数据集,包括109个具有不同口音的英语母语者的话语。

1. Speech Content Animation Training
  • Dataset
    为了训练基于内容的动画模型,我们使用提供高质量面部地标和相应音频的视听数据集。为此,我们使用奥巴马每周讲话数据集[Synthesizing obama: learning lip sync from audio]包含6小时的视频,包括奥巴马的各种演讲。由于其高分辨率和相对一致的前置摄像头角度,我们可以获得准确的面部landmarks检测结果使用[How far are we from solving the 2d & 3d face alignment problem?]。我们还使用最精确的affine transformation[Segal 等人 2009]将面部地标注册到前表面标准面部模板(register the facial landmarks to a frontfacing standard facial template) [Beeler 和 Bradley 2014]。这也导致忽略了与说话人有关的头部姿势运动。我们强调,一个注册的说话人就足以训练这个模块,因为我们的目标是基于音频学习一个通用的唇部运动。正如我们将在第4.2节中解释的那样,通过包括说话人意识的分支和对多个人类主体的训练,唇语同步将专门用于特定的说话人ID。

  • loss function
    为了学习参数{w𝑙𝑠𝑡𝑚,𝑐,w𝑚𝑙𝑝,𝑐 }用于LSTM和MLP中,我们最小化一个损失函数,评估(a)真实的参考地标位置 ˆ p 𝑡 ˆp𝑡 ˆpt 和预测的p𝑡之间的距离, 以及(b) 它们各自的图Laplacian坐标之间的距离,这促进了地标之间的正确放置,并保留了面部形状的形状细节[Sorkine 2006]。具体来说, 我们的损失是:
    在这里插入图片描述

其中𝑖是每个单独地标的指数,𝜆𝑐加权第二项(在我们的实现中,𝜆𝑐=1,通过hold-out验证设置)【Holdout 检验是最简单也是最直接的验证方法, 它将原始的样本集合随机划分成训练集和验证集两部分。 比方说, 我们把样本按照70%~30% 的比例分成两部分, 70% 的样本用于模型训练; 30% 的样本用于模型验证】
我们使用下面的graph Laplacian:
在这里插入图片描述

2. Speaker-Aware Animation Training

使用VoxCeleb2数据集, 这里并没有对数据集进行处理比如正面化啥的, 而是直接使用了, 类似师姐现在做的, 这里使用了Gan的判别器,是LS GAN

想法

  1. 这是任务驱动型的, 没有设计特别出彩的地方, 一个值得借鉴的地方是使用更长的音频获得头部姿态信息, 当然这里其实是用了未处理的数据
  2. 这里并没有很好的对前后景进行分离, 也就是驱动时背景会随着变化, 可以采用那种 加mask 抠图的方式优化
提到的相关论文
  1. (2019) Noise-Resilient Training Method for Face Landmark Generation From Speech.
  2. (2019)Hierarchical crossmodal talking face generation with dynamic pixel-wise loss.
  3. (2018)Joint learning of facial expression and head pose from speech.
  4. (2019-3d) Capture, Learning, and Synthesis of 3D Speaking Styles.
  5. (2019) Few-Shot Adversarial Learning of Realistic Neural Talking Head Models.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

live_for_myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值