【AI数字人-论文】RAD-NeRF论文

news2024/11/15 8:39:27

文章目录

    • 前言
    • 模型框架
      • 动态的NeRF
      • 前处理
      • 头部模型
        • 音频特征
        • 眼部控制
        • 头部总体表示
      • 躯干模型
      • loss
    • 结果
    • 参考

【AI数字人-论文】AD-NeRF论文

前言

本篇论文有三个主要贡献点:

  1. 提出一种分解的音频空间编码模块,该模块使用两个低维特征网格有效地建模固有高维音频驱动面部动态。
  2. 提出一种轻量级的伪3D形变模块,更有效率地合成与头部运动同步的且自然的躯干运动
  3. 提出的模型框架运行更快,速度提高了500倍,同时渲染质量更高。并且还支持对说话人物的各种显式控制,如头部姿态、眨眼和更换背景图像。

模型框架

在这里插入图片描述

上图是RAD-NeRF的整体架构,还是沿用的AD-NeRF算法中,头和躯干分别渲染的思路。

  • 头部模型是音频空间分解编码模块。输入音频信号首先通过AFE(Audio Feature Extractor)算法处理,将音频压缩到低维空间依赖音频坐标 x a x_{a} xa;然后两个分解的网格编码器(grid encoders) E s p a t i a l 3 E_{spatial}^{3} Espatial3 E a u d i o 2 E_{audio}^{2} Eaudio2分别编码空间坐标 x x x和音频坐标 x a x_{a} xa;最后空间特征 f f f和音频特征 g g g融合到一个MLP中生成用于体渲染的头部颜色 c c c和密度 σ \sigma σ

  • 躯干模型是伪3D形变模型。每一个像素仅仅取样一个躯干坐标 x t x_{t} xt,并且在头部姿态 p p p的影响下嘘唏形变 Δ x \Delta x Δx;然后将形变坐标喂入另一个网格编码器 E t o r s o 2 E_{torso}^{2} Etorso2中得到躯干特征 f f f;最后利用一个MLP输出躯干颜色 c t c_{t} ct和alpha值 α t \alpha_{t} αt

动态的NeRF

在动态场景的新视图合成方面,需要额外的条件(比如当前时间 t t t)。以前的方法通常通过两种方法进行动态场景建模。

  • 基于形变的方法(Deformation-based methods):首先在每个位置和时间步学习一个形变 G : x , t → Δ x G:x, t \rightarrow \Delta x Gx,tΔx,随州再将这个形变添加到原来的位置 x x x

  • 基于调制的方法(Modulation-based meth):简单粗暴,将时间t作为一个条件变量约束 F F F函数: F : x , d , t → σ , c F: x, d, t \rightarrow \sigma, c F:x,d,tσ,c

基于形变的方法由于形变区域内在的连续性,对于拓扑变换(比如嘴巴的张合)不能很好地建模,因此论文中选择用基于调制的方法建模头部区域;基于形变的方法建模躯干区域。

前处理

每个图像帧主要有三个预处理步骤:

  1. 对头部、颈部、躯干和背景部分进行语义解析;
  2. 提取2D面部坐标,包括眼睛和嘴唇;
  3. 进行面部跟踪以估计头部姿态参数。

对于音频处理,使用自动语音识别(ASR)模型从音频轨道中提取音频特征。

头部模型

音频特征

在这里插入图片描述

首先基于滑窗策略从音频流中提取音频特征,论文中是基于AFE算法,如上图所示。每个音频切片是20ms,利用一个离线的ASR算法(比如deepspeech算法)预测每个切片的分类logits l \mathbf{l} l,然后展平为1-D的卷积,经过自注意力模块得到最后的音频特征 a \mathbf{a} a

