数字人解决方案——ER-NeRF实时对话数字人论文解读

简介

本文提出了一种新的基于条件神经辐射场(Condition NeRF)的talking portrait合成框架ER-NeRF,能够在较小的参数量下实现高精度的实时渲染和快速收敛。该方法利用空间区域的不平等贡献来指导谈话肖像建模,以提高动态头部重建的准确性。

具体而言,为了解决动态头部重建的问题,本文引入了一种紧凑且富有表现力的基于NeRF的三平面哈希表示,通过三个2D哈希编码器修剪空间区域,实现了对空间区域的精细划分。在处理语音音频时,本文提出了一个区域注意模块,利用区域注意力机制生成区域感知条件特征。与现有的方法不同的是,该方法使用了显式连接的注意力机制,将音频特征与空间区域建立了直接联系,以捕捉局部运动的先验知识。

此外,针对身体部分的建模问题,本文提出了一种直观且快速的适应性姿态编码,将头部姿态的复杂变换映射到空间坐标中,从而优化了头部-躯干分离问题。

大量实验证明,在talking portrait合成任务中,该方法相比现有方法具有更高的保真度和唇形同步程度,同时表现出逼真的细节和更高的效率。这一方法为高质量的talking portrait合成提供了一种新的有效途径。
在这里插入图片描述

图1:与以往的方法不同,我们没有通过基于MLP的编码器来学习隐含的音频-视觉关系,而是明确地关注语音音频和空间区域之间的跨模态交互。区域感知使ER NeRF能够呈现更准确的面部运动。

论文单位:北京航空航天大学,格里菲斯大学,RIKEN AIP,东京大学
论文地址:https://arxiv.org/abs/2307.09323
代码代码:https://github.com/Fictionarry/ER-NeRF

引言

音频驱动的说话肖像合成是一个重要且具有挑战性的问题,有着多种潜在应用场景,例如数字人物、虚拟化身、电影制作和视频会议。近年来,许多研究人员已经使用深度生成模型来处理这一任务。其中,神经辐射场(NeRF)被引入到音频驱动的说话肖像合成中,提供了一种通过深度多层感知器(MLP)学习从音频特征到相应视觉外观的直接映射的新方法。一些研究通过端到端方式或通过中间表示对音频信号进行NeRF条件处理,以重建特定的说话肖像。尽管这些基于NeRF的方法在合成质量上取得了巨大成功,但其推理速度远远不能满足实时性要求,这限制了它们的实际应用。

近期的一些关于高效神经表示的工作通过用稀疏特征网格替换MLP网络的一部分,实现了对NeRF的显著加速。Instant-NGP引入了哈希编码体素网格用于静态场景建模,并使用紧凑的模型实现了快速和高质量的渲染。RAD NeRF首先将这项技术应用于说话肖像合成,并构建了一个具有最先进性能的实时渲染框架。然而,RAD-NeRF需要一个复杂的带有MLP的网格编码器来隐式学习区域性的音频-动作映射,这限制了其收敛速度和重建质量。

本文旨在探索一种更有效的解决方案,以实现高效、高保真的说话肖像合成。基于之前的研究,我们注意到不同的空间区域对于说话肖像的外观的贡献并不相等:(1)在体渲染中,由于只有表面区域有助于表示动态头部,因此大多数其他空间区域是无用的,且头部的表面结构较为简单,可以进一步探索如何使用一些高效NeRF技术进行修剪,以降低训练难度;(2)由于不同的面部区域与语音音频具有不同的关联,因此不同的空间区域以其独特的方式与音频信号固有地相关,并表现出独特的音频驱动的局部运动。

受到这些观察结果的启发,我们明确利用空间区域的不平等贡献来指导说话肖像建模,并提出了一种新颖的高效区域感知说话肖像NeRF(ER-NeRF)框架,用于逼真高效的说话肖像合成。该框架在具有较小模型尺寸的情况下实现了高质量的渲染、快速收敛和实时推理。

本文的贡献主要在于:(1)我们引入了一种高效的三平面哈希表示来促进动态头部重建,以紧凑的模型大小实现了高质量的渲染、实时推理和快速收敛;(2)我们提出了一种新颖的区域注意模块来捕捉音频条件和空间区域之间的相关性,以进行精确的面部运动建模。

算法架构在这里插入图片描述

