解读GaussianTalker:利用音频驱动的基于3D高斯点染技术的实时高保真讲话头像合成

news2024/11/16 21:28:19

在这里插入图片描述
单位:首尔大学
项目地址:https://ku-cvlab.github.io/GaussianTalker/
github:https://github.com/KU-CVLAB/gaussiantalker
本文是对GaussianTalker的解读,欢迎大家阅读指正!


目录

  • 前言
  • 摘要
  • 一、背景介绍
  • 二 相关工作
  • 三 3DGS
  • 四 方法
    • 4.1 问题阐述和概述
    • 4.3 学习音频驱动的3D高斯变形
      • **4.3.1 空间-音频交叉注意力**
      • 4.3.2 与语音相关运动的解耦
  • 五 实验
  • 总结


前言

讲话人脸生成系统(Talking face generation, TFG),最近受到广泛欢迎。它的火爆程度随着近期一些新技术如扩散模型、3DGS和NeRF等出现,而受到进一步关注。但是遇到的痛点也不少,比如之前很火的Hallo等,使用的体验是不错,但是生成视频的速度比较慢。那么,如何快速生成高保真的视频效果呢?本篇文章带你探索这个良心工作。


效果展示

Live Video: Self-Driven2.mp4
在这里插入图片描述
在这里插入图片描述

摘要

该文提出了GaussianTalker,一个新颖的框架,用于实时生成可控制姿态的会说话头像。
它利用了3D高斯散射(3DGS)的快速渲染能力,同时应对了直接用语音音频控制3DGS的挑战。
GaussianTalker构建了一个标准的3DGS头部表示,并与音频同步进行变形。一个关键的见解是将3D高斯属性编码到共享的隐式特征表示中,在这里它与音频特征合并,以操纵每个高斯属性。这种设计利用了空间感知特征,并强化了邻近点之间的交互。然后,特征嵌入被送入一个空间-音频注意力模块,该模块预测每个高斯属性的逐帧偏移。与以往的连接或乘法方法相比,这种方法在操纵众多高斯及其复杂参数方面更为稳定。实验结果展示了GaussianTalker在面部保真度、唇部同步精度和渲染速度方面相比以前的方法的优越性。具体来说,GaussianTalker达到了高达120 FPS的卓越渲染速度,超越了以前的基准。代码已在 https://ku-cvlab.github.io/GaussianTalker/ 上公开。

特点:3DGS,音频特征同步,高保真,实时渲染

一、背景介绍

生成由任意语音音频驱动的TFG是一个广泛受欢迎的任务,它在数字人类、虚拟化身、电影制作和远程会议等多个领域都有多种用途[6, 21, 33, 36, 38, 40, 43, 54]。

痛点一:姿态不可控
虽然已有多种工作[6, 21, 33, 43]成功尝试使用生成模型来解决这项任务,但它们没有专注于控制头部姿态,这限制了它们的现实感和适用性。
痛点二:渲染速度过慢
最近,许多研究[17, 24, 27, 39, 48, 49]应用了神经辐射场(NeRF)[31]来创建可以控制姿态的会说话的肖像。通过在NeRF的多层感知器(MLP)中直接对音频特征进行条件化,这些方法可以合成与输入音频同步的视图一致的3D头部结构。尽管这些基于NeRF的技术实现了高质量和一致的视觉输出,但它们的慢推理速度限制了它们的实用性。尽管最近的进步[24, 39]在512×512分辨率下实现了每秒高达30帧的渲染速度,但必须克服计算瓶颈才能应用于现实世界场景。

ffff
图片说明:
现有3DTFG[17, 24, 39]与该方法之间的保真度、唇部同步和推理时间的比较。GaussianTalker,在更高的帧率(FPS)下实现了更优越的性能。GaussianTalker*,这是一个更高效、更快的变体。每个气泡的大小代表了每种方法每帧的推理时间。

