👍Vougioukas_2020_speech-driven-animation
官方网址 https://sites.google.com/view/facial-animation#h.p_10ig0Cz7wHpx
代码 https://github.com/DinoMan/speech-driven-animation
提出了一个端到端人脸合成模型,能够使用静态图像和语音产生真实的人脸说话序列。生成的序列表现出流畅和自然的表情,比如眨眼和皱眉。

模型

image.png
一个生成器,3个鉴别器。

生成器

image.png
生成器网络的组成:2 encoder + 1 decoder + 1 generator

  1. 身份 编码器
    1. 6-layer CNN,每层使用 strided 2D 卷积 + batch norm + ReLU
    2. 将96*128的输入 reduce 到128维的 encoding 向量。
  2. 内容 编码器(音频编码器和RNN)

    1. 每段音频固定为0.2s。
    2. 1D 卷积 + batch norm + ReLU
    3. 编码后输入到 1-layer GRU,生成 256维的 content encoding z**c** 。

      The audio frame encoding is input into a 1- layer GRU, which produces a content encoding zc with 256 elements

  3. 噪声

    1. 用来生成自发的面部表示,比如眨眼和眉毛运动。
    2. 从均值为0、方差为0.6的高斯分布中采样10维向量,并通过单层GRU,以生成噪声序列。
  4. 帧 解码器

    1. CNN,使用 跨步转置卷积 从潜在的表示产生视频帧。(每一帧潜在的表示是由identity、content和 noise 组成。)
    2. 使用 U-Net 架构,在身份编码器和帧解码器之间跳越连接,以保持对象的身份。

      鉴别器

      使用了3个鉴别器:
  5. Frame Discriminator, achieves a high-quality reconstruction of the speakers’ face throughout the video.

    1. 6-layer CNN,判断帧的真实性。
    2. 原始的静止帧作为一个条件,以通道方式连接(concatenated channel-wise)到目标帧上,用来保持身份。
  6. Sequence Discriminator, ensures that the frames form a cohesive video which exhibits natural movements.
    1. 判别是真实视频还是合成视频。
    2. 在每一个时间步,鉴别器将使用一个带有时空卷积(spatio-temporal convolutions)的CNN来提取瞬态特征,然后传入 1-layer GRU,最后使用单层分类器确定序列是否为真实序列。
  7. Synchronization Discriminator, reinforces the requirement for audio-visual synchronization.
    1. 将帧序列和音频分别 encode 成 256维的 embedding 之后,计算它俩之间的欧式距离,然后传入单层感知机做分类,判断同步还是不同步。
    2. 为了驱使鉴别器基于同步来判断序列,还训练了从真实视频中获取的不对齐的音视频对。如果只输入真假音频视频对,鉴别器不一定是根据它们的同步程度来判断。
    3. 由于脸部上半部分的运动不影响视听同步,我们选择只使用脸部下半部分来训练同步鉴别器。

image.png