WavLip(2020)

背景

最开始是学习单人从音频到landmark的匹配,再进一步是从指定人员的图片和音频生成嘴唇图片,到本文针对的,不同身份生成视频的嘴唇变化

难点

  • 一个观察者能捕捉到0.05-0.1秒这样短间隔的视频不同步,所以这很具挑战性
  • 没有额外的特定的说话者的数据也增加的难度
  • 视频中还会包含各种姿势,大小和光照

贡献

  • 提出一个新颖的嘴唇生成网络,在无指定说话者,视频嘴唇生成方面取得SOAT,人工识别准确率高达90%
  • 提出一个针对嘴唇生成,公平的,无限制的视频验证框架,包括新的基准的度量
  • 发布ReSyncED,一个现实的嘴唇同步数据集

模块

Lip-sync Expert

问题

对嘴唇同步来说,像素级重构损失不够强

面部重构损失的计算是基于整张图片的,而这其中只有4%是嘴唇部分,其他还有姿势、身份甚至背景,这就导致嘴唇所在损失过低而且针对嘴唇的训练开始得恨晚

弱的嘴唇同步限制器

  • LipGAN的限制器只用单一帧去检查嘴唇同步,缺乏有用的时间上下文信息
  • 用GAN方式生成的限制器会在训练过程中学习到人工痕迹,因为数据经过数据增强

结构

数据

  • 抽取视频中相同时间段的音频和视频作为正例
  • 抽取视频中不相同时间段的音频和视频作为负例

网络

输入

将需要输入的视频和音频分别横向拼接,最后得出NxHx(W*T)xC大小的输入张量,其中W的宽度,T是持续时间内的帧数

隐藏层

视频和音频分别拼接后分别输入video encoder和audio encoder,两个encoder都是带有残差的2D卷积网络

Loss

概述

video encoder和audio encoder输出的embedding计算余弦相似度得到[0,1]之间的值,然后这个值对比数据的正负例抽样,计算交叉熵

公式

Psync=vsmax(||v||2||s||2,ϵ)

Generator

网络

输入

  • 将R和P在H上拼接,得到Nx(H*2/3)x(W*T)xC大小的Indentity Encoder输入
  • 将R沿着W维度拼接得到NxHxWxC的SpeechEncoder输入

数据

  • 随机引用用于身份识别的帧R
  • 音频对应时间段的只有脸部上半部分的 pose-prior P
  • 音频段S

结构

  • Identity Encoder
  • Speech Encoder
  • Face Decoder:将两个encoder输出的embedding拼接起来作为输入,最后登出NxHxWxC的预测拼接图片

Loss

L1 Reconstruction Loss

公式

$$L_{recon}=\frac{1}{N} \sum_{i=1}^N ||L_g-L_G||_1$$

Lip-sync Expert Loss

公式

$$E_{sync} = \frac{1}{N} \sum_{i=1}^N-log(P_{sync}^i)$$

概述

计算预测图片和目标图片每个像素的L1损失

概述

Lip-sync Expert计算出的Loss

Visual Quality Discriminator

问题

强壮的Lip-sync discriminator有时会导致轻微的模糊和轻微的人工痕迹

概述

使用GAN的方式让图片变得真实(注意不是让音频和嘴唇同步)

Realistic Loss

概述

Visual Quality Discriminator计算得出的损失

Total Loss

公式

$$L_{total}=(1-s_w-s_g)*L_{recon}+s_w*E_{sync}+s_g*L_{gen}$$

概述

将上述三个Loss加权求和,得出最终用于学习的Loss

验证

问题

概述

验证引用视频中的随机帧而不是当前帧对验证嘴唇同步的准确性和质量是不理想的

详情

不能反映真实世界的使用情况

验证框架引用随机帧,就意味着会改变人的姿势,而把这放到视频里将会看出人工痕迹

不一致的验证

因为随机引用帧,所以会导致测试数据不一致,进而导致不公平的比较,并阻碍结果的再现

不支持检测时间一致性

每一个预测帧都会随机引用其他真,导致了时间信息的丢失,因为他们都不连贯

当前的metric不是针对嘴唇同步的

已存在的metric计算整张图片,即使针对唇部,也不能很好的度量错误的唇部基点

解决办法

新的嘴唇同步metric

使用预训练的SyncNet训练得出99%准确率的验证器(同一时间段的视频为整理,随机采样的为负例)

新的口型同步验证基准

从视频中截取一段视频和音频,相同时间段为正例,随机抽样为负例