【CVPR】闻声识人FaceChain-ImagineID,从音频中想象出说话人脸,FaceChain团队出品

news/2024/5/30 17:54:11/文章来源:https://blog.csdn.net/sunbaigui/article/details/136711889

一、概览

论文:FaceChain-ImagineID: Freely Crafting High-Fidelity Diverse Talking Faces from Disentangled Audio,https://arxiv.org/abs/2403.01901

        本文提出了一个新的说话人脸生成任务,即直接从音频中想象出符合音频特征的多样化动态说话人脸,而常规的该任务需要给定一张参考人脸。具体来说,该任务涉及到两个核心的挑战,首先如何从音频中解耦出说话人的身份(性别、年龄等语义信息以及脸型等结构信息)、说话内容以及说话人传递的情绪,其次是如何根据这些信息生成多样化的符合条件的视频,同时保持视频内的一致性。为了解决上述问题,我们首先挖掘了三个人脸相关要素之间的联系,设计了一个渐进式音频解耦模块,以此降低解耦难度,并且提高了各个解耦因子的准确性。对于第二个挑战,我们基于Latent DIffusion Models (LDMs)提出了一个可控一致帧生成模块,因此继承了LDMs的多样化生成能力,并设计了相应模块将音频中的信息准确的表达在生成的动态人脸上,缓解了LDMs可控性差的局限。充分的定量和定性实验证明了FaceChain-ImagineID可以有效且灵活地实现提出的新任务。

二、动机

当人们没有面对面交流时,当听到对方的声音时,往往会脑补出相应的画面,对方是一个怎么样的人,在说什么话,说话的情绪怎么样,我们将这个现实场景抽象为Listening and Imagining。为了实现这个新的任务,直接使用现有技术有以下两个问题:一个是如何从复杂的音频中解耦出人脸相关的各个因子。我们首先分析了音频和人脸之间的天然联系。明显的下巴和突出的眉脊通常伴随着低沉的声音,而女性和儿童的音调通常更高;说话内容和局部的嘴唇运动有关系;说话情绪和人脸的全局运动有关系。目前的研究要么只关注了说话内容和情绪,要么只关注了身份信息,并没有方法能够准确地从音频中解耦以上三个特征。另一个仅仅用一个网络既能实现视频间的多样化,又能保证视频内的一致性。人的想象力是无穷的,同一段音频我们可以想象出很多符合条件的说话人视频,而视频内又是连贯。其中一个方式是将LDMs和SadTalker等主流说话人生成进行结合,另一个是借助text-to-video框架,但是前者涉及到两个独立的模型,往往不能达到最优的效果,而后者很难实现完全的可控,并且这些方法都没有考虑音频信息。所以,一个新的框架来适配这个任务显得尤为重要。

三、方法

两个模块的主图如下:

1.)渐进式音频解耦模块:

该模块使用3DMM作为先验,并采用渐进式的方式逐步解耦每一个因子。我们设置身份,内容,以及情绪作为解耦顺序,其内部的逻辑在于身份相对独立,内容仅仅和嘴巴运动相关,情绪和全局面部运动相关,遵循了简单到复杂,局部到整体的逻辑。具体的,我们先从身份编码器中编码身份语义,并预测人脸结构相关的形状系数。接下来,我们将身份编码冻结,引入可训练的内容编解码器,其中融合了第一阶段输出的形状系数,预测得到表情无关的仅仅和嘴巴运动相关的系数。最后,将身份和内容编码器冻结,引入新的可训练的情绪编解码器,其中融合了前面两个阶段输出的身份和内容特征,预测完整的表情系数,同时提供解耦的情绪表征。

2.)可控一致帧生成模块:

为了满足多样化的生成,LDMs是一个很好的结构。但是作为交换,它在可控生成方面相对较弱。想要不引入两个离线模块来实现多样且一致的说话人脸生成,我们需要解决两个问题,一个是在不牺牲多样化生成的基础上,即冻结LDMs,怎么保证生成的视频内容和给定的条件对齐,第二个是怎么实现帧间的平滑过度,实现高度的时序平滑。针对第一个问题,我们设计了以下三个模块:

Textual Inversion Adapter:该模块负责将语音中推理得到的身份和情绪语义特征,它的核心是inversion技术,其将输入的语义特征映射到CLIP域的word tokens,两者合并后输入到CLIP文本编码器得到最终的表征,该表证通过cross attention的方式注入到UNet主网络。

Spatial Conditional Adapter:该模块负责将显式的空间条件注入到主网络,它的核心借鉴了T2I-Adapter。首先3D Mesh包含了音频对齐的人脸结构信息,即脸型,嘴唇运动以及表情风格,另外随机采样一张同源的参考图片提供人脸的外观以及背景,上述两个条件对常规方法已经足够了,但是对于冻结的LDMs,很难学习很复杂的运动。因此我们进一步引入了嘴巴区域掩盖的相邻帧来提供运动信息,从而降低了形变的学习难度,掩盖嘴巴的目的是防止网络走捷径。

