【AI数字人-论文】GeneFace++

文章目录

    • 前言
    • pipeline
      • Pitch-Aware Audio-to-Motion
      • Landmark LLE
        • LLE
        • Landmark LLE
      • Instant motion-to-video rendering
      • 结果对比

前言

  • 为了提高预测的面部关键点序列的长期时间一致性和自然度,我们提出了一个Pitch-Aware Audio-to-Motion音高感知的音频到动作模块。具体来说,我们将音高轮廓作为音频到动作映射的辅助特征。
  • 为了提高系统对多种面部运动的鲁棒性,我们提出了一种Landmark Locally Linear Embedding用于对预测的关键点进行后处理。
  • 为了提高渲染器的效率,我们提出了一个高效的动态NeRF,名为Instant Motion-to-Video模块。

pipeline

在这里插入图片描述
音高与面部表情高度相关。高且稳定的音高轮廓可能与大而稳定的嘴唇运动相关。引入pitch的两个优点:

  1. 大多基于NeRF的方法都是以语音后验图特征( phonetic posteriorgrams features)为语音特征用于训练,但是PPGs忽略了波形中的声学信息。因此音高轮廓之类的辅助声学特征有助于提高预测面部运动的表现力和时间一致性。
  2. GeneFace中DA Postnet性能不稳定,音高信息可以作为Postnet轻量级且有用的提示来处理面部关键点。

Pitch-Aware Audio-to-Motion

GeneFace++中的audio-to-motion模块包括Gene Face中的Audio2motion和DA Postnet两个模块。不同的是提取语音特征时,多了pitch encoder用于提取音高轮廓信息。
在这里插入图片描述
首先将连续的音高(基频)值以对数的形式离散化为几个离散标记,以确保音高的临时平滑性,并简化音高编码器的训练。随后,学习一组与离散音高标记相对应的音高嵌入,然后将该嵌入送入一个浅层的卷积网络中,以生成最终的音高编码。
在这里插入图片描述

Landmark LLE

基于NeRF的渲染器通常是从一个非常小的数据集(几分钟长的视频)中学习的,当面对OOD(out-of-distribution)标志时,渲染器可能会产生不准确的面部运动,甚至导致崩溃的渲染结果。GeneFace利用对抗性领域自适应来训练一个Postnet,将所有标志映射到NeRF的狭窄输入空间。然而,由于对抗性训练的不稳定性,理论上并不能保证每一帧都能正确投影到目标域,偶尔会出现不良情况,这对实际应用提出了稳健性的挑战。

受3DMM的启发,3DMM可以通过大约144个模板网格的线性组合来重建任意人脸。我们遵循经典LLE算法在面部表示流形上的主要思想:每个面部标志及其邻域在流形上是局部线性的,提出了一种基于流形投影的后处理方法,称为Landmark LLE(Landmark局部线性嵌入),该方法可确保每个预测的标志成功映射到(标志条件渲染器的输入空间的附近)。

LLE

流形学习(manifold learning)是一类借鉴了拓扑流形概念的降维方法。“流形”是指的是连在一起的区域,数学上,它指的是一组点,且每个点都有其邻域。给定任意一个点,其流形局部看起来像是欧几里得空间。换言之,它在局部空间有欧式空间的性质,能用欧式空间来进行距离计算。因此,很容易地在局部建立降维映射关系,然后再设法将局部关系推广到全局,进而进行可视化展示。
它的主要思想是将高维的数据映射到低维,使该低维的数据能够反映原高维数据的某些本质结构特征。

LLE(Locally Linear Embedding,局部线性嵌入)算法是一种非线性降维算法,它主要用于高维数据的维数约简。LLE的基本思想是假设数据在局部范围内是线性的,即每个数据点可以通过其近邻点的线性组合来重构。算法通过保持这种局部线性关系,将数据从高维空间映射到低维空间,同时尽量保持数据原有的拓扑结构不变。

LLE算法的主要步骤包括:

  1. 寻找每个样本点的近邻点,这些近邻点构成了该样本点的局部邻域。
  2. 根据局部邻域内的样本点,计算该样本点的局部重建权值矩阵,即每个近邻点对重构该样本点的贡献程度。
  3. 利用局部重建权值矩阵,将高维空间中的数据映射到低维空间,同时保持局部线性关系不变。
Landmark LLE

对于一个预测的3D面部标志(landmark) I ˉ ∈ R 68 × 3 \bar{I} \in \mathbf{R}^{68 \times 3} IˉR68×3,Landmark LLE的输出是 I ˉ ′ ∈ R 68 × 3 \bar{I}' \in \mathbf{R}^{68 \times 3} IˉR68×3 I ˉ ′ \bar{I}' Iˉ可以表示为 I ˉ ′ = ∑ k = 1 K ω k ∗ ⋅ I k \bar{I}'=\sum_{k=1}^{K}\omega_{k}^{*} \cdot I_{k} Iˉ=k=1KωkIk,其中 ω k \omega_{k} ωk是第 k k k个邻居的权重。

