【数字人】7、GeneFace++ | 使用声音和面部运动系数的关系作为 condition 来指导 NeRF 重建说话头

news2024/12/25 12:17:20

在这里插入图片描述

文章目录

    • 一、背景
    • 二、相关工作
      • 2.1 唇形同步的 audio-to-motion
      • 2.2 真实人像渲染
    • 三、方法
      • 3.1 对 GeneFace 的继承
      • 3.2 GeneFace++ 的结构
      • 3.2.1 Pitch-Aware Audio-to-Motion Transform
      • 3.2.2 Landmark Locally Linear Embedding
      • 3.2.3 Instant Motion-to-Video Rendering
    • 四、效果

论文:GeneFace++: Generalized and Stable Real-Time Audio-Driven 3D Talking Face Generation

代码:https://genefaceplusplus.github.io/ [未开源]

出处:浙大 | 字节

时间:2023.10

论文:GENEFACE: GENERALIZED AND HIGH-FIDELITY AUDIO-DRIVEN 3D TALKING FACE SYNTHESIS

代码:https://github.com/yerfor/GeneFace

出处:ICLR2023 | 浙大、字节

时间:2023.01

一、背景

talking face 生成任务期望能够实现对于任意的输入音频生成高质量高保真的说话视频

最近,NeRF 在这个领域受到了很大的关注,其只需要几分钟的训练视频,就可以渲染出高保真的 3D 说话视频

但是,基于 NeRF 的方法有以下几个挑战:

  • 在唇形同步方面,很难生成具有高时间一致性和音频-唇形准确度的长时间面部运动序列。
  • 在视频质量方面,由于用于训练渲染器的数据有限,它容易受到域外输入条件的影响,并偶尔产生不良的渲染结果
  • 在系统效率方面,原始NeRF(神经辐射场)的慢速训练和推理速度严重阻碍了其在实际应用中的使用。

所以,GeneFace++ 做出了如下改进:

  • 利用音调轮廓作为辅助特征,并在面部运动预测过程中引入时间损失
  • 提出了一种 landmark locally linear embedding 方法,用于调节预测运动序列中的异常值
  • 设计了一种基于NeRF(神经辐射场)的高效运动到视频渲染器,实现快速训练和实时推理。

有了这些改进,GeneFace++ 成为首个实现稳定且实时的具有泛化音频-唇形同步功能的说话脸部生成的基于 NeRF 的方法

二、相关工作

2.1 唇形同步的 audio-to-motion

在唇部同步运动预测中,主要有两个挑战:

  • 第一个挑战是所谓的一对多映射问题,这意味着同样的输入音频可能有几个合理的对应面部运动。早期的工作 [49, 47, 6] 直接使用回归损失(例如,L2)学习确定性模型,并因此导致过度平滑的唇部结果。Wav2Lip [30] 第一次利用判别同步专家实现更为清晰和准确的唇部运动,后续工作[48, 45, 22, 19, 34]也采用了这种方法。MemFace[36]引入音频到运动中的记忆检索以缓解一对多问题。

  • 第二个挑战是在给定长时间输入音频时生成时间一致且稳定的运动序列。[24]采用自回归结构来模拟时间序列,但受限于慢速推理和误差累积。其他工作[41,12]使用并行结构(如1D卷积)与滑动窗口,这在一定程度上解决了自回归方法的不足。Transformer-s2a [7] 和 GeneFace [42] 使用前馈结构(自我注意力和卷积)来并行处理整个音频序列。这种框架具有高效率和建模长期信息能力,但在保持生成运动序列中时间连贯性和稳定性方面不太好。

2.2 真实人像渲染

动态人像合成的技术可以分为三类:

  • 基于2D的方法:[39, 35, 30, 49, 46, 48],他们采用GANs [10]或图像到图像转换[17]作为图像渲染器。虽然这些方法达到了良好的图像质量,但由于缺乏3D几何建模,它们无法生成可控制姿态的视频。
  • 基于3D Morphable Model [29] (3DMM)的方法:基于3DMM的方法[41,38,44]通过使用3DMM系数作为辅助条件注入了对三维先验知识,但使用3DMM作为中间处理已知会导致信息丢失,并降低性能。
  • 神经渲染法:神经渲染法[3、9、31、15、50] 采用 NeRF [25] 或其变种来对人像进行三维建模。AD-NeRF 是第一个基于NeRF进行面部语音合成的方法,它提出了一种端到端音频至视频 NeRF 渲染器来生成依赖于音频特征的人像,GeneFace[42] 引入 audio-to-motion 模块来改善NeRF基础上渲染器同步效果,AD-NeRF 采用离散可学习网格在 AD-NeRF 中进行训练和推理加速。

