【论文笔记】GeneFace: Generalized and High-FidelityAudio-Driven 3D Talking Face Synthesis

2023-11-03

一.背景

1.1 挑战

这项工作泛化能力弱,存在的两个挑战:

(1)训练数据规模小。

(2)容易产生“平均脸”。音频到其对应的面部运动是一对多映射,这意味着相同的音频输入可能具有多个正确的运动模式。使用基于回归的模型学习此类映射会导致过度平滑和模糊结果

1.2 解决方案

(1)为了处理弱泛化问题,我们设计了一个音频到运动模型,在给定输入音频的情况下预测三维人脸标志。我们利用来自大规模唇读数据集的数百小时的音频运动对学习鲁棒映射。

(2)对于“平均脸”问题,我们采用基于流先验的变分自动编码器(VAE)代替基于回归的模型,作为音频到运动模型的结构,有助于生成准确且富有表情的人脸运动。

(3)然而,由于生成的标志(多说话人域)和NeRF训练集(目标人域)之间的域转移,我们发现基于NeRF的渲染器在给定预测的地标的情况下无法生成高保真的帧。因此,提出了一种领域自适应过程,将预测的地标嵌入到目标人的分布中。

【问题】为什么之前不能使用唇语数据集?

1.3 前置知识

1.3.1 3DMM:3D Morphable models

每一个三维的人脸,可以由一个数据库中的所有人脸组成的基向量空间中进行表示,而求解任意三维人脸的模型,实际上等价于求解各个基向量的系数的问题。

  • (1)为什么可以使用pca将向量正交化?

PCA(主成分分析)的目标是找到数据中最具有方差的主要方向。对于特征值分解A * v = λ * v,将原始数据矩阵分解为特征向量矩阵和对角特征值矩阵的乘积。特征向量构成了一个正交基,而对角特征值则表示了每个主成分对应的方差大小。

  • (2)目前存在的问题:忽略了精细的细节

 【参考】【技术综述】基于3DMM的三维人脸重建技术总结 - 知乎

1.3.2   HuBERT

一种ASR(automatic speech recognition)识别技术,可以参考HuBERT:基于BERT的自监督 (self-supervised)语音表示学习 

1.3.3 flow模型 :归一化流

归一化流的关键思想是通过一系列变换,将一个简单的概率分布(例如高斯分布)映射到目标分布。这些变换可以包括仿射变换、非线性变换等。每个变换都是可逆的,意味着可以从后验分布还原到先验分布,从而可以计算概率密度函数和采样。

通过在流模型中引入时间作为条件,可以建模具有时间依赖性的分布,例如序列数据。在每个时间步骤中,归一化流可以将先验分布映射到与当前时间步骤相关的后验分布,从而生成与时间相关的样本。

1.3.4 ELBO

用于近似推断概率模型中隐变量后验分布的一种方法。定义为观测数据的边际对数似然(log-likelihood)和 KL 散度(Kullback-Leibler divergence)的差值。

(1) closed-form ELBO【可了解】

变分推断中的ELBO(证据下界)_HFUT_qianyang的博客-CSDN博客

(2)MonteCarlo ELBO

蒙特卡罗ELBO不依赖于解析计算,而是通过随机采样的方式进行估计,优点是可以应用于各种复杂的概率模型,不受解析计算的限制。


二.Geneface

 2.1 变分动作生成器

2.1.1 语音和动作表示

(1)语音表示上:利用HuBERT从输入波中获取音频特征,并将其作为变分运动发生器的条件

(2)动作表示上:从重建的三维头部网格中选择68个关键点

2.1.2 扩展卷积编码器和解码器

将编码器和解码器设计为全卷积网络,其中卷积层具有增量增加的扩张因子,使其接受场随深度呈指数级增长。设法在单个前向中合成任意长度的整个序列并对结果进行高斯滤波以消除微小波动。

2.1.3 流先验

  • 为什么要使用flow模型做先验:

vanilla VAE的高斯先验从两个方面限制了我们的3D landmark 序列生成过程的性能:

1)每个时间索引的数据点彼此独立,这给帧之间存在可靠时间相关性的序列生成任务带来了噪声。

2) 优化VAE先验将后验分布推向均值,限制了多样性,损害了生成能力。

使用归一化流来提供复杂且与时间相关的分布

2.2 域自适应的posenet

  • 为什么需要域自适应:预测的3D地标和目标人物领域之间存在领域偏移。
  • 解决方案:微调目标人物数据集中的变分生成器。

设计了一个半监督对抗性训练管道来执行领域自适应

2.3 基于NERF的渲染器

头部感知躯干NeRF为了更好地模拟头部和躯干运动,我们训练两个NeRF分别渲染头部和躯干部分。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文笔记】GeneFace: Generalized and High-FidelityAudio-Driven 3D Talking Face Synthesis 的相关文章

