说话人脸合成新框架NeRF-AD,使图像生成质量和嘴型同步提升

论文题目:

NeRF-AD: Neural Radiance Field with Attention-based Disentanglement for Talking Face Synthesis

论文作者:

Chongke Bi, Xiaoxing Liu, Zhilei Liu

导读:本文提出了一种新的说话人脸合成框架,该框架在NeRF中加入了基于注意力的解耦模块,从而可以使NeRF在渲染重建过程中,图像生成质量和嘴型同步提高都有得到不同程度的提高。©️【深蓝AI】编译

1. 方案提出

由音频驱动的说话人脸合成(talking face synthesis)是多维信号处理和多媒体邻域中的研究热点之一。通过引入神经辐射场(NeRF)可以增强生成人脸的真实性及3D效果,然而现阶段大部分基于NeRF的方法存在以下两种较为明显的缺陷:

1)NeRF本身包含一系列复杂的学习任务但缺乏监督式的多模态特征融合方法。

2)不能精准地将音频映射到由语音运动相关的面部区域。

在这里插入图片描述图1|NeRF-AD与部分算法对比效果©️【深蓝AI】编译

本文在基于NeRF的说话人脸合成框架中,引入基于注意力机制的面部解耦模块,将经过面部动作单元(AU)处理过的输入人脸信息分解为音频面部(Audio-face)和身份面部(Identity-face)两部分,为了准确衡量音频和说话人脸的对应关系,只使用音频面部与音频特征进行特征融合,并使用AU信息对融合过程进行监督。大量的定性和定量实验表明,本文提出的NeRF-AD在生成逼真说话人脸视频方面优于SOTA(包含图像质量和嘴形同步)。

2. 技术要点

NeRF-AD整体框架如图2所示,其中灰色区域表示基于注意力的解耦模块,主要是将输入的说话人脸分解为音频面部(Audio-face)和身份面部(Identity-face)。特征提取和融合模块用于从Audio-face中提取身份特征,编码器部分用于提取Audio-face特征,然后将Audio-face特征与DeepSpeech模块提取出的音频特征进行融合,解码器生成由AU信息监督下的特征图,特征编码器随后生成融合后的Audio-face特征向量,最后以身份特征与Audio-face特征向量为条件接入NeRF准确渲染说话人脸图像。

在这里插入图片描述图2|NeRF-AD整体框架©️【深蓝AI】编译

2.1 Attention-based Disentanglement(基于注意力的解耦方法)

使用基于注意力的解耦模块将图像Iid分解为Audio-face与Identity-face(图2中的灰色部分),在这个模块中,将调整尺寸后的Iid面部区域输入到AU-Attention模块中,得到掩码A,其中A定义为一个面部区域,该区域由语音引起的人脸运动相关部分组成。

AU-Attention模块的具体结构如图3所示,整体结构由四个分支构成:
掩码生成器GM(蓝色及绿色矩阵组成)用于生成带有注意力的掩膜,考虑到人脸解耦任务缺少相应的数据集,本文采用无监督方法,形变生成器GW(由蓝色和黄色矩阵组成),AU分类器(粉色矩阵表示)和鉴别器(灰色矩阵)用来辅助GM的学习。经过预训练之后,只保留GM用于AU-Attention模块生成A。

在这里插入图片描述图3|AU-Attetion框架©️【深蓝AI】编译

2.2 Feature Extraction and Fusion of Audio-face and Identity-face(Audio-face与Identity-face特征提取与融合)

针对于身份面部 f i d − f a c e f_{id-face} fidface,本文使用特征提取与融合模块来提取身份特征 f i d f_id fid,而针对于音频面部 f a u d − f a c e f_{aud-face} faudface,使用编码器进行音频面部特征的提取,DeepSpeech则用于提取音频特征 f a f_a fa在此基础之上将所提取的特征融合后输入到解码器中,这里用AU损失和重建损失来监督多模态特征的融合过程,首先AU损失由两部分组成( L b c e L_{bce} Lbce L d i c e L_{dice} Ldice):

L b c e = − 1 n A U ∑ i = 1 n A U w i [ x i l o g x ^ i + ( 1 − x i ) l o g ( 1 − x ^ i ) ] L_{bce}=-\frac{1}{n_{AU}}\sum_{i=1}^{n_{AU}}w_i[x_ilog\hat{x}_i+(1-x_i)log(1-\hat{x}_i)] Lbce=nAU1i=1nAUwi[xilogx^i+(1xi)log(1x^i)]左右滑动查看完整公式

