你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

论文阅读:Talking Face Generation by Adversarially Disentangled Audio-Visual Representation

2021/12/7 19:34:11

文章目录

      • 问题定义
      • 数据集
      • 贡献
      • 想法
      • 方法
        • 总览
          • 解耦部分
          • 生成部分
      • 具体介绍
        • 音视频联合表达
        • 潜在空间的解耦对抗
          • 从身份信息种择干净语义信息
          • 从语义信息中择干净身份信息
        • 对话人脸视频生成

问题定义

这篇文章着重的是解耦, 通过唇读这个点可以知道视频帧本身有语义信息, 不同的人也肯定有身份信息, 把视频帧的语义和身份信息解耦然后和声音的语义信息拼接, 理论上就可以得到不同的说话人脸视频.

  • 下图中给定身份图片解耦出身份信息, 可以和解耦的声音的语义信息结合生成视频, 也可以和其他的视频提取出的语义信息结合生成视频, 所以在这里的应用是使用音频或者视频驱动图片, 这是最后能达到的效果.

在这里插入图片描述

数据集

  • LRW with 1-of-500 diverse word labels( 这个是有标签的)

  • For each class, there are more than 800 training samples and 50 validation/test samples
    Each sample is a one-second video with the target word spoken

  • MS-Celeb-1M dataset 这个是同一类人然后有不同的照片的数据集, 这里用来训练identity-preserving module, 应该是用在那个person id的判断上

  • 音频是mdcc, 采样率100hz, 应该是取了0.2s, 也就是20个, 输入是12*20

贡献

  1. 通过联合几个监督信息, 可以得到audio-visual 的联合表征
  2. 可以解耦出语义信息和身份信息
  3. 通过利用唇读工作和音画同步工作, 实现了可以从音频或者视频输入驱动图片的方法

想法

  1. 这里并没有语音的身份解耦, 应用的时候没法保证是否正好解耦出语义信息

方法

总览

解耦部分
  • 作者提出的模型叫 Disentangled Audio-Visual System (DAVS), 整个网络可以分成两部分, 一个是 解耦, 一个是最后的生成, 作者的重点在解耦阶段.

  • 下图是总的结构图 , 先注意左边的解耦的部分, 输入是音频与视频, 音频是mfcc, 类似12*20这种维度表示. 解耦时有三个编码器, 对视频有两个编码, 分别对应语义和身份, 音频有一个, 就是语义.

  • 对于视频的语义编码, 想要其只有语义信息, 给定配对的音频帧与视频帧, 它们可以映射到一个公共的空间, 然后通过同一个分类器Cw, 分类器对应的是单词标签, 类似LRW是词构成的数据集, 可以构建一个大的分类器

  • 对于音频的语义编码, 这个部分编码器的权重和视频的语义提取是一致的, 所以可以认为能提取出同样的语义信息而没有身份信息, 因为上面已经对身份信息完成约束了

  • 对于视频的身份编码, 这个是通过一个分类的对抗网络得到的.

  • 总结: 整个架构的流程就是首先从公共表达中分出身份信息和语义信息, 然后可以组合两部分的信息得到新的视频.

  • 对于提取语义信息的部分, 使用了三个监督信息:

  1. 音频和视频的语义信息通过一个权重共享的分类器 C w C_w Cw
  2. 对比损失 L c L_c Lc 让配对的视频和音频更接近
  3. 分类的对抗训练使得视频的语义和身份信息分的更开
  • 对于身份信息, 有两个监督信息:
  1. 一个是一个身份分类器 C p C_p Cp
  2. 一个是分类的对抗训练
生成部分

对于生成使用了两个损失, 一个是 L1损失, 一个是temporal GAN loss L G A N L_{GAN} LGAN

  • 首先想要从语音和视频帧这两种模态中提取出同样的语义信息, 它们必须有一个shared的空间,

具体介绍

音视频联合表达

这个部分是想要音频和视频提取的语义信息接近, 实现如下图:

左边的 L w L_w Lw 是一个权重共享的分类器, 同时用对比损失约束提取出的特征(这里的负类应该要自己构建, 也就是音视频不配对的数据对, sync那个同步判别器提到过 输入的语义特征首先需要normalized), 右边是个Domain 分类器, 想要区分出两种语义信息的来源, 然后两个语义encoder尽量不让它分辨出来源.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GweR8JPU-1638876468223)(typora_pic/image-20211207153733307.png)]

潜在空间的解耦对抗

从身份信息种择干净语义信息
  • 这个部分是从联合表达空间解耦出语义信息和身份信息.
  • 首先是让身份信息把语义信息摘干净. 这个地方是构建了一个分类器, 让视频身份信息作为输入, 然后看看能不能分类出语义信息, 也就是分类出对应的单词. 分类器是 C p w C_p^w Cpw , 输入是 F p v F_p^v Fpv , 输出是 N w N_w Nw 单词类别, 这个部分的分类公式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDtxCcZj-1638876468224)(typora_pic/image-20211207155106860.png)]

这里的训练方式挺重要, 首先固定编码器权重, 然后训练分类器, 分类器然后固定去训练编码器, 最后的目标是让分类出每种单词的可能性相同

这里的问题是上面的分类损失不够好, 因为始终会有梯度存在, 所以这里改进了一下, 变成下面的公式:

  • 因为分类共有 N w N_w Nw 种所以最后的概率是它的倒数就完美了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4PUWpXpD-1638876468225)(typora_pic/image-20211207155516228.png)]

从语义信息中择干净身份信息

使用的还是类似的函数类似的对抗训练方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V0IKw5S8-1638876468226)(typora_pic/image-20211207155849600.png)]

训练过程如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqaXzmOX-1638876468226)(typora_pic/image-20211207155947821.png)]

对话人脸视频生成

  • 这里主要用了两个两个损失, 一个是L1, 一个是temporal GAN loss, 其中 f p ( k ) v f_{p(k)}^v fp(k)v 是随意第k帧的身份信息, 然后

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hue41URp-1638876468227)(typora_pic/image-20211207192027573.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjmpF6Vi-1638876468228)(typora_pic/image-20211207191627824.png)]

其中语义信息可以是来自视频的, 也可以是来自音频的, 正好对应开头的任务定义.