图2: ER-NeRF框架概述。Talking portrait 的头部由三平面哈希表示建模。三平面散列编码器 H 3 H^3 H3用于将3D坐标 x x x编码为其空间几何特征 f f f。语音音频 a a a和眨眼 e e e的输入条件特征通过区域注意力模块在通道级别重新加权, 并转换为区域感知条件特征 a r a_r ar e r e_r er。然后, 将与空间几何特征 f f f和视角方向 d d d相结合的区域感知特征输入到MLP解码器中, 以预测头部的颜色 c c c以及密度 σ \sigma σ。躯干部分由另一个具有自适应姿势编码的躯干NeRF渲染。应用相应的头部姿态 P = ( R , t ) P=(R,t) P=(R,t)来变换可训练的关键点, 以获得它们的归一化2D坐标 并作为条件输入指定的2D神经场, 以预测躯干图像。

哈希三平面

我们的第一个改进针对动态头部表示进行了优化。尽管RAD NeRF使用Instant-NGP来表示说话肖像并实现了快速推理,但在对音频驱动的3D动态头部建模时,其渲染质量和收敛性受到哈希冲突的限制。为了解决这个问题,我们引入了一种三平面哈希表示,通过基于NeRF的三平面分解将3D空间分解为三个正交平面。在因子分解过程中,所有空间区域都被压缩到2D平面上,并修剪相应的特征网格。因此,散列冲突仅发生在低维子空间中且数量更少。在噪声较少的情况下,网络可以更加关注音频特征的处理,从而能够重建更准确的头部结构和更精细的动态运动。
在这里插入图片描述

图3. 可视化的占用网格。(a)没有音频条件的纯静态3D哈希网格。(b,c)3D哈希网格和我们的以音频为条件的三平面哈希表示。在被要求处理音频特征并同时学习动态运动后,3D哈希网格的MLP解码器表现出过载,而我们的表示仍然可以重建精细的表面。

对于给定的坐标 x = ( x , y , z ) ∈ R X Y Z x=(x,y,z)\in\mathbb{R}^{\mathbf{XYZ}} x=(x,y,z)RXYZ我们通过三个2D多分辨率哈希编码器分别对其投影坐标进行编码:
H A B : ( a , b ) → f a b A B \mathcal{H}^{\mathrm{AB}}:\left(a,b\right)\rightarrow f_{a b}^{\mathrm{AB}} HAB:(a,b)fabAB
其中输出 f a b A B ∈ R L F \mathbf{f}_{a b}^{\mathbf{AB}}\in\mathbb{R}^{\mathrm{{LF}}} fabABRLF是投影坐标$ ( a , b ) (a,b) (a,b)的平面级几何特征,(a,b)和 H A B \mathcal{H}^{AB} HAB是平面 R A B \mathbb{R}^{AB} RAB的多分辨率哈希编码器, 层数为 L L L, 特征 每个条目的尺寸 F F F
然后我们将结果进行concat得到最终的几何特征 f g ∈ R 3 × L F : {\bf f}_{g}\in\mathbb{R}^{3\times L F}: fgR3×LF:

f x = H X Y ( x , y ) ⊕ H Y Z ( y , z ) ⊕ H X Z ( x , z ) \mathrm{f_{x}}=\cal{H}^{\mathrm{XY}}(x,y)\oplus\mathit{}\cal{H}^{\mathrm{YZ}}(y,z)\oplus\mathit{}\cal{H}^{\mathrm{XZ}}(x,z) fx=HXY(x,y)HYZ(y,z)HXZ(x,z)

符号 ⊕ \oplus 表示连接运算符, 它将特征连接到 3 × L F 3\times LF 3×LF通道向量中。

区域注意力模块

音频等动态条件几乎不会均匀地对整个portrait产生影响。因此,了解这些条件如何影响肖像的不同区域对于生成自然的面部运动至关重要。许多以往的工作在特征层面忽略了这一点,并使用一些昂贵的方法来隐式地学习其中的相关性。通过利用存储在哈希编码器中的多分辨率区域信息,我们引入了一种轻量级区域注意机制来显式获取动态特征和不同空间区域之间的关系。

区域注意力机制。 区域注意力机制涉及计算注意力向量的外部注意力步骤和用于重新加权的跨模式通道注意力步骤。我们的目标是将动态条件特征与多分辨率几何特征 f x ∈ R N {\cal f}_{\bf x}\in\mathbb{R}^{\bf N} fxRN连接起来, 其中几何特征由哈希编码器 H \cal{H} H表示空间点 x x x得到。然而, 由于这种分层特征是通过concat构建的, 因此在编码期间不存在显式的信息流动。

