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

news2025/1/13 17:30:48

文章目录

    • NeRF
    • AD-NeRF
      • 模型
        • NeRF
        • 体渲染
        • 个体NeRF表示
        • 背景和姿态编辑
      • loss
    • 参考

NeRF

将一个连续的场景表示为一个输入为5D向量的函数,这个函数为NeRF函数,它的输入由一个空间点的3D位置 x = ( x , y , z ) \mathbf{x} = \left( x, y, z \right) x=(x,y,z)和它的2D视角方向 d = ( θ , ϕ ) \mathbf{d} = \left( \theta, \phi \right) d=(θ,ϕ)组成,输出为对应3D位置的颜色 c = ( r , g , b ) \mathbf{c}=\left( r, g, b \right) c=(r,g,b)和体素密度 σ \sigma σ。NeRF函数用公式表示为 F : ( x , d ) → ( c , σ ) F : \left( \mathbf{x}, \mathbf{d} \right) \rightarrow \left(\mathbf{c}, \sigma \right) F:(x,d)(c,σ),在具体的实现中,可以使用一个MLP网络近似拟合NeRF函数。
NeRF表示
NeRF 函数得到的是一个3D空间点的颜色和密度信息,但用一个相机去对这个场景成像时,所得到的2D 图像上的一个像素实际上对应了一条从相机出发的射线上的所有连续空间点,因此需要通过渲染算法从这条射线上的所有点得到这条射线的最终渲染颜色。

体素密度 σ ( x ) \sigma\left( x \right) σ(x)可以解释为:一个射线终止于 x x x处的无穷小粒子的微分概率。
将一个相机射线表示为 r = o + t d \mathbf{r} = \mathbf{o} + t \mathbf{d} r=o+td,其中 o \mathbf{o} o为射线原点, d \mathbf{d} d为射线2D视角。 t t t的近端和远端边界分别表示为 t n t_{n} tn t f t_{f} tf T ( t ) T\left( t \right) T(t)为射线从 t n t_{n} tn t t t时的累积透射率(通俗点理解就是射线 t n t_{n} tn t t t一路上未击中任何例子的概率)。一条射线上的点是连续的,那么这条射线的颜色 C ( r ) C\left( \mathbf{r} \right) C(r)是可以通过积分的方式得到,用公式表示为:
在这里插入图片描述
从连续神经辐射场渲染视图需要估计虚拟相机中每个像素追踪相机射线的积分 C ( r ) C\left( \mathbf{r} \right) C(r),可以使用求积分的方式对 C ( r ) C\left( \mathbf{r} \right) C(r)进行数值估计。但是现实中,MLP只作用于离散位置集。

NeRF论文中提到了分层抽样的方法,将 [ t n , t f ] [t_{n}, t_{f}] [tn,tf]划分为 N N N个等分的区间,然后从每个区间中随机均匀地抽取一个样本。虽然使用了一组离散的样本估计积分,但是分层采样保证了采样位置的连续性,它能够使得优化过程中在连续的位置上对MLP进行评估。(直观地思路是在求积分的区域均匀地采样N个点进行近似计算,但这样的方式导致MLP只学习到了一系列离散点的信息,会限制NeRF的分辨率)。

i i i个采样点可以表示为:
在这里插入图片描述
基于这些采样点,将 C ( r ) C\left( \mathbf{r} \right) C(r)简化为:
在这里插入图片描述
其中 δ i = t t + 1 − t i \delta_{i} = t_{t+1} - t_{i} δi=tt+1ti为两个相邻样本之间的距离。

基于分段采样的渲染方式也是可微的。因此,基于这样的渲染方式,我们就可以用NeRF函数从任意角度中渲染出图片

AD-NeRF

AD-NeRF这篇论文收录于ICCV 2021,在神经辐射场的基础上提出一种直接将语音信号的特征送入到一个条件隐式函数以生成一个动态神经辐射场,然后利用体渲染(
volume rendering)从中合成与音频信号相对应的高保真头部视频和上半身视频。

具体来说,我们采用一个包含目标说话人视频和音频轨道的短视频序列作为输入。通过DeepSpeech模型提取音频特征和面部解析图,我们旨在构建一个音频条件隐式函数,该函数存储用于头部场景表示的神经辐射场。由于头部运动与上半身运动不一致,我们进一步将神经光线场表示分为两部分,一部分用于前景面部,另一部分用于前景躯干。这样,我们就可以从收集的训练数据中生成自然的头部视频序列。