思路启发:NeRF的一个可行替代方案
为了解决这个限制,一个直观的解决方案是利用3D高斯散射(3DGS)[22]的快速渲染能力。最近被认为是NeRF的一个可行替代方案,3DGS在显著提高推理速度的同时提供了可比的渲染质量。尽管3DGS最初是为重建静态3D场景而提出的,但随后的工作已经将其扩展到动态场景[30, 44–46]。然而,很少有研究利用3DGS创建具有可控输入的动态3D场景,其中大部分集中在使用中间网格表示来驱动3D高斯[7, 19, 26, 28, 34]。然而,依赖于中间3D网格表示,如FLAME[25],进行变形通常在头发和面部皱纹的细节上有所欠缺。

挑战:
作者确定了将语音音频直接映射到3D高斯变形的两个主要挑战。

  1. 3DGS表示缺乏相邻点之间的共享空间信息,这使得其操作变得复杂。3DGS的优化过程没有考虑相邻高斯之间的关系,这对于在变形期间保持面部区域的凝聚力至关重要。
  2. 广泛的参数空间和大量的高斯点构成了操作的挑战。与位置和采样点数量固定的可控NeRF表示不同,每帧需要变形的大量高斯点的位置、形状和外观属性,同时还要保留复杂的面部细节。

作者的做法
作者介绍了GaussianTalker,这是一个新颖的实时姿态可控的会说话头像合成框架。
这是首次利用3D高斯表示来利用其快速的场景建模能力,用于音频驱动的动态面部动画。
它构建了一个标准头部形状的静态3DGS表示,并与音频同步进行变形。

具体来说,作者采用多分辨率的三平面来提取每个3D高斯位置的特征嵌入,直接估计每个高斯属性。这种设计确保了三平面学习3D头部的空间和语义信息,而2D特征网格的插值机制有效地强化了相邻点之间的交互。随后,特征嵌入被输入到作者提出的空间-音频注意力模块中,在那里它们与音频特征合并,预测每个高斯属性的逐帧偏移。该模块成功地模拟了音频特征和每个高斯原素的运动之间的相关性。与先前工作中的串联[17, 39]或乘法[24]相比,交叉注意力提供了一种更稳定的操纵大量高斯及其复杂参数空间的方法。定性和定量实验表明,与先前方法相比,GaussianTalker在面部保真度、唇部同步精度和渲染速度方面具有优越性。此外,进行了消融研究,以验证模型中各个设计选择的有效性。

贡献总结
主要贡献总结如下:

  • 首次提出一种新颖的音频条件3D高斯散射框架,用于实时3D感知的会说话头像合成。
  • 重新设计了3D高斯表示,采用特征体积表示,以加强相邻高斯之间的空间一致性。
  • 在音频和空间特征之间集成了交叉注意力机制,以提高稳定性,并确保在大量高斯上进行区域特定的变形。

二 相关工作

2.1 TFG:音频驱动的会说话肖像合成
音频驱动的会说话肖像合成旨在基于音频输入创建逼真的面部动画和准确的唇部运动。

早期基于2D GAN的方法[33, 37, 51, 52, 58]实现了照片级真实感,但由于缺乏3D几何信息,无法控制头部姿态。

基于模型的方法为了控制头部姿态,一些工作[29, 40, 42, 54]采用了基于模型的方法,其中面部标志点和3D可变形模型加强了唇部同步模型,并具有调整头部方向的能力。然而,这些方法导致了新问题,例如中间表示的额外误差,以及身份保持和现实感的不准确性。

最近神经辐射场(NeRF)[31]因其能够捕捉复杂场景而被探索用于会说话的肖像。AD-NeRF[17]开创性地使用NeRF的隐式表示进行条件音频输入,但头部和躯干的独立网络限制了其灵活性。随后基于NeRF的方法[27, 35, 47]实现了高质量,但渲染速度慢。虽然RAD-NeRF[39]和ER-NeRF[24]通过基于网格的NeRF[32]提高了效率和质量,但实时渲染姿态可控的3D会说话头像仍然是一个挑战。

