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

news/发布时间2024/5/15 18:47:37

文章目录

    • 前言
    • 模型框架
      • 动态的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.bcls.cn/Bulb/3915.shtml

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

相关文章

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(一)

在我们开始探索人工智能的世界时,了解如何与之有效沉浸交流是至关重要的。想象一下,你手中有一把钥匙,可以解锁与OpenAI的GPT模型沟通的无限可能。这把钥匙就是——正确的提示词(prompts)。无论你是AI领域的新手&#…

Linux线程同步(3)生产者与消费者、条件变量与信号量

1.生产者与消费者的概念 生产者与消费者(Producer-Consumer)问题,是一个经典的并发编程问题。在这个问题中,涉及到两类进程:生产者和消费者。生产者负责生产数据,并将其放入一个缓冲区中;消费者…

C# (WebApi)整合 Swagger

SpringBoot-整合Swagger_jboot整合swagger-CSDN博客 C# webapi 也可以整合Swagger webapi运行其实有个自带的HELP页面 但是如果觉得UI不好看,且没办法显示方法注释等不方便的操作,我们也可以整合Swagger 一、使用NuGet控制台安装Swagger 在菜单中选择…

网络安全笔记总结

IAE引擎 1.深度检测技术--DFI和DPI技术 DFI和DPI都是流量解析技术,对业务的应用、行为及具体信息进行识别,主要应用于流量分析及流量检测。 DPI:深度包检测技术 DPI是一种基于应用层的流量检测和控制技术,对流量进行拆包&#x…

【Spring】 AOP面向切面编程

文章目录 AOP是什么?一、AOP术语名词介绍二、Spring AOP框架介绍和关系梳理三、Spring AOP基于注解方式实现和细节3.1 Spring AOP底层技术组成3.2 初步实现3.3 获取通知细节信息3.4 切点表达式语法3.5 重用(提取)切点表达式3.6 环绕通知3.7 切…

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图:二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶:辅助线、注释和子图三维散点图进阶:动画效果和交互性散点图矩阵进阶:调整样式和添加密度图总结与展…

鸿蒙开发(五)鸿蒙UI开发概览

从用户角度来讲,一个软件拥有好看的UI,那是锦上添花的事情。再精确的算法,再厉害的策略,最终都得通过UI展现给用户并且跟用户交互。那么,本篇一起学习下鸿蒙开发UI基础知识,认识下各种基本控件以及使用方式…

python 3.7.3的安装

参考 Linux安装Python3.7-良许Linux教程网 (lxlinux.net) 1、Index of /ftp/python/3.7.9/ 1、安装gcc,yum -y install gcc 2、 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel…

Llama2模型的优化版本:Llama-2-Onnx

Llama2模型的优化版本:Llama-2-Onnx。 Llama-2-Onnx是Llama2模型的优化版本。Llama2模型由一堆解码器层组成。每个解码器层(或变换器块)由一个自注意层和一个前馈多层感知器构成。与经典的变换器相比,Llama模型在前馈层中使用了不…

vue3 toRefs之后的变量修改方法

上效果 修改值需要带上解构之前的对象名obj&#xff0c; changeName:()>{ // toRefs 解决后变量修改值方法&#xff1a; 解构前变量.字段新值 obj.name FEIFEI; } } 案例源码 <!DOCTYPE html> <html> <head><me…

普中51单片机学习(十一)

独立按键 独立按键原理 按键在闭合和断开时触电存在抖动现象 硬件消抖电路如下 实验代码 #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16;void delay(u16 i) {while(i--); } sbit ledP2^0; sbit k1P3^1;void keypro() {if(k10){delay(1…

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘

最近微智启软件工作室在运行yolov9目标检测的detect.py测试代码时&#xff0c;报错&#xff1a; File “G:\down\yolov9-main\yolov9-main\detect.py”, line 102, in run pred non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_detmax_det) Fil…

css实现悬浮卡片

结果展示 html代码 <!doctype html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <meta name"viewport" content"…

《图解设计模式》笔记(二)交给子类

三、Template Method模式&#xff1a;将具体处理交给子类 示例程序类图 public static void main(String[] args) {// 生成一个持有H的CharDisplay类的实例AbstractDisplay d1 new CharDisplay(H);// 生成一个持有"Hello, world."的StringDisplay类的实例AbstractD…

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …

PNPM 批量检查和更新项目依赖

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【前端素材】推荐优质后台管理系统Frest平台模板(附源码)

一、需求分析 定义 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具&#xff0c;通常由授权用户&#xff08;如管理员、编辑人员等&#xff09;使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作&#xff0c;并…

Apache Commons开源的工具库介绍

Apache Commons 是 Apache 软件基金会主持的一个项目&#xff0c;旨在提供一系列可重用的 Java 组件。这些组件覆盖了从数据封装、文本处理到网络通信等各个方面&#xff0c;是 Java 开发中常用的一系列工具库。Apache Commons 项目下的各个库通常以 "commons-" 开头…

神经网络系列---分类度量

文章目录 分类度量混淆矩阵&#xff08;Confusion Matrix&#xff09;&#xff1a;二分类问题二分类代码多分类问题多分类宏平均法:多分类代码多分类微平均法&#xff1a; 准确率&#xff08;Accuracy&#xff09;&#xff1a;精确率&#xff08;Precision&#xff09;&#xf…

浅谈SpringMVC

什么是MVC模式 MVC&#xff1a;MVC是一种设计模式 MVC的原理图&#xff1a; 分析&#xff1a; 1&#xff1a;M-Model 模型&#xff08;完成业务逻辑&#xff1a;有javaBean构成&#xff0c;servicedaoentity&#xff09; 2&#xff1a;V-View 视图&#xff08;做界面的展示…
推荐文章