论文主要包括三方面的贡献:

  1. 提出了一种音频驱动的头部说话方法,该方法无需任何可能导致信息丢失的中间模态,直接将音频特征映射到用于肖像渲染的动态神经辐射场。

  2. 为了能够生成更自然的头部说话结果,将人类肖像场景的神经辐射场分解为两个分支,分别建模头部和躯干。

  3. 借助音频驱动的NeRF,AD-NeRF能够实现头部视频编辑,比如姿势操纵和背景替换。

模型

下图是AD-NeRF模型的整体框架图,对于给定的一个人的肖像视频序列,训练两个神经辐射场来合成具有高保真度的头部说话视频,并使用体渲染进行合成。
在这里插入图片描述
在推理阶段,头部模型 F θ h e a d F_{\theta}^{head} Fθhead和躯干模型 F θ t o r s o F_{\theta}^{torso} Fθtorso都接受相同的输入参数,包括音频条件代码 a \mathbf{a} a和姿态系数 Π \Pi Π。体渲染过程将首先通过头部模型,为所有像素累积采样的密度和RGB值。渲染的图像期望在静态背景上覆盖前景头部区域。然后,躯干模型将通过预测躯干区域的前景像素来填充缺失的身体部位。

NeRF

AD-NeRF方法是一种使用条件隐式函数和额外的音频编码作为输入的条件光线场来生成头部说话视频。相比于标准的NeRF,除了视角方向 d \mathbf{d} d和3D位置 x \mathbf{x} x作为输入之外,又额外增加了语音 a \mathbf{a} a的语义特征作为饮食函数 F θ F_{\theta} Fθ的另一个输入, F θ F_{\theta} Fθ的公式表示为:

F θ ( d , x , a ) → ( c , σ ) F_{\theta} \left( \mathbf{d}, \mathbf{x}, \mathbf{a} \right) \rightarrow \left( \mathbf{c}, \sigma \right) Fθ(d,x,a)(c,σ)

语音语义特征:采用DeepSpeech模型预测每个20毫秒音频片段的29维特征代码。在具体实现中,将多个连续的音频特征帧联合送入时间卷积网络,以消除原始输入中的噪声信号。具体来说,使用来自十六个相邻帧的特征 a ∈ R 16 × 29 \mathbf{a} \in \mathbb{R}^{16 \times 29} aR16×29来表示音频模态的当前状态。

体渲染

在这里插入图片描述

Π \Pi Π用于将采样点变换到正则空间。在训练阶段,网络仅使用头部姿态信息,而不是任何3D面部形状。具体来说,首先使用粗网络来预测沿光线的密度,然后在精细网络中密度较高的区域中采样更多的点。

个体NeRF表示

将头部姿态纳入渲染过程的原因是:与静态背景相比,人体部位(包括头部和躯干)在每一帧中都在动态移动。因此,对于辐射场训练,将变形点从相机空间变换到正则空间是至关重要的。
为何要使用两个独立的神经辐射场(头部和躯干)来建模?
Gafni等人试图通过基于自动预测的密度将前景和背景解耦来处理动态运动,即对于穿过前景像素的分散射线,将使用高密度预测人体部位,而背景图像将被忽略,具有低密度。由于头部运动和躯干运动不一致,并且姿态参数 Π \Pi Π仅针对面部形状进行估计,因此将相同的刚性变换(rigid transformation)同时应用于头部和躯干区域将导致上半身出现不满意的渲染结果。

刚性变换,也称为欧几里德变换或欧几里德等距,是欧几里德空间的几何变换,它在每一对点之间保持欧几里得度量。这种变换只包括旋转、平移、反射或其中的任何序列,并且保持物体的形状和大小不变。换句话说,经过适当的刚性变换后,物体的形态和大小都将保持不变。

在这里插入图片描述

训练数据: 对于一个给定的人,假定录制摄像机和背景都是静态的,收集有关他的有音频的一小段视频序列,一般视频长度为3-5分钟,视频帧率为25fps。
数据预处理: 首先利用自动人脸解析方法将训练图像分为三部分:静态背景、头部和躯干。然后基于解析结果从每个帧中删除人类区域,计算所有背景图像的聚合结果,对于缺失的区域,我们使用泊松混合[34]来修复具有邻域信息的像素,构建一个无任务的干净背景图像。应用多帧光流估计方法来获取前额、耳朵和头发等近刚性区域中视频帧之间的密集对应关系,然后使用束调整来估计姿态参数。
训练: 训练个体NeRF时,分成两个阶段。
首先训练头部的隐式函数 F θ h e a d F_{\theta}^{head} Fθhead。将由解析图确定的头部区域视为前景,其余部分视为背景。头部姿态 Π \Pi Π应用于通过每个像素投射的射线上的采样点。假设射线上的最后一个样本位于具有固定颜色的背景上,即背景图像中像素的颜色与射线对应。然后,我们将 F θ h e a d F_{\theta}^{head} Fθhead的渲染图像转换为新的背景,并将躯干部分设置为前景。记下来继续训练第二个隐式函数 F θ t o r s o F_{\theta}^{torso} Fθtorso。对于躯干区域,没有可用的姿态参数。因此,我们假设所有的点在正则空间中并且将头部姿态 Π \Pi Π作为NeRF的额外条件输入。