2.2 3D高斯散射
3DGS[22]是点云渲染的开创性技术,它使用大量的椭圆形、各向异性球体来精确表示场景。每个点都包含一个3D高斯分布,其均值、协方差、不透明度和球谐参数被优化以准确捕捉场景的形状和外观。这种方法有效地解决了点渲染中的常见问题,例如输出间隙。此外,结合基于瓦片的光栅化算法,它促进了加速训练和实时渲染能力。最近,3DGS在3D视觉任务中得到了广泛应用,如3D环境中的对象操作[11, 14]、重建[12, 22]和感知[4, 30]。

2.3 使用3DGS进行面部动画
以前的面部重建和动画方法主要依赖于3D可变形模型(3DMM)[16, 23]或使用神经隐式表示[1, 15, 56]。

最近的方法[7, 9, 34, 41]转向采用3DGS表示,旨在利用快速训练和渲染的优势,同时仍实现竞争性的照片级真实感。GaussianAvatars[34]通过在FLAME[25]网格上装配3D高斯来重建头部头像。MonoGaussianAvatar[7]通过使用线性混合蒙皮(LBS)将3D高斯的均值位置从标准空间移动到变形空间,并同时通过变形场调整其他高斯参数,学习显式的头部头像。GaussianHead[41]采用了运动变形场来适应面部运动,同时保持头部几何形状,并单独使用三平面来保留个别3D高斯的外观信息。

然而,上述方法倾向于依赖参数模型进行面部动画。与以前的工作相比,我们的音频驱动方法不仅不需要超出语音序列的数据来进行面部重演,而且也很容易适用于新的音频。

三 3DGS

此处建议对3DGS的知识点充下电

四 方法

4.1 问题阐述和概述

在这一部分,描述了GaussianTalker的主要组成部分,该模型旨在实时合成由音频输入驱动的高保真度、姿态可控的会说话头像图像。作者的模型训练于一系列会说话的肖像视频 ,包含某个身份的个图像帧。目标是重建一组代表会说话头像平均形状的标准3D高斯,并学习一个变形模块,根据相应的输入音频来变形3D高斯。在推理过程中,对于输入音频,变形模块预测每个高斯属性的偏移量,并将变形后的高斯在观察点进行光栅化,以输出新的图像 。

我们提出的方法是在图2中描述的概述。首先在4.2节中介绍了多分辨率三平面,该三平面编码3D高斯的低维特征,以表示标准头部的静态平均形状。在4.3节中,介绍了语音运动交叉注意力模块,该模块融合3D高斯特征和音频特征,准确模拟由输入音频驱动的面部运动。最后,4.4节描述了阶段性训练策略和所使用的损失函数。
在这里插入图片描述
图2说明:GaussianTalker框架概述。GaussianTalker利用多分辨率的三平面来利用不同尺度的特征描述标准3D头部。这些特征与音频特征一起输入到空间-音频注意力模块中,以预测每帧的变形,从而实现快速且可靠的会说话头像合成。

4.2 学习具有三平面表示的标准3D高斯
在这里插入图片描述
图3三平面特征网格的可视化序列首先展示一张渲染图像,然后是其正交投影嵌入:正面(xy)、顶视图(yz)和侧视图(zx)。通过使用PCA将其维度降低到3,来对嵌入进行可视化。

挑战与方案
在这一部分,作者介绍了使用3D高斯表示学习会说话头像的标准形状的细节。原始的3DGS [22] 实现本身并不捕捉相邻和远距离3D高斯之间的空间关系。然而,动态3D头部的理想特征表示应对接近的面部区域相似,对分离的区域不同,因为接近的面部原语可能会朝同一方向移动。

为了实现这一点,通过学习低维特征表示来修改3D高斯表示,这些特征表示可以稍后与音频特征合并,用于每个高斯的变形。制定了嵌入空间以编码3D高斯的属性信息,以便在预测其变形偏移时考虑每个高斯的形状和外观。更具体地说,采用了一种混合3D表示,它利用3DGS的显式3D表示,同时也利用隐式神经辐射场[31]编码的空间信息。对于每个标准3D位置,从多分辨率三平面表示[3, 5, 13]中提取特征嵌入。这些特征嵌入被用来计算每个点的尺度、旋转、球谐和不透明度。这些计算出的属性构成了会说话头像的标准3D高斯。