Masked-guided Blending Adapter:该模块负责保证生成视频的背景一致性,它主要作用在VAE中。具体的,我们将VAE decoder的人脸区域特征和VAE encoder的背景区域特征进行融合,由膨胀的mask作为引导。我们只在512分辨率上进行该操作,此时上线了最优的背景一致以及融合边缘的和谐。

以上阐述了设计的可控一致帧生成模块包含了变化的以及不变的生成能力,我们进一步的将其和自回归长视频生成机制Autoregressive Inference进行结合。如下算法图所示,对于第一帧生成,我们将可控一致帧生成模块为变化的模式,即只接收从音频中推理得到的身份语义和身份结构。对于接下来的帧,我们切换为不变的模式,进一步的将参考人脸、相邻帧以及背景图融入进来,从而实现一致的长视频生成。其中参考人脸固定为第一帧,背景图也是从第一帧中提取的。

四、实验

1.)与SOTA相比

我们和SOTA方法进行定性和定量比较。具体的,首先和最近的audio-to-face方法CMP,如下图所示,我们的结果有更准确的几何结构,包括脸型,嘴唇运动,情绪风格,以及更真实的纹理。

其次和主流的说话人生成方法Wav2Lip,PC-AVS,EAMM,以及SadTalker,我们的方法也表达出了更准确的表情、更好的音画一致性以及更高的视频质量。

对应的定量实验见下表:

2.)分析性实验

如下图所示,为了验证人脸各个元素的解耦性,我们采样了两张人脸,并且将两者对应的说话内容,身份语义以及情绪风格进行交换,可以看到我们的方法可以改变期望改变的因子而保持其他的因子不变

进一步的,我们做了定性实验来证明身份解耦的合理性。我们随机采样了四个音频,其中涵盖不同的性别和年龄,并且根据身份语义检索数据集中最相近的几个视频,如下图所示,检索得到的视频和查询的视频有接近的性别和年龄。为了验证情绪解耦的效果,我们可视化了情绪语义的t-sne图,可以看到不同的情绪之间远离,而同一个情绪聚集在特定区域。

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

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

相关文章

郭炜老师mooc第十一章数据分析和展示(numpy,pandas, matplotlib)

多维数组库numpy numpy创建数组的常用函数 # numpy数组import numpy as np #以后numpy简写为np print(np.array([1,2,3])) #>>[1 2 3] print(np.arange(1,9,2)) #>>[1 3 5 7] 不包括9 print(np.linspace(1,10,4)) #>>[ 1. 4. 7. 10.] # linespace(x,y,n)&…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞,未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息,导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

LLM - 大语言模型的自注意力(Self-Attention)机制基础 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136623432 注意力(Attention)机制是大型语言模型中的一个重要组成部分,帮助模型决定在处理信息时,所应该关注的部…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时,如果超出其高度,默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示,那么就需要禁止自动滚动。 我们可以在append之后,添加如下代码: //设置编辑框的光标位…

锂矿开采污废水处理需要哪些工艺设备

锂矿开采是一项重要的工业活动,但同时也会产生大量污废水。为了保护环境,及时有效地处理这些污废水至关重要。下面将介绍一些常用的工艺设备,用于锂矿开采污废水处理。 首先,对于锂矿开采产生的废水中的悬浮物和颗粒物的去除&…

C# OpenCvSharp 图片批量改名

目录 效果 项目 代码 下载 C# OpenCvSharp 图片批量改名 效果 项目 代码 using NLog; using OpenCvSharp; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows.Forms; namespace OpenCvSharp_Demo { publi…

【蓝桥杯】map和vector的简单练习

一.题目描述 二.问题分析 使用嵌套的容器 时间复杂度为O(NlogN)&#xff0c;O(logN)是map查找的时间复杂度。 #include <iostream> #include <map> #include <vector> using namespace std;const int N1e510; int n,m; map <int,vector<int> >…

SpringTask实现的任务调度与XXL-job实现的分布式任务调度【XXL-Job工作原理】

目录 任务调度 分布式任务调度 分布式任务调度存在的问题以及解决方案 使用SpringTask实现单体服务的任务调度 XXL-job分布式任务调度系统工作原理 XXL-job系统组成 XXL-job工作原理 使用XXL-job实现分布式任务调度 配置调度中心XXL-job 登录调度中心创建执行器和任务 …

Linux第77步_处理Linux并发的相关函数