然后降高维的音频特征 a \mathbf{a} a压缩到一个低维的音频坐标 x a ∈ R D ; D ∈ [ 1 , 2 , 3 ] x_{a} \in \mathbb{R}^{D} ; D \in [1,2,3] xaRD;D[1,2,3],通过一个MLP实现, x a = M L P ( a , f ) x_{a} = MLP(\mathbf{a}, f) xa=MLP(a,f)。在这里连接空间特征f,以使得音频坐标明确依赖于空间位置。

代替具有更高维度 g = E 3 + D ( x , x a ) g = E^{3+D\left(x,x_{a} \right)} g=E3+D(xxa)的组合音频空间网格编码器,将其分解为两个具有较低维度的网格编码器, f = E s p a t i a l 3 ( x ) f = E_{spatial}^{3}\left( x \right) f=Espatial3(x) g = E a u d i o D ( x a ) g = E_{audio}^{D} \left( x_{a} \right) g=EaudioD(xa),以分别编码空间和音频坐标。
时间复杂度从 2 3 + D 2^{3+D} 23+D降到了 2 3 + 2 D 2^{3} + 2^{D} 23+2D

眼部控制

在这里插入图片描述
眼球运动也是自然对话肖像合成的一个关键因素。我们提供了一种显式控制眨眼的方法。基于2D面部坐标计算整个图像中眼睛区域的百分比,并使用这个比率(通常范围在0%到0.5%之间)作为一维眼睛特征 e e e

在NeRF网络上对这个眼睛特征进行条件约束,并表明这种简单的修改足以使模型通过普通的RGB损失学习眼睛的动态。在测试时,我们可以轻松调整眼睛百分比以控制眨眼。

头部总体表示

结合上述的分析,头部NeRF的表示可用下述公式表示:

c , σ = M L P ( f , g , e , i ) c, \sigma = MLP(f, g, e, i) c,σ=MLP(f,g,e,i)
其中 i i i是一个潜在的外观嵌入。

躯干模型

相比于头部区域,躯干区域近乎接近静态,只包括一些轻微的动作。
躯干模型是一个伪3D形变模型,实际上可以看作是一个基于形态的动态NeRF模型的2D版本,轻量级且高效率。

相比于从每条摄像射线取样一系列的点,我们仅仅从图像空间像素坐标 x t ∈ R 2 x_{t} \in \mathbb{R}^{2} xtR2中取样一个点即可。然后采用一个MLP预测形变 Δ x = M L P ( x t , p ) \Delta x = MLP\left( x_{t}, p \right) Δx=MLP(xt,p),头部姿态 p p p作为一个辅助变量有助于生成躯干运动和同步运动同步的形变。紧接着形变的坐标被喂入到一个2D特征网格编码器中,得到躯干特征 f t = E t o r s o 2 ( x t + Δ x ) f_{t} = E_{torso}^{2}\left( x_{t} + \Delta x \right) ft=Etorso2(xt+Δx)。最后另一个MLP被用于生成躯干颜色和alpha值 c t , α t = M L P ( f t , i t ) c_{t}, \alpha_{t} = MLP \left(f_{t}, i_{t} \right) ct,αt=MLP(ft,it),其中 i t i_{t} it是一个潜在外观嵌入,用于引入更多的模型容量。

loss

在这里插入图片描述
在这里插入图片描述

结果

将RAD-NeRF与MakeItTalk、wav2lip和AD-NeRF等算法进行了结果比较,如下图所示。RAD-NeRF在大多数指标上表示最好,并具有实时推理FPS。RAD-NeRF方法相比于基准AD-NeRF推理速度提高了约500倍,并且收敛速度也提高了约5倍。
在这里插入图片描述
论文中对头部建模的backbone模型的不同设置进行了实验:

  1. 仅使用MLP的隐式backbone(implicit backbone only using MLPs)我们采用与AD-NeRF相似的骨干网络,但使用最大占用网格剪枝进行加速。
  2. 具有较小MLP的组合音频空间特征网格(Composed audio-spatial feature grid with smaller MLPs)。使用普通的5D网格编码器对5D音频空间坐标进行编码。
  3. 具有较小MLP的分解音频空间特征网格。(Decomposed audio-spatial feature grid with smaller MLPs.)论文中测试了基于变形和调制的动态建模策略