4.3 学习音频驱动的3D高斯变形

在这里插入图片描述
图4展示了两个个体不同模态的注意力得分分布。从左到右分别是:原始渲染图像,负责音频线索的注意力得分,眨眼动态,头部方向(面部视点)和时间一致性(空)的注意力得分。

**不足之处:**先前的工作 [17, 24, 27, 39] 采用条件NeRF表示,其中每个光线上的采样点的3D坐标保持固定,只有颜色和密度受输入音频的条件。

然而,为了充分利用3DGS的显式表示,我们选择变形3D高斯,我们不仅操纵外观信息,还有每个高斯原素的空间位置和形状。虽然这可以更准确地捕捉不断变化的会说话头部的3D形状,但与控制NeRF表示相比,3D高斯的变形是一个更加复杂的任务。高斯原素的复杂性,加上它们的数量,由于3D高斯的广泛参数空间,为变形提出了重大挑战。此外,输入音频不会均匀地影响整个面部图像,这使得变形模块对于理解不同面部区域如何响应音频条件以实现真实的面部动画至关重要。

4.3.1 空间-音频交叉注意力

先前实现区域感知音频的方法,如 ER-NeRF [24],通过逐元素乘法简单地调整每个3D点的音频特征的权重。然而,它遇到了一个挑战,在动态场景中,不管多样的音频输入如何,一个特定的静态3D点始终维持相同的音频权重。这未能认识到一个固定的3D坐标可能不会始终对应相同的面部区域,随着场景的进展。
为了解决这个问题并增强空间-音频特征的提取,引入了空间-音频注意力模块,这是一个交叉注意力机制,将空间特征嵌入的标准3D高斯与随后的音频特征合并,捕捉输入语音如何影响3D高斯的运动。空间-音频注意力模块包括组交叉注意力层和前馈层,每个层都与跳跃连接相互连接。

4.3.2 与语音相关运动的解耦

**挑战:**在合成会说话的头像时,相应的语音音频并不能解释所有复杂多样的面部运动。像眨眼和面部皱纹这样的微妙表情,以及头发运动和照明变化等外部因素,并不与输入的语音音频直接相关。因此,在将语音音频映射到3D高斯变形时,将非言语运动和场景变化分离是至关重要的。在这一部分,通过引入额外的输入条件来解决这一挑战,这些条件可以捕捉非言语运动,允许我们将与语音相关的运动从单目视频中解耦。

**方案:**在遵循先前的工作[24, 39],作者首先使用眼部特征明确控制眨眼。具体来说,采用面部动作编码系统[10]中的 AU45 来描述眨眼的程度,并使用正弦位置编码以匹配输入的维度。此外,还将相机视点作为辅助输入,以解耦非言语场景变化。虽然我们将帧的相机表述为面部视点,但典型的视频是在相机静止时录制的,而头部则持续运动。因此,肖像图像中的变化,如头发位移和照明变化,是独立于语音音频的。因此,我们采用了面部视点嵌入作为额外的输入条件,以解耦这些非听觉场景波动。是通过将外部相机姿态映射到一个小的MLP上获得的嵌入向量,与其他输入具有相同的维度。最后,我们发现对所有帧使用一个空向量作为全局特征可以促进一致性。我们将这个空向量作为我们交叉注意力网络的额外输入。

五 实验

在这里插入图片描述
图5:不同音视频模型唇部同步的比较可视化 该序列展示了唇形如何符合所说单词‘country’(国家)、‘of’(的)、‘crime’(犯罪)、‘we’(我们)、‘up’(向上)、‘especially’(特别是)、‘like’(喜欢)中特定的音素,最后一帧显示闭嘴状态(‘静音’)。


总结

在这项工作中,作者提出了GaussianTalker,这是一个新颖的框架,用于实时姿态可控的3D会说话头像合成,利用3D高斯进行头部表示。