其中 x i x_i xi和带有上标符号的 x i x_i xi都用来表示第 i i i个AU标签(含义不同),这里的标签都使用OpenFace进行提取,为了减少AU之间的相关性对模型训练的影响,在公式中设置了权重,同时优于一些AU在训练集中很少出现,可能会影响模型的预测结果,引入了 L d i c e L_{dice} Ldice

L d i c e = 1 n A U ∑ i = 0 n A U w i [ 1 − 2 x i x ^ i + ϵ x i 2 + x ^ i 2 + ϵ ] L_{dice}=\frac{1}{n_{AU}}\sum_{i=0}^{n_{AU}}w_i[1-\frac{2x_i\hat{x}_i+\epsilon}{x_i^2+\hat{x}_i^2+\epsilon}] Ldice=nAU1i=0nAUwi[1xi2+x^i2+ϵ2xix^i+ϵ]重建损失表示为:

L r e c = ∣ ∣ I f u s − a f − I ^ f u s − a f ∣ ∣ L_{rec}=||I_{fus-af}-\hat{I}_{fus-af}|| Lrec=∣∣IfusafI^fusaf∣∣

也就是真值与解码器输出值之间的 L 1 L_1 L1距离。

2.3 Nerual Radiance Field for Talking Face Synthesis(NeRF用于说话人脸的合成)

本文提出了一种有条件(音频面部及身份特征)的NeRF用于说话人脸的合成,也就是说,隐函数 F θ F_θ Fθ的输入包含了条件、3D位置 I I I和视图方向 d d d三部分:

F θ : ( l , d , f i d , f ^ a u d − f a c e ) → ( c , σ ) F_\theta:(l,d,f_{id},\hat{f}_{aud-face})\rightarrow(c,\sigma) Fθ:(l,d,fid,f^audface)(c,σ)

计算图像中每个像素的颜色 C n C_n Cn的过程为:

C n ( r ; f i d , f ^ a u d − f a c e ) = ∫ t n t f σ ( t ) ⋅ c ( t ) ⋅ T ( t ) d t C_n(r;f_{id},\hat{f}_{aud-face})=\int_{t_n}^{t_f}\sigma(t)\cdot c(t)\cdot T(t)dt Cn(r;fid,f^audface)=tntfσ(t)c(t)T(t)dt左右滑动查看完整公式

其中 t f t_f tf t n t_n tn和分别表示相机射线的远近界限, T ( t ) T(t) Tt表示透射率,在积分的过程中使用损失函数 L p h o L_{pho} Lpho额最小化生成的颜色 C n C_n Cn和真值的重建光度误差:

L p h o = ∑ r ∈ R ∣ ∣ C n ( r ; θ , f i d , f ^ a u c − f a c e − C g ) ∣ ∣ 2 L_{pho}=\sum_{r\in R}||C_n(r;\theta,f_{id},\hat{f}_{auc-face}-C_g)||^2 Lpho=rR∣∣Cn(r;θ,fid,f^aucfaceCg)2

3. 实验结果

本文所设计的实验包括定量分析、定性分析和消融实验三个部分:

3.1 定量分析:

首先将本文提出的方法与最先进的基于NeRF(表1中Ne:√)的方法进行比较(GeneFace DFF AD-NeRF NeRF)。在分析的过程中,由于PSNR在模糊图像上可能得到更高的值,因此更应该关注的是其他评价指标,而NeRF-AD在其他五个指标中表现最好。

其次针对于无NeRF(表1中Ne:×)的方法进行比较,与它们相比,本文的方法显著提高了图像质量,其在AU Acc和LMD-79中表现最佳。

在这里插入图片描述表1|NeRF-AD与各类方法定量对比©️【深蓝AI】编译

3.2 定性分析:

从图4可以看出,本文提出的方法在嘴唇运动方面最接近真实值。

在这里插入图片描述图4|NeRF-AD与各类方法的定性对比©️【深蓝AI】编译

3.3 消融实验:

消融实验包含了两个方面的内容:首先是NeRF-AD中不同迭代次数的影响,然后是NeRF-AD中不同模块的影响。从表2中可以看出,当模型仅迭代4k和10k次时,本文提出的模型在图像质量和唇同步方面都优于其他模型,这表明NeRF-AD模型在具有最高的学习效率,能够在相同数量的迭代中生成最准确的人脸。从表3中可以看出,在逐步消除模型中组件的过程中,图像生成质量下降,唇同步降低。

在这里插入图片描述
表2|不同迭代次数下各类方法的结果对比©️【深蓝AI】编译

在这里插入图片描述
表3|NeRF-AD消融实验结果©️【深蓝AI】编译

4. 结论

