【AI数字人-论文】Geneface论文

文章目录

    • 前言
    • pipeline
      • audio-to-motion
      • Motion domain adaptation
        • 可视化
      • Motion-to-image
        • Head-NeRF
        • Torso-NeRF
    • 结果对比

前言

语音驱动的说话人视频合成旨在根据一段输入的语音,合成对应的目标人脸说话视频。高质量的说话人视频需要满足两个目标:
(1)合成的视频画面应具有较高的保真度;
(2)合成的人脸面部表情应与输入的驱动语音保证高度对齐。
基于NeRF的说话人视频合成算法,仅需要3-5分钟左右的目标人说话视频作为训练数据,即可合成该目标人说任意语音的视频,在实现第二个目标还面临许多挑战。

  • 对域外驱动音频的弱泛化能力:由于训练数据集仅包括数分钟的说话人语音-面部表情的成对数据,模型对不同说话人、不同语种、不同表现形式等域外音频难以生成准确的面部表情。
  • “平均脸”问题:由于相同的语音可能有多种合理的面部动作,使用确定性的回归模型来学习这样一个语音到动作的映射可能导致过于平滑的面部动作和较低的表情表现力。

pipeline

GeneFace 采用 3D 人脸关键点作为中间变量,提出了一个三阶段的框架:

  • Audio-to-motion:在大规模唇语识别数据集上学习语音到动作的映射高泛化能力。我们设计了一个变分动作生成器来学习这个语音到面部动作的映射。
  • Motion domain adaptation:提出了一种基于对抗训练的域适应方法,以训练一个人脸动作的后处理网,从而弥合大规模唇语识别数据集与目标人视频之间的域差距。
  • Motion-to-image:设计了一个基于 NeRF 的渲染器(3DMM NeRF Renderer),它以预测的 3D 人脸关键点为条件来渲染高保真的说话人视频。
    在这里插入图片描述

audio-to-motion

audio2motion在一个大的数据上进行训练,适用于所有的说话人视频,仅需要训练一次。
在这里插入图片描述
语义信息:利用 HuBERT 模型从原始音频中提取语音表征。
动作表示:为了能在欧几里得空间中表示详细的面部运动,从重建的3D头部网格中选择68个关键点,使用它们的位置作为动作表示。

编码器解码器流模型
在这里插入图片描述在这里插入图片描述在这里插入图片描述

原始变分自编码器的高斯先验从两个方面限制了3D标志序列生成过程的性能:

  1. 每个时间索引的数据点彼此独立,给序列生成任务引入了噪声,因为帧之间存在坚实的时序相关性。
  2. 优化VAE先验将后验分布推向均值,限制了多样性和破坏了生成能力
    为此,利用归一化流为VAE提供复杂且与时间相关的先验分布。流模型,一种比较独特的生成模型,通过一系列可逆变换建立较为简单的先验分布与较为复杂的实际数据分布之间的映射关系。

Motion domain adaptation

在给定的多说话人数据集上训练variational motion generator时,模型可以很好地处理各种音频输入。然而,由于目标人物视频的规模相对较小(大约4-5分钟),与多说话人唇读数据集(大约数百小时)相比,预测的3D landmark与目标人物领域之间存在领域偏差。因此需要将VAE预测的3D landmark 细化为Personalize domain。
在这里插入图片描述要求:

  1. 保证输入序列的时间一致性和嘴唇同步
  2. 将每一帧正确地映射到目标人领域

方案:为了满足第一点,使用1D卷积为后处理网络的结构,并采用同步专家来监督嘴唇同步。对于第二点,我们联合训练一个MLP结构的帧级鉴别器,该鉴别器测量每个关键点帧与目标人的身份相似性。

在这里插入图片描述
postnet模型仅适用于对应的说话人视频,所以对每个新的说话人视频都需要训练一个新的postnet。而且训练postnet时,既需要大的说话人数据集,也需要对应的说话人数据集。

可视化

在这里插入图片描述

  • 绿色点表示LRS3数据集的gt landmarks.
  • 蓝色点表示特定人视频的gt landmarks
  • 红色点表示无域自适应时的预测landmarks
  • 黄色点表示有域自适应时的预测landmarks

可以从上图中看出,post-net模型将预测的人脸landmarks从大数据集的空间域迁移到特定人的域中,这样更能保证嘴型的同步性。

Motion-to-image

NeRF将一个连续的场景表示为一个输入为5D向量的函数,它的输入由一个空间点的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( c, \sigma \right) F(x,d)(c,σ)

以3DMM landmark作为条件变量,基于NeRF进行三维重建,需要先对头部进行重建,然后以头部为条件变量,重建躯干。
在这里插入图片描述