该方法通过对从多分辨率三平面提取的特征进行条件化,实现了对高斯原素的精确控制。此外,空间-音频注意力模块的整合便于动态变形面部区域,允许根据音频线索进行微妙的调整,并增强了口头运动的解耦。该方法以其优越的推理速度和对领域外音频轨迹的高保真度结果,与以前的基于NeRF的方法有所区别。其有效性通过定量和定性分析得到了验证。我们期待在视频游戏开发等领域提供丰富的用户体验,其中GaussianTalker的实时渲染能力有望增强交互式数字环境。

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

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

相关文章

拼多多Temu半托管和全托管对比

根据东吴证券报告显示,与全托管相比,半托管给予商家更灵活的物流选择,允许商家自行负责仓配物流;与传统3P模式相比,半托管仍保留平台核价、平台负责营销售后客服等特点。 Temu 最开始采用全托管模式,但随着…

【C++ Primer Plus习题】7.6

问题: 解答: #include <iostream> using namespace std;#define SIZE 20int Fill_array(double* arr, int len) {int i 0;for (i 0; i < len; i){cout << "请输入值:";cin >> arr[i];if (cin.fail()){cout << "输入非法数字,结束…

.NET中分布式服务

单体架构 特点&#xff1a; 所有的功能集成在一个项目工程中。所有的功能打在一个安装包。 优点&#xff1a; 项目架构简单。开发效率高。容易打包。 缺点&#xff1a; 全部功能集成在一个工程中&#xff0c;如果要更新&#xff0c; 所有的都要重新发布版本迭代速度逐渐变…

C#笔记4 详细解释事件及其原型、匿名方法和委托的关系

匿名方法 定义 匿名方法允许一个与委托关联的代码被内联的写入使用委托的位置。 语法形式 delegate(参数列表) {代码块 } 前文说过&#xff0c;委托是定义了一个公司&#xff0c;公司专门承接某一类型的任务。 委托的实例化就是公司把任务交给了具体的职员&#xff08;方…

【React】从零开始搭建 react 项目(初始化+路由)

创建 React 项目 创建项目的方式&#xff1a;create-react-app 项目名称 如果没有安装 react 脚手架&#xff0c;请先安装 npm isntall create-react-app -g安装成功后&#xff0c;开始配置项目 配置项目的 icon 和标题 配置 jsconfig.json 目的&#xff1a;用于配置 Java…

Google Earth Engine(GEE)——在 CloudCompare软件 中处理地面激光扫描 (TLS) 数据

背景和目的 本实验的目标是熟悉 3D 点云数据。我们将使用上周在 Boab 法院校园收集的数据。我们使用 Leica BLK360 激光扫描仪收集了多次扫描,今天我们将处理其中的一些扫描。 可以在此处以 .las 格式下载扫描数据(请注意,每个文件约为 1GB):这个是链接 https://www.dro…

批量进行Mysql数据处理的一项工作记录以及保存一个nginx变量大全

一、批量进行Mysql数据处理的一项工作记录 在使用SQL执行一起数据批量处理的时候遇到执行数速度非常慢。表temp_users是一个包含百万级的用户ID表&#xff0c;表user_list是一个亿级的表&#xff0c;因为跨库&#xff0c;这里使用的是federated引擎创建的结构表。根据要实现的目…

FPGA实现SDI视频H265压缩网络推流输出,基于VCU架构,支持12G-SDI 4K60帧,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我这里已有的视频图像编解码方案本博已有的 SDI 编解码方案 3、详细设计方案设计框图FPGA开发板视频输入SDI硬件均衡器LMH1219UHD-SDI GT SDI视频解串SMPTE UHD-SDI RX SUBSYSTEM SDI视频解码Video Frame Buffer WriteZynq UltraS…

大模型时代下,软件检测行业将如何发展?

大模型时代&#xff0c;软件测试面临着前所未有的机遇和挑战&#xff0c;各类产品测试领域将如何应对技术发展和时代变化&#xff1f; 2024年8月28日晚八点&#xff0c;安畅检测首席专家李龙与腾讯Tech Lead茹炳晟、中电金信质量团队负责人王壮做客人民邮电出版社创办的IT专业…