了解linux中的“原子整形数据”操作、“原子位数据”操作、自旋锁、读写锁、顺序锁、信号量和互斥体&#xff0c;以及相关函数。 并发就是多个“用户”同时访问同一个共享资源。如&#xff1a;多个线程同时要求读写同一个EEPROM芯片&#xff0c;这个EEPROM就是共享资源&#x…

基于udp协议的网络通信(windows客户端版+简易聊天室版),重定向到终端

目录 和windows通信 引入 思路 WSADATA 代码 运行情况 简单的聊天室 思路 重定向 代码 terminal.hpp -- 重定向函数 服务端 客户端 运行情况 和windows通信 引入 linux和windows都需要联网,虽然他们系统设计不同,但网络部分一定是相同的,所以套接字也是一样的 这…

sqllab第二十二关通关笔记

知识点&#xff1a; cookie注入报错注入 直接抓取对应的数据包&#xff0c;发现还是一个cookie注入 参数值被base64加密了 测试这里使用什么手段读取输入 构造payload:uname1 base64加密&#xff1a;MSc 出现了hacker的页面&#xff0c;说明信息错误但是单引号没起作用 使…

01_04_JavaWEB03_XML、Tomcat、http

XML_Tomcat10_HTTP 参考尚硅谷再总结复习 一 XML XML是EXtensible Markup Language的缩写&#xff0c;翻译过来就是可扩展标记语言。所以很明显&#xff0c;XML和HTML一样都是标记语言&#xff0c;也就是说它们的基本语法都是标签。 可扩展 三个字表面上的意思是XML允许自定义…

七、软考-系统架构设计师笔记-数据库设计基础知识

1、数据库基础概念 数据库基本概念 数据(Data)数据库(Database)数据库管理系统(DBMS)数据库系统(DBS) 1.数据(Data) 是数据库中存储的基本对象&#xff0c;是描述事物的符号记录。 数据的种类&#xff1a; 文本、图形、图像、音频、视频等。 2.数据库(Database, DB) 数据库…

Linux:kubernetes(k8s)Deployment的操作(13)

创建deployment 命令 kubectl create deploy nginx-deploy --imagenginx:1.7.9 再去使用以下命令分别查询 ubectl get deploy kubectl get replicaset kubectl get pod 他是一个层层嵌套的一个关系 首先是创建了一个 deploy 里面包含着replicaset replicaset里面含有…

python爬虫 Appium+mitmdump 京东商品

爬虫系列&#xff1a;http://t.csdnimg.cn/WfCSx 前言 我们知道通过Charles进行抓包可以发现其参数相当复杂&#xff0c;Form 表单有很多加密参数。如果我们只用 Charles 探测到这个接口链接和参数&#xff0c;还是无法直接构造请求的参数&#xff0c;构造的过程涉及一些加密…

Linux搭建我的世界(MC)整合包服务器,All the Mods 9(ATM9)整合包开服教程

Linux使用MCSM面板搭建我的世界(Minecraft)整合包服务器&#xff0c;MC开服教程&#xff0c;All the Mods 9(ATM9)整合包搭建服务器的教程。 本教程使用Docker来运行mc服&#xff0c;可以方便切换不同Java版本&#xff0c;方便安装多个mc服版本。 视频教程&#xff1a;https:…

Linux下的第一个C++小程序——进度条

一、进度条小程序 1.行缓存区 printf函数的输出&#xff0c;会先进入缓存区&#xff0c;而Linux下的缓存区刷新机制是按行刷新&#xff08;根据不同系统机制不同&#xff09;&#xff0c;例如用printf函数去调试时&#xff0c;可以看到如果printf语句中不带换行&#xff0c;则…

lspci详解

lspci的作用 lspci是一个Linux命令&#xff0c;用于列出系统中的PCI总线设备信息。PCI&#xff08;Peripheral Component Interconnect&#xff09;是一种常见的计算机总线标准&#xff0c;用于连接各种外部设备&#xff08;如网卡、显卡、声卡等&#xff09;到计算机主板上。…

嵌入式3-14

1、整理思维导图 2、重写链表的代码 3、实现链表&#xff0c;按值查找返回位置的功能&#xff0c;按位置查找返回值&#xff0c;释放单链表&#xff0c;链表逆置 node_p create_link_list()//创建头结点 { node_p p(node_p)malloc(sizeof(node)); if(pNULL) { …

巨控GRM560远程模块即将上市

在自动化和工业控制领域&#xff0c;通信模块的作用至关重要。它们是实现设备间通信&#xff0c;以及与上位系统交换数据的桥梁。近年来&#xff0c;随着工业4.0的不断推进&#xff0c;对通信模块的要求也越来越高&#xff0c;不仅需要高效稳定的通信能力&#xff0c;还需要兼容…