因此,GeneFace++ 使用了三部分来实现:

  • audio-to-motion 阶段:引入了 pitch information 和时间平滑损失来实现合成的说话头的长时间一致性
  • motion 系数鲁棒:引入了一个 projection-based 后处理来提高系统的鲁棒性
  • motion-to-video 阶段:使用 grid encoder 和 deformable slicing surfaces 来实现高效和高质量的人像渲染

三、方法

3.1 对 GeneFace 的继承

GeneFace++ 延续了 GeneFace 两阶段的形式,所以,直接引用了 GeneFace 的 audio-to-motion 和 motio-to-video 阶段

1、Audio-to-Motion

在该阶段,首先使用大量的 lip-reading 数据来学习一个条件 VAE 模型,以实现根据给定的语音来生成准确且具有泛化能力的 facial landmark

VAE 的 loss 如下:

在这里插入图片描述

为了弥补 lip-reading dataset 和 target person video 之间的 domain gap,还使用了 domain adaptative(DA) Postnet ,主要是为了将预测的 facial motion 映射到 target person domain

DA Postnet 的 loss 如下:

在这里插入图片描述

这两步结束后,就可以得到 input audio 的 嘴唇同步且 personalized 的 facial landmark 了

在这里插入图片描述

2、Motion-to-Video

在该阶段,使用 landmark-conditioned dynamic NeRF network 来渲染出人像

在这里插入图片描述

3.2 GeneFace++ 的结构

GeneFace++ 其实主要是为了提升 GeneFace 的效果,达到更自然的音唇同步,更鲁棒的高质量,更快的训练速度

如图 1a,GeneFace++ 有三个阶段:

  • pitch-aware audio-to-motion module:将 audio feature 转换成 facial motion
  • landmark locally linear embedding method:对预测的 motion 进行后处理
  • instant motion-to-video module:将预测的 motion 系数渲染成真实人像

在这里插入图片描述

3.2.1 Pitch-Aware Audio-to-Motion Transform

在这里插入图片描述

在这里插入图片描述

3.2.2 Landmark Locally Linear Embedding

在这里插入图片描述

在这里插入图片描述

3.2.3 Instant Motion-to-Video Rendering

在这里插入图片描述

四、效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言百钱买百鸡(ZZULIOJ1074:百钱买百鸡)

题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡&…

CentOS Linux release 7.9.2009 (Core)中安装配置Tomcat

一、安装JDK 部分内容可以参考我这篇文章:Windows11与CentOS7下配置与检测JDK与Maven环境变量 中的 2.2 安装jdk-8u371-linux-x64.tar.gz和配置环境变量/etc/profile //1、安装redhat-lsb yum install -y redhat-lsb//2、查看系统版本信息 lsb_release -a //3、查…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏5(附项目源码,完结)

文章目录 最终效果前言简单绘制一下环境显示当前波数生成不同的敌人控制游戏运行速度游戏结束最终效果扩展源码完结最终效果 前言 本期是本项目的最后一篇,主要内容是配置环境、生成不同敌人、结束重开。 简单绘制一下环境 环境可以按自己喜好,去找一些瓦片,想怎么配置怎…

ExoPlayer架构详解与源码分析(9)——TsExtractor

系列文章目录 ExoPlayer架构详解与源码分析(1)——前言 ExoPlayer架构详解与源码分析(2)——Player ExoPlayer架构详解与源码分析(3)——Timeline ExoPlayer架构详解与源码分析(4)—…

智能驾驶汽车虚拟仿真视频数据理解(一)

赛题官网 datawhale 赛题介绍 跑通demo paddle 跑通demo torch 提交的障碍物取最主要的那个?不考虑多物体提交。障碍物,尽可能选择状态发生变化的物体。如果没有明显变化的,则考虑周边的物体。车的状态最后趋于减速、停止,时序…

python→函数曲线

CSDN中公式一栏,亦可以插入Latex函数。 以函数 为例 也可以用Latex写如下代码: \documentclass{article} \usepackage{amsmath} \begin{document} \[ y \frac{n}{n30} \] \end{document} 如下: 那么,该函数图像如何呢&#xf…

vue+element实现多级表头加树结构

标题两种展示方式 方式一 完整代码: <template><div class"box"><el-tableref"areaPointTable":data"tableData"border:span-method"objectSpanMethod":header-cell-style"tableHeaderMerge"><el-ta…

数据库编程sqlite3库安装及使用