为了有效地提高 f x f_x fx中不同级别之间的区域信息交换, 并通过注意力向量的范数进一步区分音频对于每个区域的重要性, 我们使用了两层 MLP 捕获空间的全局背景。我们可以将其解释为external attention 的形式, 其中两个外部记忆单元 M k M_k Mk M v M_v Mv用于各个级别连接和自条件查询:
A = R e L U ( F M k T ) , A=\mathrm{ReLU}(F M_{k}^{T}), A=ReLU(FMkT), V o u t = A M v . V_{\mathrm{out}}\,=\,A M_{v}. Vout=AMv.
其中向量 f x f_x fx被视为矩阵 F ∈ R N × 1 F\in\mathbb{R}^{N\times1} FRN×1
随后,参考通道注意力机制,我们将得到的特征 V o u t ∈ R O × 1 V_{\mathrm{out}}~\in~\mathbb{R}^{{\cal O}\times1} Vout  RO×1视为区域注意力向量 v ∈ R O \mathbf{v}\in\mathbb{R}^{O} vRO, 并将其用于对动态条件特征 q ∈ R O \mathbf{q}\in\mathbb{R}^{O} qRO的每个通道进行重新加权。最终输出特征向量为:
q o u t = v ⊙ q q_{out} = v \odot q qout=vq
其中 ⊙ \odot 表示 Hadamard 乘积。
至此, 区域感知特征 q o u t q_{out} qout的每个通道均与 x x x所在的层级的区域相关, 因为区域注意力向量 v v v包含具有丰富多分辨率空间信息表示。因此, 多分辨率空间区域可以决定 q q q中的哪部分信息应该保留或增强。我们将其应用于声音和眨眼信息对NeRF的动态条件驱动。
在这里插入图片描述

图4. 区域注意力模块的可视化。即使受到一些不确定细节(如蓬松的头发)的影响,我们的区域注意模块也成功地捕获了动态条件和空间区域之间的关系,而无需显式的标注。

自适应姿势编码

在这里插入图片描述
为了解决头躯干分离问题,我们在之前的工作的基础上进行了改进(RAD-NeRF,GeneFace)。我们没有直接使用整个图像或姿势矩阵作为条件,而是将头部姿势的复杂变换映射到具有更清晰位置信息的几个关键点的坐标,并引导torso-NeRF从中学习隐式躯干姿势坐标。

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

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

相关文章

MNN 围炉札记

文章目录 一、MNN 资料二、使用示例三、源码分析1、createFromFile、createFromBuffer1.1 Content1.2 createFromBufferInternal1.3 Net1.4 Interpreter1.5 Interpreter::Interpreter 2、createRuntime2.1 RuntimeInfo2.2 Schedule::getApprociateType2.2.1 MNNGetExtraRuntime…

《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020

《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020 前言简介模型架构共情生成器交互鉴别器损失函数前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《EmpDG: Multi-resolution Interactive E…

正则表达式:深入理解与应用