随机推荐

  • 详解MOSFET详解MOSFET与IGBT的本质区别与IGBT的本质区别

    http www dzsc com data 2017 11 27 113799 html
  • mysql中if()函数使用

    在mysql中if 函数的用法类似于java中的三目表达式 其用处也比较多 具体语法如下 IF expr1 expr2 expr3 如果expr1的值为true 则返回expr2的值 如果expr1的值为false 则返回expr3的值 其
  • (十)蓝牙MAC地址

    BLE MAC地址分类 1 BLE设备可以使用公共地址和随机地址 至少使用其中一种 也可以有两种 地址的长度是6个字节 严格来说广播中不用包含地址 默认已经有了 2 公共地址 从IEEE购买 保证唯一性 3 随机静态地址 自己定义 上电初始
  • 计算机网络不完全整理(下)--春招实习

    HTTP 从输入url到显示主页的过程 参考 segmentfault com a 119000000 DNS解析 网址到ip地址的转换 TCP连接 HTTP协议使用TCP作为传输层协议 发送HTTP请求 服务器处理请求并返回HTTP报文
  • Flink Watermark分配策略

    Flink Watermark分配策略 WaterMark是Flink为了处理Event Time窗口计算提出的一种机制 本质上是一种时间戳 主要用来处理乱序数据或者延迟数据的 这里通常watermark机制结合window来实现 wate
  • Spring 单例 bean 的线程安全问题

    首先解释一下什么是单例 bean 单例的意思就是说在 Spring IoC 容器中只会存在一个 bean 的实例 无论一次调用还是多次调用 始终指向的都是同一个 bean 对象 用代码来解释单例 bean public class User
  • Cisco L2TP 配置实例

    1 在企业端配置L2TP ENT LNS config username cisco password 0 cisco ENT LNS config vpdn enable ENT LNS config vpdn group myl2tp
  • 创建小程序WePY项目过程报错指南

    笔者在第一次创建小程序 WePY 项目的时候 遇到了各种各样的问题 也在网上搜索了一番 终于也还是把 WePY 项目创建起来了 为了日后遇到问题更快的处理 笔者也把在创建过程的遇到的问题记录了下来 如下 1 在 WebStorm 中创建一个
  • 用Python实现的这五个小游戏,你真的学会了嘛?

    相关文件 源码分享 问题解答 关注小编 私信小编领取哟 当然别忘了一件三连哟 对了大家可以关注小编的公众号哟 有很多资源可以领取的哟 Python日志 游戏名称 五子棋 雷霆战机 贪吃蛇 坦克大战 俄罗斯方块 开发环境 Python版本 3
  • 区块链DAPP开发入门课程(PHP版)

    1 前言及环境部署 1 1 课程说明 为什么有这个课程 入门区块链开发已有些时日 走过的坑实在是太多了 对于像我这种从事互联网软件开发多事的老兵来说 上手都有些吃力 可想而知对于新手来说就更难了 尤其是完全靠自学又没有人指导的情况 可能一个
  • navicat导入sql文件_中级数据分析-SQL入门

    一 如何快速学会SQL 黄金圈原则 1 为什么 目的 很多公司数据存放在数据库当中 SQL是操作数据库的语言 所以目前SQL是数据分析岗位几乎必备的技能 也是面试当中必须考察的能力 2 如何做 方法 入门 什么是数据库 sql 表和数据的新
  • c++日志库实战——spdlog,是不是感觉log4cxx有点笨重,不妨试一试spdlog

    c 日志库实战 spdlog 是不是感觉log4cxx有点笨重 不妨试一试spdlog 背景 更新记录 spdlog是什么 spdlog快速入门 编译 CMake手动方式 Vcpkg全自动方式 推荐 原生用法 实战代码 SpdlogWarp
  • 【深度学习】 Python 和 NumPy 系列教程(十四):Matplotlib详解:1、2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 0 设置中文字体 1 5 折线图 散点图 柱状图 直方图 饼图 6 箱线图 Box Plot 7 热力图 Heatmap 8 面积图 Area Plot 9 等高
  • 接口自动化测试框架搭建【附详细搭建视频】

    如果遇到什么问题建议观看下面视频 敢称全站第一 B站最全的Python自动化测试深度学习教程 学完即就业 小白也能信手拈来 帮你少走99 的弯路 一 原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUti
  • shell类型、添加PATH环境变量、.bashrc、.profile、/etc/profile、/etc/environment

    shell类型 使用 cat etc shells 查看用户的可用shell 使用 echo SHELL 查看当前正在使用的shell 打开terminal终端 shell等待用户输入 并执行输入的操作命令 这种方式叫做交互式模式 执行 s
  • C++ 并发指南 std::lock

    C 11 标准为我们提供了两种基本的锁类型 分别如下 std lock guard 与 Mutex RAII 相关 方便线程对互斥量上锁 std unique lock 与 Mutex RAII 相关 方便线程对互斥量上锁 但提供了更好的上
  • python(48): 进程,线程 ,协程

    区别 进程 拥有代码和打开的文件资源 数据资源 独立的内存空间 线程 线程从属于进程 是程序的实际执行者 一个进程至少包含一个主线程 也可以有更多的子线程 线程拥有自己的栈空间 对操作系统来说 线程是最小的执行单元 进程是最小的资源管理单元
  • Linux如何查找大文件或目录总结

    在Windows系统中 我们可以使用TreeSize工具查找一些大文件或文件夹 非常的方便高效 在Linux系统中 如何去搜索一些比较大的文件呢 下面我整理了一下在Linux系统中如何查找大文件或文件夹的方法 其实很多时候 你需要了解当前系
  • springboot jdbctemplate 实现多数据源

    1 简介 所谓多数据源 其实就是在一个项目中使用多个数据库实例中的数据库或者同一个数据库实例中多个不同的库 在大部分情况下会使用更加强大的持久化框架来访问数据库 比如MyBatis Hibernate或者Spring Data JPA等OR
  • 【论文笔记】GeneFace: Generalized and High-FidelityAudio-Driven 3D Talking Face Synthesis

    一 背景 1 1 挑战 这项工作泛化能力弱 存在的两个挑战 1 训练数据规模小 2 容易产生 平均脸 音频到其对应的面部运动是一对多映射 这意味着相同的音频输入可能具有多个正确的运动模式 使用基于回归的模型学习此类映射会导致过度平滑和模糊结