数据库编程 数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大&#xff0c;可以存放百万条、千万条、上亿条数据。但是数据库并不是…

一起学docker系列之五docker的常用命令--操作容器的命令

目录 前言1 启动容器2 查看容器3 退出容器4 启动已经停止的容器5 重启容器6 停止容器7 删除已经停止的容器8 启动容器说明和举例9 查看容器日志10 查看容器内运行的进程11 查看容器内部细节12 进入正在运行的容器并进行交互13 导入和导出容器结语 前言 当涉及到容器化技术&…

Java学习之路 —— 网络通信

文章目录 1. InetAddress2. UDP3. TCP4. 总结 1. InetAddress InetAddress的常用方法如下&#xff1a; public class InetAddressDemo {public static void main(String[] args) throws Exception{// 1. 获取本机IP地址对象InetAddress ip1 InetAddress.getLocalHost();Sys…

飞熊领鲜参加「第十届中国产业数字化大会」获创新企业数字化百强

11月16日至17日&#xff0c;托比网“第十届中国&#xff08;南京&#xff09;产业数字化大会”在南京举行。作为“中国&#xff08;南京&#xff09;电子商务大会”的一部分&#xff0c;本次会议由江苏省商务厅、南京市人民政府指导&#xff0c;南京市商务局、南京市鼓楼区人民…

Windows安装Java环境(OracleJDK)

在下载之前&#xff0c;我们先了解一下java的前世今生 1991年&#xff1a;Java 的前身 Oak 由 James Gosling 和他的团队在 Sun Microsystems 公司开发。1995年&#xff1a;Oak 更名为 Java&#xff0c;并在同年发布。Java 1.0 版本正式推出。1996年&#xff1a;Sun Microsyst…

wpf devexpress 添加GanttControl到项目

这个教程示范如何添加GanttControl 到你的项目使用内置GanttControl数据类。 要求 添加 Devexpress.Wpf.Gantt Nuget包到你的项目使用GanttControl. 数据模型 GanttControl携带和内置数据对象&#xff0c;可以使用创建视图模型&#xff1a; GanttTask 呈现甘特图任务 Gan…

web服务器练习---配置nginx三种虚拟主机

在做实验之前&#xff0c;大家先安装nginx服务&#xff0c;有两种安装方法&#xff1a; 1、rpm包安装&#xff08;安装过程简单&#xff0c;适用于学习阶段&#xff0c;方便测试&#xff09; 2、源码安装&#xff08;安装过程较为复杂&#xff0c;适用于生产环境&#xff09;…

每天一点python——day69

#字符串的比较操作使用的符号&#xff1a; >[大于]&#xff0c;>[大于等于]&#xff0c;<[小于]&#xff0c;<[小于等于]&#xff0c;[等于]&#xff0c;![不等于]#如图&#xff1a; #例子&#xff1a;比较原理释义&#xff1a;每个字符在计算机里面都有一个原始值…

如何解決開機後出現BitLocker修復畫面/取得BitLocker金鑰

[Notebook/Desktop/AIO] 疑難排解 - 如何解決開機後出現BitLocker修復畫面/取得BitLocker金鑰 如果您遇到開機進入系統後出現BitLocker修復畫面&#xff0c;這表示您電腦的硬碟已受BitLocker保護(硬碟被鎖住)。當系統在維修以及其他因素下做過硬體變動或BIOS更新設置變動&…

【大模型应用开发教程】动手学大模型应用开发,一起探索LLM Universe

动手学大模型应用开发 01 开源初心02 教程内容03 学习指南04 文章最后 原文链接-奇想星球 LLM 正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。随着国内外井喷式的 LLM API 服…

【云服务器选型指南:五大关键】

云服务器选型指南 写在前面 在云计算时代&#xff0c;云服务器&#xff08;Elastic Compute Service, ECS&#xff09;凭借其简单高效、安全可靠、处理能力可弹性伸缩等特点&#xff0c;成为构建稳定、安全应用的首选。相比物理服务器&#xff0c;云服务器的管理方式更为简单…

盘点52个Python各行各业管理系统源码Python爱好者不容错过

盘点52个Python各行各业管理系统源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 源码下载链接&#xff1a;https://pan.baidu.com/s/1pcP-94UY_57sAd2oDB3i6Q?pwd8888 提取码&#xff1a;8888 项目名…

Flume学习笔记(1)—— Flume入门

Flume 概述 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统 Flume 基于流式架构&#xff0c;灵活简单 Flume最主要的作用就是&#xff0c;实时读取服务器本地磁盘的数据&#xff0c;将数据写入到HDFS 基础架…