背景和姿态编辑

由于两个神经辐射场都采用语义音频特征和姿态系数作为输入来控制说话内容和说话头部的运动,因此我们可以通过分别替换音频输入和调整姿态系数来实现音频驱动和姿态操纵的说话头部视频生成。由于我们将背景图像上对应的像素作为每条射线的最后一个样本,因此隐式网络学会预测低密度的前景样本值和高密度的前景像素值。这样,我们将前景和背景区域解耦,并且只需替换背景图像即可实现背景编辑。
在这里插入图片描述

loss

假设 I r ∈ R W × H × 3 I_{r} \in \mathbb{R}^{W \times H \times 3} IrRW×H×3为渲染图像, I g ∈ R W × H × 3 I_{g} \in \mathbb{R}^{W \times H \times 3} IgRW×H×3为真实图像,优化的目标则是减少 I r I_{r} Ir I g I_{g} Ig之间的重建误差,因此,损失函数公式如下所示:

在这里插入图片描述

参考

  1. AD-NeRF: Audio Driven Neural Radiance Fields for Talking Head Synthesis
  2. NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  3. YudongGuo/AD-NeRF

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

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

相关文章

C# Winfrom实现的肺炎全国疫情实时信息图

运行结果: using System; using System.Drawing; using System.Text; using NSoup; using NSoup.Nodes; using System.IO; using System.Net; using System.Text.RegularExpressions; using System.Windows.Forms;namespace Pneumonia {public partial class MainFo…

IO 作业 24/2/20

一、思维导图 二、习题 #include <myhead.h> int main(int argc, const char *argv[]) {FILE *fpNULL;FILE *fqNULL;pid_t pidfork();if(pid>0){if((fpfopen("./text.txt","r"))NULL){perror("fopen error");return -1;} if((f…

unity学习(33)——角色选取界面(原版)

10ARPG网络游戏编程实践&#xff08;十&#xff09;&#xff1a;角色选择UI及创建面板制作&#xff08;一&#xff09;&#xff08;流畅&#xff09;_哔哩哔哩_bilibili 角色选择界面教程中是这样的&#xff01;&#xff08;这个美工肯定是不能拿出去卖的&#xff0c;但是是有…

命令行窗口文本复制到 Word 格式保持不变

命令行窗口文本复制到 Word 格式保持不变 References 标题栏右键 -> 编辑 -> 标记 / 全选 标题栏右键 -> 编辑 -> 复制 粘贴到 Notepad 中&#xff0c;语言栏设置对应语言&#xff0c;格式可以保持不变 复制文本粘贴到 Excel 中 选中 Excel 中文本复制&#xf…

LeetCode21.合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 &#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 思路 创建一个新的链表头节点&#xff08;dummyNode&#xff09;和一个…

NVIDIA Corporation 在 GitHub 的官方主页

NVIDIA Corporation 在 GitHub 的官方主页 References https://github.com/NVIDIA References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Prometheus 教程

目录 一、简介二、下载安装1、安装 prometheus2、安装 alertmanager3、安装 grafana4、安装 node_exporter5、安装 mysqld_exporter 一、简介 Prometheus 是一个开源的系统监控和警报工具。它最初由 SoundCloud 开发&#xff0c;并于 2012 年发布为开源项目。Prometheus 专注于…

服务器遭受 DDoS 攻击的常见迹象有哪些?

服务器遭受 DDoS 攻击的现象很常见&#xff0c;并且有时不容易预防&#xff0c;有部分原因是它们的形式多种多样&#xff0c;而且黑客手段越来越隐蔽。如果您怀疑自己可能遭受 DDoS 攻击&#xff0c;可以寻找多种迹象。以下是 DDoS 攻击的5个常见迹象&#xff1a; 1.网络流量无…

星宸科技SSC369G 双4K高性价比AI IPC方案

一、方案描述 SSC369G 双4K高性价比AI IPC方案采用主芯片SSC369G&#xff0c;内核为CA55四核最高主频为1.5Ghz处理器。SOC内置集成一个64位的四核RISC处理器&#xff0c;先进的图像信号处理器&#xff08;ISP&#xff09;&#xff0c;高性能的H.265/H.264/MJPEG视频编解码器&a…

基于stm32F103的蜂鸣器周期发声实验

蜂鸣器作为一种声音报警器件,应用广泛。本实验基于stm32F103单片机,通过控制蜂鸣器的IO口电平电压,使其周期性地进行电平翻转,从而驱动蜂鸣器发出周期性的鸣叫声。该实验主要运用了stm32的GPIO和定时器TIM的相关功能,不仅可以巩固这些外设的使用,也可以通过改变时间参数,控制蜂…

利用iSCSI服务部署IP SAN网络存储服务

一、配置环境&#xff08;Vmware WorkStation虚拟环境&#xff09; 服务端与客户端OS&#xff1a;openEuler 22.03-LTS CPU&#xff1a;1U1C 内存&#xff1a;2G 硬盘&#xff1a;5个SCSI磁盘&#xff0c;其中一个作为系统盘&#xff0c;另外四个配置为RAID5阵列 服务器IP…

【论文精读】ESViT

摘要 基于transformer的SSL方法在ImageNet线性检测任务上取得了最先进的性能&#xff0c;其关键原因在于使用了基于对比学习方法训练单尺度Transformer架构。尽管其简单有效&#xff0c;但现有的基于transformer的SSL&#xff08;自监督学习&#xff09;方法需要大量的计算资源…

网络协议汇总

1.HTTP协议 1.认识URL 平时我们俗称的 "网址" 其实就是说的 URL URL中的字符只能是ASCII字符&#xff0c;但是ASCII字符比较少&#xff0c;而URL则常常包含ASCII字符集以外的字符&#xff0c;如非英语字符、汉字、特殊符号等等&#xff0c;所以要对URL进行转换。这个…

举例说明什么是人机耦合

在呼叫中心行业&#xff0c;人机耦合是指将计算机自动化技术与人工服务相结合&#xff0c;以提高呼叫中心的效率和服务质量。具体来说&#xff0c;它包括通过智能语音识别、自然语言处理、机器学习等技术实现自动应答、自动导航、自动响应等功能&#xff0c;以及将人工客服与智…

企业级 文件传输加密应用,干货分享

企业级 文件传输加密应用 简历一直在投&#xff0c;一直无音讯&#xff0c;今天我又从硬盘里翻出一个 好玩的加密软件&#xff0c;这个是 2017年的时候和荷兰某世界500强公司合作的小项目。 今天分享给大家 。 文章目录 企业级 文件传输加密应用1.目的2.软件介绍3.下载好 安装…

C++:C++入门基础

创作不易&#xff0c;感谢三连 &#xff01;&#xff01; 一、什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff…

MySql重要知识梳理

文章目录 一.索引1.索引概述2.索引优缺点3. 索引结构为什么InnoDB存储引擎选择使用Btree索引结构? 4.索引分类思考InnoDB主键索引的Btree高度为多高? 5. 索引语法1.索引语法2.sql性能分析1.SQL执行频率2.慢查询日志3.explain执行计划 3.索引使用规则1.最左前缀法则2.索引失效…

vue3组件通信方式汇总

前言&#xff1a;本文默认读者有JS基础和Vue基础&#xff0c;如果没有这个两个基础&#xff0c;可能阅读比较困难&#xff0c;建议先看下官方文档&#xff0c;当然&#xff0c;也欢迎评论交流&#x1f601; 通信方式总结 常见搭配形式 一、props&#xff08;使用频率最高&#…

Windows 自带的 Linux 子系统(WSL)安装与使用

WSL官网安装教程&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/install Windows 自带的Linux子系统&#xff0c;比用VM什么的香太多了。可以自己看官方教程&#xff0c;也可以以下步骤完成。 如果中间遇到我没遇到的问题百度&#xff0c;可以在评论区评论&#…

已解决Application run failed org.springframework.beans.factory.BeanNot

问题原因&#xff1a;SpringBoot的版本与mybiats-puls版本不对应且&#xff0c;spring自带的mybiats与mybiats-puls版本不对应 这里我用的是3.2.2版本的SpringBoot&#xff0c;之前mybiats-puls版本是3.5.3.1有所不同。 问题&#xff1a;版本对不上 解决办法&#xff1a;完整…