在这里插入图片描述

论文中对每条射线的最大采样点数进行了实验。与一般的3D场景不同,人类头部更简单,需要更少的采样点才能达到良好的渲染质量。如下图所示,每条射线16个采样点足以合成逼真的图像,同时保持快速的推理速度。
在这里插入图片描述
RAD-NeRF相比于AD-NeRF算法,对视频编辑时,除了头部姿态和更换背景之外,还增加了眼部控制。

在这里插入图片描述

参考

  1. Real-time Neural Radiance Talking Portrait Synthesis via Audio-spatial Decomposition

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

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

相关文章

关于Kinect 互动沙盘 深度图 Shader Graph 分层

把Kinect的深度图穿给Shader Graph using com.rfilkov.kinect; using UnityEngine; using UnityEngine.UI; public class GetDepthTex : MonoBehaviour { public Material Mat_SandTable; void Update() { Mat_SandTable.SetTexture("_MainTex"…

LabVIEW串口通信的激光器模块智能控制

LabVIEW串口通信的激光器模块智能控制 介绍了通过于LabVIEW的VISA串口通信技术在激光器模块控制中的应用。通过研究VISA串口通信的方法和流程,实现了对激光器模块的有效控制,解决了数据发送格式的匹配问题,为激光器模块的智能控制提供了一种…

Open CASCADE学习|几何数据结构

在几何引擎内一般把数据分成两类:几何信息与拓扑信息。二者可以完整地表达出实体模型,彼此相互独立、又互相关联。几何信息是指构成几何实体的各几何元素在欧式空间中的位置、大小、尺寸和形状信息。例如一条空间的直线,可以用两端点的位置矢…

019—pandas 计算实验仪器正常运行周期时长

需求: 对指定两个状态作为一个周期,并计算出周期内的差值,写到周期结束所在的行上。pandas 非常适合实现此类有着较为复杂逻辑的问题。 思路: 这个问题的难点是状态的不规律性,如何才能准确找出所有 T 和 C 的周期。…

python 打包 apk

转换之前python代码需要使用指定的框架才能转换,列如:kivy from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Buttonimport time import pyautogui import threadingstatus False# 这是一个将被线程执…

本博客工程源码总目录----方便你快速找到自己喜欢的项目

目录 1、前言2、本人项目总分类3、FPGA图像处理类项目-->快速查找3.1、图像采集-->MIPI视频类3.2、图像采集-->SDI视频类3.3、图像采集-->PAL视频类3.4、图像采集-->Cmeralink视频类3.5、图像转换-->LVDS视频转换3.6、图像缩放(纯Verilog版本HLS版…

QEMU开发入门

1. 简介 QEMU(Quick EMUlator)是一个开源的虚拟化软件,它能够模拟多种硬件平台,并在这些平台上运行各种操作系统。QEMU可以在不同的主机架构之间进行虚拟化,例如x86、ARM、PowerPC、Risc-V等。QEMU是一个功能强大且灵…

【竞技宝jjb.lol】LOL:wayward奎桑提主宰团战 WE2-1力克IG

北京时间2024年2月24日,英雄联盟LPL2024春季常规赛继续进行,昨日共进行三场比赛,第二场比赛由IG对阵WE。本场比赛双方前两局战至1-1平,决胜局WE中期抓住IG失误后拿下大龙奠定胜局,最终WE2-1力克IG。以下是本场比赛的详…

二次元风格个人主页HTML源码

源码介绍 直接上传服务器压缩包解压就完事了,修改index.html内代码即可,注释写的很全,替换图片在文件夹img,只有前端,没有后台,大佬如果需要,可以自行添加后台。本源码非常适合个人工作室主页。…

利用psutil库检查脚本是否在运行

摘要 如果要判断某一脚本是否在运行,可以通过psutil库获取所有进程的cmdline,并判断指定的文件名是否在cmdline中。 目录 1.psutil库简介 2.检查代码及说明 2.1检查思路 2.2异常捕获 2.3执行方法 1.psutil库简介 psutil 是一个跨平台(…

Optimization for Deep Learning

Notations: : model parameters at time step or : gradient at used to compute : momentum accumulated from time step to time step , which is used to cpmpute Optimization What is Optimization about? 找到一组参数,使得 最小,或者说是…

内容安全补充

第十一天 密码学 近现代加密算法 古典加密技术 --- 算法保密原则 近现代加密技术 --- 算法公开,密钥保密 对称加密算法,非对称加密算法 对称加密 --- 加密和解密的过程中使用的是同一把密钥。 所以,对称加密所使用的算法一定是一种双向…

概率基础——指数分布

概率基础——指数分布 介绍 指数分布是一种连续概率分布,描述了独立随机事件之间的时间间隔。它常被用来模拟随机事件的等待时间,例如到达下一位顾客的等待时间、设备故障的间隔时间等。指数分布具有无记忆性的特点,即在给定时间内没有发生…

*MYSQL--索引--内部原理

MYSQL的索引根据功能,主要有三大类型: 1.HASH索引 2.二叉树 3.BTREE索引 一:HASH索引 1.内部原理: 在设置了某列为索引列之后,并且开始或者将要在相应索引列创建数据的时候,系统通过某种算法 F(X) 自动计算出来一个十六进制的哈希值,这个哈希值能够对应相应的字段值 所以…

单片机51 输入和输出

一、IO口基本概念介绍 单片机的IO口(Input/Output口)是连接单片机与外部电路或设备的接口。单片机的IO口可以分为输入口和输出口两种,用于控制和监测外部设备的状态。 1. 输入口:单片机的输入口用于接收外部电路或设备的信号。输…

C++的string容器->基本概念、构造函数、赋值操作、字符串拼接、查找和替换、字符串比较、字符存取、插入和删除、子串

#include<iostream> using namespace std; #include <string> //string的构造函数 /* -string(); //创建一个空的字符串 例如: string str; -string(const char* s); //使用字符串s初始化 -string(const string& str); //使…

Linux安装jdktomcatMySQl一战完成

一、jdk安装具体步骤 1、查询是否有jdk java -version 2、进入opt目录 cd /opt/ 连接服务器工具 进入opt目录&#xff0c;把压缩文件上传 查询是否查询成功 进入解压到的目录 cd /usr/local/创建新文件夹 mkdir java 再回到opt目录进行解压 cd /opt 解压到刚刚创建的文…

springboot邮箱注册

1.准备工作 操作之前准备两个邮箱 我准备了网易邮箱和QQ邮箱&#xff0c;网易邮箱用来发送验证码&#xff0c;QQ邮箱用来做注册&#xff08;希望大家和我一样&#xff0c;不然可能会出错 &#xff09; 发送验证码的邮箱需要开启一些设置&#xff0c;否则不…

CSS 字体和文本详解

CSS 字体和文本详解 字体设置 如果字体名有空格&#xff0c;使用引号包裹。建议使用常见字体&#xff0c; 否则兼容性不好。字体名称可以用英文&#xff0c;也可以用中文&#xff0c; 推荐使用英文。 示例代码: 运行结果: 字体大小 不同的浏览器默认字号不一样&#xff0c;…

多线程相关(4)

线程安全-下 使用层面锁优化减少锁的时间&#xff1a;减少锁的粒度&#xff1a;锁粗化&#xff1a;使用读写锁&#xff1a;使用CAS&#xff1a; 系统层面锁优化自适应自旋锁锁消除锁升级偏向锁轻量级锁重量级锁 ThreadLocal原理ThreadLocal简介原理ThreadLocal内存泄漏 HashMap…