正则表达式,又称正规表示法、常规表示法(Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学中的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器…

Linux 文件系统:文件描述符、管理文件

目录 一、三个标注输入输出流 二、文件描述符fd 1、通过C语言管理文件—理解文件描述符fd 2、文件描述符实现原理 3、文件描述符0、1、2 4、总结 三、如何管理文件 1、打开文件的过程 2、内核空间的结构 struct task_struct(PCB) struct file…

你真的了解SpringBoot注解?阿里巴巴面试告诉你答案!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”! 大家好,我是小米!今天我来和大家分享一下在阿里巴巴面试中常见的一个问题:SpringBoot注解。SpringBoot作为当今流行的Java开发框架,注解是其灵魂所在,熟练掌握这些注解对于应对面试非常有帮…

腾讯云服务器入站规则端口开放使用指南(CentOS系统)

第一步:开放安全组入站规则 来源处0.0.0.0/0是对IPv4开发,::/0是对IPv6开放; 协议端口按照提示填写即可。云服务器防火墙开放 第三步:本地防火墙开放 sudo firewall-cmd --zonepublic --add-port你的端口号/tcp --perma…

【c++】类和对象

主页:醋溜马桶圈-CSDN博客 专栏:c_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.面向过程和面向对象初步认识 面向过程(C语言) 面向对象(C) 2.类的引入和定义 2.1 类…

OpenCV图像阈值分割、二值化

在OpenCV中图像总共有5种图像二值化的方法, 在进行图像二值化时最重要的就是确定分割的阈值,阈值确定的方法主要有两类:全局阈值和自适应阈值。而在全局阈值和自适应阈值下面又有很多方法,本文将对这些方法进行详细讲解 OpenCV图…

FPGA——DDR3的IP核

FPGA——DDR3的ip核 IP核配置基于MIG核代码基于AXI接口的DDR3 IP核配置 1 2 3 4 5 6 基于MIG核代码 控制MIG核的信号进行读写 module MIG_APP_Drive(input i_ui_clk ,input i_ui_rst ,input init_calib_…

Legacy|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!

前言 前面讲了很多很多关于安装系统、重装系统的教程。但唯独没有讲到电脑换了新的硬盘之后,怎么把旧系统迁移到新的硬盘上。 今天小白就来跟各位小伙伴详细唠唠: 开始之前需要把系统迁移的条件准备好,意思就是在WinPE系统下,可…

AI赋能:加速MWORKS.Sysplorer仿真设计的新途径

近年来,人工智能技术的应用逐渐兴起,为仿真领域带来了新的机遇。随着现代工程系统的复杂性日益增加,MWORKS.Sysplorer作为一种广泛应用于系统仿真和设计的工具,面临着模型日益庞大和计算资源有限的挑战。为了解决这一问题&#xf…

【开发】SpringBoot 整合 Redis

目录 前言 1. Redis 的下载及安装 1.1 Redis 的下载 1.2 安装 Redis 1.3 启动 Redis 2. 创建 SpringBoot 项目整合 Redis 2.1 环境要求 2.2 SpringBoot项目构建 2.2.1 方式一 2.2.2 方式二 2.3 在 pom.xml 文件中导入依赖坐标 2.4 在 application.properties 中加…

编辑命令行提示符 prompt,支持显示 git 分支、标签等信息

实时在 Linhieng/current–Microsoft.PowerShell_profile.ps1 上更新 打开 $Profile 文件&#xff0c;将下面内容粘贴到其中即可&#xff1a; <# 负责打印 git 分支相关信息支持输出以下信息&#xff1a;当前分支&#xff0c;或者是 hash 值当前目录是否为 git 子目录当前…

定位线上最耗CPU的线程

定位线上最耗CPU的线程 准备工作 启动一个程序。 arthas-demo是一个简单的程序&#xff0c;每隔一秒生成一个随机数&#xff0c;再执行质因数分解&#xff0c;并打印出分解结果。 curl -O https://alibaba.github.io/arthas/arthas-demo.jar java -jar arthas-demo.jar[root…

计算机网络的组成

目录 <计算机网络的组成> 1.网络硬件 1)主机Host 2)终端Terminal 3)通信控制处理机 4)传输介质 5)网络连接设备 2.网络软件 1)网络操作系统 2)网络协议软件 3)网络管理软件 4)网络通信软件 5)网络应用软件 3通信子网和资源子网 <计算机网络的组成> 无…

组建公司办公网络

一 认识网络传输介质的分类 网络传输介质主要分为有线传输介质和无线传输介质两大类&#xff0c;它们在网络建设和数据传输中扮演着至关重要的角色。下面是这两类传输介质的详细分类&#xff1a; 有线传输介质 双绞线&#xff08;Twisted Pair&#xff09;&#xff1a;这是最…

PHP与Spring Boot在实现功能上的比较

原文地址&#xff1a;PHP与Spring Boot在实现功能上的比较 - Pleasure的博客 下面是正文内容&#xff1a; 前言 最近在学Spring Boot后端框架&#xff0c;在功能实现上发现了与PHP存在着一定的可比性。 这篇就单独拎出来进行比较一下。 正文 就例举一些功能上的重叠以及大致的…

【Web】浅聊Hessian反序列化之打Spring AOP——JNDI

目录 前言 简单分析 EXP 前言 前文&#xff1a;【Web】浅聊Java反序列化之Rome——关于其他利用链-CSDN博客 前文里最后给到一条HotSwappableTargetSource利用链&#xff0c;就是我们今天PartiallyComparableAdvisorHolder链子的前半段(触发恶意类的toString方法)&#xf…

Redis中的String编码转换底层原理及6.0新特性

String编码转换底层原理 String对象为什么把大于39字节或者44字节的字符串编码为raw&#xff0c;小于的时候编码为embstr? 在Redis3.2以前的版本中,SDS作为字符串类型中存储字符串内容的结构&#xff0c;源码如下&#xff1a; 3.2版本SDS结构 struct sdshdr {// 记录buf数…

华岳M9制造企业管理软件业务流程 2/4

华岳M9制造企业管理软件业务流程 2/4 步骤3 初始一、应收账款初始余额二、应付账款初始余额三、出纳账项初始余额四、会计账项初始余额五、盘点入库六、存货细目七、存货属性设置八、存货存量控制九、存货价格管理十、月末处理 步骤4 技术一、存货目录二、存货细目三、仓库绑定…