springboot集成guava布隆过滤器

1.创建springboot项目&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>2.创建guava布隆过滤器 Component public class Gua…

DexclassLoader读取dex在Android14上遇到问题

报错如下&#xff1a; 在Android 14&#xff08;API 级别 34&#xff09;及以后版本中&#xff0c;DexClassLoader 被进一步限制&#xff0c;只能用于加载只读文件中的代码。这意味着你不能再使用 DexClassLoader 来加载从应用的内部存储空间中读取的文件。 我想通过JNI来修改…

Elasticsearch 8.13.4 LocalDateTime类型转换问题

框架背景 springboot 3.3.1elasticseach8.13.4spring-data-elasticsearch5.3.1(其实只要用了springboot3.3.1 上下两个的版本都在里面绑死了) 问题描述 使用spring-data-elasticsearch操作es&#xff0c;当字段增加映射注解,其实如果是日期类型&#xff0c;你不加默认也给你…

计算机网络概述(协议层次与服务模型)

目录 1.协议层次 2.服务模型 1.协议层次 层次化方式实现复杂网络功能&#xff1a; 将网络复杂的功能分成明确的层次&#xff0c;每一层实现了其中一个或一组功能&#xff0c;功能中有其上层可以使用的功能&#xff1a;服务本层协议实体相互交互执行本层的协议动作&#xff0…

C++(Qt)-GIS开发-QGraphicsView显示在线瓦片地图

C(Qt)-GIS开发-QGraphicsView显示在线瓦片地图 文章目录 C(Qt)-GIS开发-QGraphicsView显示在线瓦片地图1、概述2、实现效果3、主要代码4、源码地址 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;GIS开发 &#x1f448; 1、概述 支持加载显示在线瓦片…

TD学习笔记————中级教程总结(NEW)

目录 Instance功能讲解 问题&#xff1a; 报错All ops must generate the same number of instances (have the same length Replicator功能讲解 问题&#xff1a; 视频分辨率过大 Cannot find function named:onValueChange Instance功能讲解 数据通道的长度要一致 N…

redroid搭建云手机学习笔记(一)

参考链接 通过Redroid搭建自己的云手机 docker安装 docker官网目前打不开了&#xff0c;通过官网安装的方式无法实现&#xff0c;这里需要借助镜像网站来实现docker的安装 参考链接&#xff1a;https://developer.aliyun.com/mirror/docker-ce # step 1: 安装必要的一些系统…

Dockerfile 实例

删除不需要的镜像&#xff1a;示例&#xff1a;通配符可用 [rootdocker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 580260c93725 2 hours ago 4.27MB <none&…

基于python的足球比赛数据及可视化 python 足球预测

Python 足球可视化分析是使用 Python 编程语言来进行足球比赛数据分析&#xff0c;并将结果呈现为可视化图形的过程。Python 作为一种高效灵活的编程语言&#xff0c;可以用于数据处理和分析&#xff0c;同时也有丰富的可视化库。 足球比赛数据可以从各种数据来源获取&#xf…

使用 AI进行绘画初体验

大家好啊&#xff0c;我是董董灿。 AI 绘画的效果是真的不错&#xff0c;最近在查找AI相关技术文章时&#xff0c;总是会时不时的发现一些好玩的 AI 应用&#xff0c;而且大多数都是免费的。 今天就给大家介绍如何使用 MidJourney 来完成 AI 绘画的网站。 MidJourney 本身是…

解决 Linux 上的 SSH 登录缓慢问题

如果您必须等待很长时间才能看到 SSH 密码提示&#xff0c;则可能存在多种问题。要解决 SSH 登录缓慢的根本原因&#xff0c;您可以运行带有 -vvv 选项的 ssh 命令&#xff0c;该命令将向您显示 SSH 登录期间幕后发生的情况。 $ ssh -vvv user<ssh-server>以下是 SSH 登…