Head-NeRF

将landmark l l l作为NeRF的条件变量,用公式表示如下:
F θ ( x , d , l ) → ( c , σ ) F_{\theta} \left( \mathbf{x}, \mathbf{d}, l \right) \rightarrow \left( c, \sigma \right) Fθ(x,d,l)(c,σ)
颜色 C C C计算的公式如下所示:
在这里插入图片描述

Torso-NeRF

基于head-NeRF的输出颜色 C h e a d C_{head} Chead作为torso-NeRF像素级的条件,torso-NeRF的公式表示如下:
F t o r s o ( x , C h e a d , d 0 , Π , l ) → ( c , σ ) F_{torso} \left( x, C_{head},d_{0}, \Pi ,l \right) \rightarrow \left( c, \sigma \right) Ftorso(x,Chead,d0,Π,l)(c,σ)

结果对比

在这里插入图片描述

  • FID(Frechet Inception Distance score),是计算真实图像和生成图像的特征向量之间距离的一种度量。分数越低代表两组图像越相似。
  • LMD(Landmark Distance)是用于评估面部图像生成质量的指标,它用于度量生成的面部图像与真实面部图像之间的面部特征点的距离,以衡量生成的面部图像与真实面部图像之间的相似性。LMD得分越低,面部图像生成质量越高。

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

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

相关文章

ele-h5项目使用vue3+vite开发:第二节、search 搜索框组件开发

如何设计一个组件 需求分析 布局 content left-iconbodyinput-controlright-iconaction 功能 使用 defineEmits 定义组件的事件 在组件的script setup 里如何定义事件 使用defineEmits&#xff08;&#xff09;定义先声明事件接口 <script setup lang"ts"> int…

儿童护眼台灯怎么选择?一文教你如何选择儿童护眼台灯

护眼台灯是家长最常为孩子购买的用品之一&#xff0c;但是大部分人对它的了解并不多&#xff0c;很多人购买之后反而会觉得眼睛更容易疲劳&#xff0c;有不适的情况&#xff01;最主要的原因是因为挑选的台灯不够专业&#xff0c;次要原因则是使用方法不正确。所以今天跟大家讲…

Android.bp入门指南之浅析Android.bp文件

文章目录 Android.bp文件是什么&#xff1f;Android.bp的主要作用模块定义依赖关系构建规则模块属性插件支持模块的可配置性 为什么会引入Android.bp语法例子 Android.bp文件是什么&#xff1f; Android.bp 文件是 Android 构建系统&#xff08;Android Build System&#xff…

JavaScript基础五对象 内置对象 Math.random()

内置对象-生成任意范围随机数 Math.random() 随机数函数&#xff0c; 返回一个0 - 1之间&#xff0c;并且包括0不包括1的随机小数 [0, 1&#xff09; 如何生成0-10的随机数呢&#xff1f; Math.floor(Math.random() * (10 1)) 放大11倍再向下取整 如何生成5-10的随机数&…

element-ui icon 组件源码分享

今日简单分享 element-ui 源码中的 icon 组件&#xff0c;主要从以下两个方面来分享&#xff1a; 一、源码中 icon 设计思想是什么呢&#xff1f;主要从页面结构、数据、 icon 样式三个方面来分享。 1.1 源码中 icon 组件的页面结构&#xff0c;可以在 package 目录下找到 ico…

python爬虫实战——获取酷我音乐数据

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 开发环境: 版 本&#xff1a; python 3.8 编辑器&#xff1a;pycharm 2022.3.2 模块使用: requests >>> pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install…

k8s kubeadm部署安装详解

目录 kubeadm部署流程简述 环境准备 步骤简述 关闭 防火墙规则、selinux、swap交换 修改主机名 配置节点之间的主机名解析 调整内核参数 所有节点安装docker 安装依赖组件 配置Docker 所有节点安装kubeadm&#xff0c;kubelet和kubectl 定义kubernetes源并指定版本…

【Java】【SSE】【VUE】实现调用千帆大模型,实现打字效果

没有废话。只有演示、和源码地址 效果演示 源码地址 qianfan-sse-demo: 基于https://gitee.com/codinginn/chatgpg-sse-demo-springboot-vue改动

QT SQL

QT SQL模块提供数据库编程的支持&#xff0c;支持多种常见的数据库&#xff1a;MySQL\Oracle\MS SQL Server\SQLite等。SQL模块包含多个类&#xff0c;可以实现&#xff1a;数据库连接、SQL语句执行、数据获取与界面显示 等功能。数据 与 界面间用Model\View架构。 一、 二、Q…