本文主要贡献在于提出了一种基于注意力机制的解耦NeRF说话人脸合成方法,将输入图像人脸部分进行分解,选择其中一种信息与音频信息进行多模态融合,同时使用带有注意力的AU进行监督,这在一定程度上减少了原NeRF框架中较为冗杂的工作量,解耦面部特征也可以更为有效地进行说话人面部的合成。

编译|Lean_loves_lulu

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

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

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

相关文章

C语言递归与迭代并举:双重视角下的C语言阶乘计算实现

引言 计算一个正整数的阶乘是常见的数学问题。阶乘的定义为:n的阶乘(记作n!)是所有小于及等于n的正整数的乘积。例如,5的阶乘(5!)就是54321120。下面我们将通过一个使用递归方法实现阶乘的C语言代码示例&am…

图解Linux虚拟文件系统(VFS)之关系篇

目录 1.什么是虚拟文件系统? 2.Linux系统文件树 3.文件系统注册 4.文件系统挂载 4.1 索引挂载点 4.2 创建新文件系统挂载实例 4.3 新旧挂载实例对接 总结: 大家好,今天和大家探讨一下Linux虚拟文件系统,虚拟文件系统是我一…

人脸识别的多样化和稀疏关注对姿势变化和遮挡具有鲁棒性

DSA-Face: Diverse and Sparse Attentions for Face Recognition Robust to Pose Variation and Occlusion 一、创新点 1.提出了成对自我对比注意力来强制模型提取不同的局部特征; 2.设计注意力稀疏性损失是为了鼓励注意力图中的稀疏反应,阻止对分散注意…

LeetCode:141和142,环形链表之追及相遇和快慢指针的运用

这两个题是相关联的,主要做法为哈希和快慢指针,当然像博主我,不看解析只会O(n^2)的暴力遍历,太惨了,不过,快慢指针还是很好理解的,是一个追及的问题, 目录 …

基于STM32的DMA在外设数据交换中的应用案例

如何使用STM32的DMA在外设数据交换中实现高效的数据传输呢?下面,我将提供一个应用案例,涉及使用STM32的DMA在UART外设和内存之间进行数据传输的示例。 ✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进 ❤欢迎关…

【代码随想录】LC 1. 两数之和

文章目录 前言一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 前言 本专栏文章为《代码随想录》书籍的刷题题解以及读书笔记,如有侵权,立即删除。 一、题目 1、原题链接 1. 两数之和 2、题目描述 二、解题报告 1、思…

(6)Elastix图像配准:可视化配准工具

文章目录 前言一、配准工具1.1、基于Elastix的可视化配准工具1.1.1、elastix-napari:基于napari的Elastix图像配准1.1.2、SlicerElastix:基于3D slice的Elastix图像配准1.1.3、BIRDS:基于ImageJ的Elastix双通道图像配准 1.2、基于ITK开发的配…

input框前面名字长短不一时,让上下input框对齐方法

没设置之前 设置之后&#xff1a; 代码如下&#xff1a; <style>div{width: 500px;}label {display: block; /* 设置 label 元素为块级元素 */text-align: right; /* 设置文本右对齐 */margin-bottom: 10px; /* 设置标签之间的间距 */} </style> </head><…

springboot 文件差异化对比以及可视化展示

maven依赖 <!-- 文件内容对比--><dependency><groupId>io.github.java-diff-utils</groupId><artifactId>java-diff-utils</artifactId><version>4.11</version></dependency>创建Diff 工具类 package com.system.ut…

C++ copy()函数详细介绍

copy() 是一个标准库函数&#xff0c;位于 头文件中。它用于将一个容器中的元素复制到另一个容器中&#xff0c;或者将一个范围内的元素复制到另一个范围中。 函数参数介绍 copy( first, last, d_first );first 和 last&#xff1a;表示输入范围的迭代器。 first 指向要复制的…

python脚本将照片按时间线整理

说明&#xff1a;有一次自己瞎折腾&#xff0c;然后把服务器相册搞崩了&#xff0c;后来做了备份同步给找了回来&#xff0c;但是相册的时间线全乱了&#xff0c;看起来非常难受。所以就想通过文件夹的形式把照片重新分类&#xff0c;分类后的结构如下(红色字体为文件夹)&#…

openmax

通过EmptyThisBuffer传递未解码的buffer给component&#xff0c;component收到该命令后会去读取input port buffer中的数据&#xff0c;将其组装为帧之后进行解码&#xff0c;buffer处理完成后会通过EmptyBufferDone通知上层输入使用完成&#xff0c;上层收到命令可以继续送输入…