首先我们在GT landmark数据 D ∈ R N × 68 × 3 D \in \mathbf{R}^{N \times 68 \times 3} DRN×68×3中找到 I ˉ \bar{I} Iˉ的K个邻近landmark { I 1 , ⋯ , I K } ∈ D \{I_{1}, \cdots, I_{K}\} \in D {I1,,IK}D,然后通过最小化重建错误 ∥ I ˉ − I ˉ ′ ∥ \left \| \bar{I} - \bar{I}' \right \| IˉIˉ 寻找这些邻居的线性组合重建 I ˉ ′ \bar{I}' Iˉ。可表述为以下最小二乘法优化问题:
在这里插入图片描述
解上述公式可得到参数 w ∗ = { w 1 ∗ , ⋯ , w K ∗ } ∈ R K w*=\{w_{1}^{*},\cdots, w_{K}^{*}\} \in \mathbf{R}^{K} w={w1,,wK}RK
在这里插入图片描述在这里插入图片描述
在实际应用中,推理时,使用原预测landmark I ˉ \bar{I} Iˉ和重建的landmark I ˉ ′ \bar{I}' Iˉ的线性组合作为最后的动作表示,公式如下所示:
在这里插入图片描述
其中 α ∈ [ 0 , 1 ] \alpha \in [0,1] α[0,1]是平衡图像质量和脸部运动表示的权重。 α \alpha α越大,表示越接近GT数据分布,图像质量越好,越少的bad cases; α \alpha α越小,表示保留更多原预测landmark的信息,表示更多的多样性和脸部动作表示。
在这里插入图片描述
下图是可视化展示,可以看到,VAE预测得到的landmark不在特定人域中,VAE之后再经过postnet处理,预测的landmark大多数位于特定人域中,仍有一小部分bad cases,再经过LLE处理之后,预测的landmark全部位于特定人域中。
在这里插入图片描述

Instant motion-to-video rendering

  • 使用可学习的特征网格来编码3D空间信息。与通过密集的多层感知机(MLP)转发获取空间特征的普通NeRF相比,这种新范式可以通过在离散特征网格中进行线性插值,直接在连续的3D空间中查询特征,从而在训练和推理阶段都更加高效。因此我们利用可学习的3D网格来编码查询的位置。
  • 受Hyper-NeRF的启发,我们将输入的面部标志投影到基于网格的空间特征条件下的N维环境坐标中,这允许空间信息和标志条件的有效融合。一旦获得环境坐标,我们不是使用密集的多层感知机(MLP)查询标志特征,而是使用额外的N维可学习网格来提高效率。我们通过网格搜索经验性地将N设置为3,以平衡性能和效率。

最后,NeRF用公式表示:

F : ( f x , f l , d ) → c , σ F: \left( f_{x}, f_{l}, d \right) \rightarrow c, \sigma F:(fx,fl,d)c,σ
在这里插入图片描述

结果对比

在这里插入图片描述

  • 数字图像处理中,峰值信噪比(Peak Signal-to-Noise Ratio,简称 PSNR)是一个重要的评价参数,用于衡量图像的质量和噪声水平。一般来说,PSNR值越大,表示图像质量越好,噪声水平越低。
  • FID(Frechet Inception Distance score),是计算真实图像和生成图像的特征向量之间距离的一种度量。分数越低代表两组图像越相似。
  • LMD(Landmark Distance)是用于评估面部图像生成质量的指标,它用于度量生成的面部图像与真实面部图像之间的面部特征点的距离,以衡量生成的面部图像与真实面部图像之间的相似性。LMD得分越低,面部图像生成质量越高。

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

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

相关文章

Spring是怎么解决循环依赖的

首先先解释一下什么叫循环依赖 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于A 循环依赖在spring中是允许存在的,spring框架依据三级缓存已经解决了大部分的循环依赖 一级缓存:单例池,缓存已经经历了完整的…

Java字符串(包含字母和数字)通用排序