FullStack之Django(2)模型和后台

FullStack之Django(2)模型和后台 author: Once Day date:2022年2月13日/2024年1月31日 漫漫长路&#xff0c;才刚刚开始… 全系列文档请查看专栏: FullStack开发_Once_day的博客-CSDN博客Django开发_Once_day的博客-CSDN博客 参考文档: 编写你的第一个 Django 应用&#…

docker安装定制gocd-agent

一、定制gocd-agent FROM gocd/gocd-agent-alpine-3.12:v21.1.0 MAINTAINER xxx "xxx163.com" # 切换到 root 用户 USER root # 安装 expect、jdk、docker RUN apk update && apk add expect && apk add openjdk8 && apk add docker &&…

Vue3的 组件事件

目录 介绍 触发与监听事件 事件参数 声明触发的事件 事件校验 总结 介绍 Vue3是Vue框架的最新版本&#xff0c;其中对组件事件进行了一些改进和优化。组件事件是Vue中一种常用的通信机制&#xff0c;用于在组件之间传递数据或触发动作。 Vue3中的组件事件主要有两种类型…

Spring Bean 定义常见错误

Spring 的核心是围绕 Bean 进行的。不管是 Spring Boot 还是 Spring Cloud&#xff0c;只要名称中带有 Spring 关键字的技术都脱离不了 Bean&#xff0c;而要使用一个 Bean 少不了要先定义出来&#xff0c;所以定义一个 Bean 就变得格外重要了。 当然&#xff0c;对于这么重要…

2024人工智能可以报考的证书有哪些

人工智能&#xff08;AI&#xff09;是致力于解决通常与人类智能相关联的认知性问题的计算机科学领域&#xff0c;这些问题包括学习、创造和图像识别等。 关键的人工智能技术有哪些&#xff1f; 深度学习神经网络构成了人工智能技术的核心。神经网络反映了人脑中发生的过程。大…

JOSEF约瑟 HRTH-Y-2H2D跳位合位 电源监视继电器 导轨安装

HRTH-Y-2H2D跳位合位 电源监视继电器&#xff1a; HRTH-Y-2H2D-X-T&#xff1b;HRTH-Y-2Z-X-T&#xff1b;HRTH-Y-2H-X-T&#xff1b; HRTH-J-2H2D-X-T&#xff1b;HRTH-J-2Z-X-T;HRTH-J -2H-X-T&#xff1b; HRTH-Y-2H2D&#xff1b;HRTH-Y-2Z&#xff1b;HRTH-Y-2H&#xff1…

遇到ubuntu设置交叉编译环境的问题

今天交叉编译器一直没安装成功&#xff0c;环境变量也配置了还是不对&#xff0c;最后发现Ubuntu是64位的要装 然后就好了 另外在进行嵌入式Linux开发的时候&#xff0c;要把主机、虚拟机、以及开发板设置在同一网段下&#xff0c;虚拟机一般设成临时的就可以&#xff0c;但是…

CS144--Chapter0--wsl2+docker环境搭建

我的笔记本配置 荣耀magicbook16&#xff0c;容量是500G&#xff0c;芯片是R7-5800 由于笔记本容量较小&#xff0c;因此考虑这个方案&#xff0c;对于台式机用户&#xff0c;建议可以直接用虚拟机或者双系统。 前言 斯坦福官网给出的方法是用他们的镜像&#xff08;基于Ubu…

抖音短视频矩阵营销系统源头独立开发搭建

开发背景 抖音短视频矩阵系统源码开发采用模块化设计&#xff0c;包括账号分析、营销活动、数据监控、自动化管理等功能。通过综合分析账号数据&#xff0c;快速发现账号的优势和不足&#xff0c;并提供全面的营销方案&#xff0c;以提高账号曝光率和粉丝数量。同时&#xff0c…

vue2 组件注册

简单分享怎么将组件注册为全局组件&#xff0c;主要分为三部分&#xff1a; 一、使用 Vue.install 方法将自义定的组件挂载到 Vue 实例上&#xff0c;如下&#xff1a; 二、注册为全局组件&#xff0c;如下&#xff1a; 三、页面使用&#xff0c;如下&#xff1a;

Oracle 12.2 暴力处理sysaux空间占满问题

基本环境 数据库&#xff1a;oracle 12.2 RAC 操作系统&#xff1a;unix&solaris 11.3 报错现像 今天处理别的问题查看告警日志偶然发现大量的报错&#xff0c;无法扩展SYSAUX表空间 于是登录系统&#xff0c;查看系统表空间使用情况&#xff0c;发现SYSAUX表空间用满了 …