【数字人】4、AD-NeRF | 使用 NeRF 来实现从声音到数字人人脸的直接驱动(ICCV2021)

2023-10-18 20:15

本文主要是介绍【数字人】4、AD-NeRF | 使用 NeRF 来实现从声音到数字人人脸的直接驱动(ICCV2021),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 适用于 talking head 的神经辐射场
      • 2.2 使用辐射场来进行体渲染
      • 2.3 独立 NeRF 表达
    • 三、效果

论文:AD-NeRF: Audio Driven Neural Radiance Fields for Talking Head Synthesis

代码:https://github.com/YudongGuo/AD-NeRF

出处:ICCV2021

贡献:

  • 提出了基于 NeRF 的 talking head 生成, 不借助中间特征,不会导致信息丢失(消融实验也证明了这种直接映射的方式能更准确的捕捉唇部运动)
  • 使用两个解耦的分支来分别对 head 和 torso 建模,能保证生成的结果更自然
  • 能够进行姿态控制和替换背景,这个功能很实用

一、背景

Audio-driven 的说话人合成方法可以看成从 audio 到 visual face 的跨模态的特征映射

之前的很多方法都使用的 GAN,比如利用 3D face 或 2D landmark 作为中间表征,来对声音信号和面部形变作为中间桥梁,进行更简单的建模

但这样也会导致很多信息丢失,可能会让生成的面部形变和原始的声音信号之间缺乏正确的联系,为了避免一些误关联,很多方法只对嘴部建模,保持头部不动。

为了解决现有方法的问题,本文作者提出了基于 NeRF 的方法——AD-NeRF

  • 使用 audio-driven 神经辐射场来建模 cross-modal 的特征映射,且不使用额外的中间表达
  • 作者不使用 3D face 或 2D landmark 来对面部建模,而是直接使用 NeRF 来表达 talking head 的场景,同时考虑了 head 和 body 的运动
  • 本文方法由于使用的事逐点建模的方法,所以比 GAN-based 的方法效果更好,质量更高,更保真

二、方法

在这里插入图片描述

总体框架如图 1,输入使用的是一个视频序列:

  • 首先,对每帧进行 parsing map 提取,对声音进行特征提取
  • 然后,分别建模隐式函数来建模声音和 head 的关系、torso 的关系
  • 最后,使用得到的颜色和密度进行渲染,得到 talking head

2.1 适用于 talking head 的神经辐射场

作者使用的是 conditional 神经辐射场来生成 talking heads,使用 audio 作为 condition

NeRF 其实就是一个映射函数,输入声音、3D 空间位置、每个位置的方向,输出该位置的颜色和密度(此处还额外的将每个声音 a 对应的 semantic feature 作为输入,semantic feature 在这里应该就是相邻 16 帧的信号)

在这里插入图片描述

Semantic audio feature

为了从声音信号中抽取到更有意义的语义信息,作者使用了 DeepSpeech 模型为每个 20ms 的 audio clip 来预测出 29-d feature code

本文中,连续的 audio feature 会送入时序的卷积网络来提出噪声信号,也就是使用从当前帧左右相邻的 16 帧的声音得到的特征 a ∈ R 16 × 19 a \in R^{16 \times 19} aR16×19 来表达当前时刻的声音信号。

2.2 使用辐射场来进行体渲染

使用 F θ F_{\theta} Fθ 得到了颜色和密度后,可以使用体渲染的方法来得到每个位置的颜色和密度

每个 ray r(t) \text{r(t)} r(t) 映射到某个位置上的期望的颜色为:

在这里插入图片描述

2.3 独立 NeRF 表达

作者对 head 和 torso 分别进行训练,因为两者的运动方式是不同的。

在这里插入图片描述

  • 第一步,使用现有的方法来将图片分成三部分:static background、head、torso
  • 第二步,对 head 区域训练 F h e a d F^{head} Fhead,训练该步骤时,只将 head 当做前景,其他的都当做背景(包括 torso),会使用 head pose Π \Pi Π 。一个 ray 的最后一个采样点被认为是落在背景上的
  • 第三步,对 head 进行 render,重建好的 head 和 background 会合起来,被当做背景
  • 第四步,对训练 F t o r s o F^{torso} Ftorso

三、效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这篇关于【数字人】4、AD-NeRF | 使用 NeRF 来实现从声音到数字人人脸的直接驱动(ICCV2021)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234907

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time