说明:本文章是之前查到的一篇安卓版的,具体原文路径忘记了。稍微改了一点,挺符合业务使用的! 一、看代码 /*** 包含数字的字符串进行比较(按照从小到大排序)*/private static Integer compareString(Stri…

Character包装类常用方法(Java)

Character包装类常用方法 Character 类是 char 基本数据类型的包装类,用于提供对字符数据的操作和封装。 1. isDigit(char ch) 方法示例: 判断指定字符是否是一个数字(0-9)。返回值为 boolean 类型。 char ch1 5; char ch2 …

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-LSTM-AdaBoost卷积长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于CNN-LST…

vue3 之 商城项目—layout静态模版结构搭建

layout—模块静态模版搭建 一般情况下我们会有nav区域,header区域,二级路由出口区域以及footer区域,如图 我们在开发的时候先把大模块搭建起来,再一步一步填充小模块 在layout下建文件,目录如下 在index.vue中把上…

基于springboot+vue+mysql员工宿舍管理系统

技术栈 jdk8springboot vueelement-plusMySQL 包含功能点 管理员端 登录员工管理宿舍管理留言板管理物品报修管理公告管理 员工端 登录首页个人中心物品报修留言板 功能截图(部分) 管理员 管理员登录 员工管理 宿舍管理 物品报修管理 公告管理 留言管理 员工 员工登录…

数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)

数据库管理145期 2024-02-05 数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)1 监控方式2 度量配置3 阻塞4 DG监控总结 数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205) 作者:胖头鱼的鱼缸&…

LeetCode、216. 组合总和 III【中等,组合型枚举】

文章目录 前言LeetCode、216. 组合总和 III【中等,组合型枚举】题目类型与分类思路 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖…

769933-15-5,Biotin aniline,用来标记和检测细胞膜上的特定蛋白质

您好,欢迎来到新研之家 文章关键词:769933-15-5,Biotin aniline,生物素苯胺 一、基本信息 产品简介:Biotin aniline, also known as Biotin aniline, is a molecular probe with strong reactivity. Its uniqueness…

Java设计模式-责任链模式

责任链模式 一、概述二、结构三、案例实现四、优缺点五、源码解析 一、概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门…

c# List集合操作帮助类

public class ListHelper { #region 赋值转换 /// <summary> /// A实体转换成B实体 /// </summary> /// <typeparam name"T"></typeparam> /// <typeparam name"K"></typep…

代码随想录-背包问题

01 背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包 定义&#xff1a;dp[i][j] 表示从下标为[0-i]的物品里任意取…

TreeSet 集合

TreeSet 集合 1. 概述2. 方法3. 遍历方式4. 两种排序方式4.1 默认排序规则/自然排序4.1.1 概述4.1.2 compareTo()方法4.1.3 代码示例14.1.4 代码示例2 4.2 比较器排序4.2.1 概述4.2.2 compare()方法4.2.3 代码示例14.2.4 代码示例2 4.3 排序方式的对比 5. 注意事项 文章中的部分…

LeetCode、62.不同路径的数目(一)【简单,动态规划或递归】

文章目录 前言LeetCode、62.不同路径的数目(一)【简单&#xff0c;动态规划或递归】题目描述与分类思路思路1&#xff1a;动态规划思路2&#xff1a;递归实现简洁写法补充&#xff1a;2024.1.30 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、…

程序员好用的软件/网页推荐

桌面&#xff1a;编程&#xff1a; VsCode 插件&#xff1a;python、通义灵码 写文章&#xff1a; PDF公式转MarkDown&#xff1a;https://mathpix.com/snipping-tool 欢迎推荐&#xff0c;持续更新

containerd中文翻译系列(六)内容流

内容流 containerd 的一个主要目标是创建一个可将内容用于执行容器的系统。 为了执行该流程&#xff0c;containerd 需要内容并对其进行管理。 本文档描述了内容如何流入 containerd、如何对其进行管理&#xff0c;以及在此过程中的每个阶段它存在于何处。 我们以从已知镜像 …

自学Java的第二十天

一&#xff0c;每日收获 1.使用方式 1: 动态初始化 2.使用方式 2: 动态初始化 3.使用方式 3: 动态初始化-列数不确定 4.使用方式 4: 静态初始化 5.二维数组的应用案例 6.二维数组使用细节和注意事项 二&#xff0c;新名词与小技巧 三&#xff0c;今天学习中所遇到的困难…

代理与Reflect反射

属性描述符 Proprety Descriptor 属性描述符 用于描述一个属性的相关信息 1.Object.getOwnPropertyDescriptor(对象&#xff0c;属性名) 可以得到一个对象的 某个属性的属性描述符 Object.getOwnPropertyDescriptors(对象) 可以得到某个对象的所有属性描述符 如果需要为某个…

(已解决)vue+element-ui实现个人中心,仿照原神

差一个个人中心页面&#xff0c;看到了这个博主的个人中心&#xff0c;真的很不错 地址&#xff1a;vueelement仿原神实现好看的个人中心 最终效果&#xff1a;

TypeScript快速入门 - 函数的使用

1、有名函数和匿名函数 // 有名函数,形参设置为number类型,返回值也为number类型 function add(x: number, y: number): number {return x y; } console.log(add(1, 2)); // 3//匿名函数,形参设置为number类型,返回值也为number类型 let myAdd function (x: number, y: numb…