【AIGC数字人】EchoMimic:基于可编辑关键点条件的类人音频驱动肖像动画

news2024/11/15 17:39:59

GitHub:https://github.com/BadToBest/EchoMimic

论文: https://arxiv.org/pdf/2407.08136

comfyui: https://github.com/smthemex/ComfyUI_EchoMimic

相关工作

Wav2Lip

Wav2Lip是一个开创性的工作 ,但输出会出现面部模糊或扭曲的牙齿结构等伪影。

SadTalker

从音频生成 3D Morphable 模型的 3D 运动系数(头部姿势、表情),并隐式调制 3D 感知人脸渲染以生成说话头。为了学习真实的运动系数,SadTalker 明确地模拟了音频和不同类型运动系数之间的联系。然后将生成的3D运动系数映射到所提出的人脸渲染的无监督3D关键点空间,合成最终的视频。

AniPortrait

AniPortrait表示该领域的另一个显着步幅,在将音频信号映射到 2D 面部地标之前,熟练地将音频信号转换为详细的 3D 面部结构。随后的扩散模型,加上运动模块,将这些地标渲染成时间连贯的视频序列,丰富自然情绪的描绘,并实现细微的面部运动改变和重演。

V-Express

V-Express扩展视听对齐的范围,采用分层结构,将音频与嘴唇运动、面部表情和头部姿势的细微动态进行细致同步。它复杂的面部损失函数进一步细化模型对细微情感细微差别的敏感性和面部特征的整体审美吸引力。

Hallo

Hallo [23] 为肖像图像动画提供了一种分层音频驱动的视觉合成方法,解决了嘴唇同步、表情和姿势对齐的复杂性。通过将基于扩散的生成模型与UNet降噪器和交叉注意机制相结合,实现了对表情多样性和姿态变化的增强控制,证明了视频质量、唇形同步精度和运动多样性的改进。

然而,尽管基于图像的方法取得了相当大的进步,但仍有一些挑战。这些方法通常分别对音频或姿势输入进行条件合成,很少同时集成两者。此外,评估协议往往严重依赖图像级指标,如Fŕechet Inception Distance (FID)和Expression Fŕechet Inception Distance (E-FID),可能忽略了面部结构和动力学的关键方面。解决这些复杂性对于提高“说话头”动画的真实性和保真度至关重要,为更身临其境和类似生活的多媒体体验铺平了道路。

方法

网络结构

 Echomimic的基础成分是Denoising UNet,为了网络吸收多样化输入的能力,Echomimic集成了三个模块:Reference UNet用于编码参考图片;Landmark Encoder用于使用脸部关键点引导网络;Audio Encoder用于编码声音输入。

Denoising UNet

去噪 U-Net 旨在增强在不同条件下由噪声破坏的多帧潜在表示,从完善的 SDv1.5 架构中汲取灵感,并在每个 Transformer 中加入三个不同的注意力层.最初的参考注意层促进了对当前帧和参考图像之间关系的熟练编码,而第二个音频注意层捕获视觉和音频内容之间的交互,在空间维度上运行。此外,Temporal-Attention 层部署了一种时间自注意力机制来破译连续视频帧之间的复杂时间动态和关系。这些增强对于跨网络的空间和时间关系的细微理解和集成至关重要.

 Reference U-Net

参考图像对于在 EchoMimic 框架内保持面部身份和背景一致性至关重要。为了促进这一点,我们引入了专门的模块 Reference U-Net,它反映了 SDv1.5 的架构设计,并与去噪 U-Net 并行运行。在参考 U-Net 的每个 Transformer 块中,自注意力机制用于提取参考图像特征随后用作去噪 U-Net 中相应 Transformer 块参考注意力层中的键和值输入。参考 U-Net 的唯一函数是对参考图像进行编码,确保没有引入噪声,并且扩散过程中只执行单独的前向传递。此外,为了防止引入无关信息,将空文本占位符输入 ReferenceNet 的交叉注意力层。这种细致的设计确保了参考图像的本质在生成过程中的准确捕获和无缝集成,促进了高保真输出的创建。

Audio Encoder 

 合成人物的动画主要是由语音中发音和音调的细微差别驱动的。我们通过使用预训练的 Wav2Vec 模型 [17] 的各种处理块连接从输入音频序列中提取的特征来导出相应帧的音频表示嵌入。字符的运动可能会受到未来和过去的音频片段的影响,需要考虑时间上下文。为了解决这个问题,我们通过连接相邻帧的特征来定义每个生成帧的音频特征。随后,我们在去噪 U-Net 中使用 Audio-Attention 层来实现潜在代码和每个参考注意层输出之间的交叉注意机制,有效地将语音特征集成到生成过程中。这确保了合成字符的运动被精细调整到伴随音频的动态微妙之处,从而增强输出的真实感和表现力。

 Landmark Encoder

 利用每个面部地标图像及其相关目标帧之间的鲁棒空间对应关系,集成了地标编码器在我们的 EchoMimic 框架中。地标编码器,实例化为流线型卷积模型,负责将每个面部地标图像编码为与潜在空间维度对齐的特征表示。随后,编码后的面部地标图像特征在摄取到去噪U-Net之前通过元素相加直接与多帧潜伏期集成。该策略能够无缝地结合精确的空间信息,这对于在生成过程中保持准确的解剖结构和运动至关重要,最终提高输出序列的保真度和连贯性。

Temporal Attention Layer 

 为了生成时间连贯的视频序列,EchoMimic 结合了时间注意层来编码视频数据中固有的时间动态。这些层通过重塑隐藏状态并沿帧序列的时间轴应用自我注意机制,熟练地捕获连续帧之间的复杂依赖关系。具体来说,给定一个隐藏状态 h ∈ Rb×f ×d×h×w,其中 b、f、d、h 和 w 表示批量大小、帧数、特征维度、高度和宽度。我们的 Temporal Attention 层擅长捕捉连续帧之间的复杂依赖关系。这是通过首先将隐藏状态重塑为 h ∈ R(b×h×w)×f ×d 来实现的从而能够沿帧序列的时间轴应用自注意力机制。通过这个过程,时间注意层识别和学习细微的运动模式,确保合成帧中的平滑和谐过渡。因此,视频序列表现出高度的时间一致性,反映自然运动和流体运动,提高生成内容的视觉质量和真实性。

Spatial Loss

 由于潜在空间的分辨率(512 * 512图像的64 * 64)相对较低,无法捕捉细微的面部细节,因此提出了一种时间步感知的空间损失,直接在像素空间中学习人脸结构。特别是,预测的潜在 zt 首先通过采样器映射到 z0。然后通过将 z0 传递给 vae 解码器来获得预测图像。最后,在预测图像及其对应的基本事实上计算 mse 损失。除了 mse 损失外,还采用了 LPIPS 损失来进一步细化图像的细节。此外,由于模型在时间步长 t 很大时很难收敛,我们提出了一个时间步感知函数来减少目标 t 的权重。详细的目标函数如下所示:

 训练细节 

 我们在之前的工作之后采用了两阶段训练策略。我们提出了包括随机地标选择和音频增强在内的有效技术来促进训练过程。

第一阶段

在第一阶段,参考 unet 和去噪 unet 在单帧数据上进行训练以学习图像-音频和图像-姿势之间的关系。特别是,在阶段1中,时间注意层没有插入到去噪中。

第二阶段

在阶段2中,时间注意层被插入到去噪UNet中。整个管道是在12帧视频上训练的,用于最终的视频生成。只有时间模型的训练,而其他部分在阶段2被冻结。

随机关键点选择 

为了实现鲁棒的基于地标的图像驱动,我们提出了一种随机地标选择(RLS)技术。特别是,脸被分成几个部分,包括眉毛、眼睛、瞳孔、鼻子和嘴巴。在训练过程中,我们随机地放弃面部的一个或几个部分。

空间损失和音频增强

在实验中,我们发现两个关键技术可以显著提高生成视频的质量。一是上述提出的空间损失,它迫使扩散模型直接从像素空间学习空间信息。另一种是音频增强,它在原始音频中插入噪声和其他扰动,以实现与图像类似的数据增强。 

 推理

 对于音频驱动的情况,推理过程很简单。而对于姿势驱动或音频+姿势驱动的情况,重要的是根据以前的作品将姿势与参考图像对齐。尽管提出了几种运动对齐技术,但挑战仍然存在。例如,现有的方法通常采用全面透视的翘曲仿射,而忽略了面部部位的匹配。为此,我们提出了一个发展版本的运动校准称为部分感知运动同步。

部分感知运动同步 

在实验中,我们发现两个关键技术可以显著提高生成视频的质量。一是上述提出的空间损失,它迫使扩散模型直接从像素空间学习空间信息。另一种是音频增强,它在原始音频中插入噪声和其他扰动,以实现与图像类似的数据增强。 

实验 

实验细节

硬件:8个NVIDIA  A100GPU。训练分为两个过程,每个过程30000步。这些步骤在批处理大小为4的情况下执行,处理以512 × 512像素的分辨率格式化的视频数据。在第二阶段的训练中,每次迭代生成14个视频帧,将从运动模块导出的潜在变量与最初的2个实际视频帧进行整合,以确保叙事的一致性。在整个训练阶段,始终保持1e-5的学习率。运动模块使用来自Animatediff模型的预训练权重进行初始化,以加快学习过程。为了引入可变性并提高模型的生成能力,在训练过程中以5%的概率随机忽略参考图像引导音频和运动帧等元素。在推理阶段,系统通过将被噪声干扰的潜在变量与运动模块中前一步最新的2个运动帧提取的特征表示合并来保持序列相干性。这种策略保证了连续视频序列之间的无缝过渡,从而提高了生成视频的整体质量和连续性。

数据

 我们从互联网上收集了大约540小时(每个视频片段约15秒长,总计约130,000个视频片段)的说话头视频,并补充了HDTF[26]和CelebV-HQ[27]数据集来训练我们的模型。为了维护严格的训练数据标准,我们实施了细致的数据清理程序。这个过程的重点是保留那些以一个人说话为特征的视频,这些视频在嘴唇运动和伴随的音频之间有很强的相关性,同时丢弃那些有场景过渡、明显的镜头运动、过度表达的面部动作或完全以侧面为导向的观点的视频。我们使用MediaPipe[9]提取训练视频的面部地标。

评估指标

用于评估肖像图像动画方法性能的指标包括FID(初始距离),FVD(视频距离),SSIM(结构相似性指数测量)和E-FID(表达-FID)。FID和FVD衡量的是合成图像与实际数据的接近程度,分数越低,表现越逼真SSIM指数衡量真实视频和生成视频之间的结构相似性。此外,E-FID利用盗梦空间网络的功能来严格评估生成图像的真实性,提供更精细的图像保真度标准。首先,E-FID采用人脸重构方法提取表情参数,详见[2]。然后,计算这些提取参数的FID,定量评估面部表情之间的差异

 结果展示

 

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

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

相关文章

粒子群算法原理的示例介绍

一:粒子群优化算法的介绍 粒子群优化算法(PSO)是一种基于群体智能的优化算法,于1995年提出。它受到鸟群狩猎行为的启发,通过模拟鸟群或鱼群的社会行为来进行问题的求解。 基本原理 粒子群算法中,每个解决…

顶刊算法 | Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测,优化前后对比

顶刊算法 | Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测,优化前后对比 目录 顶刊算法 | Matlab实现鹈鹕算法POA-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测,优化前后对比预测效果基本介绍…

一种小众且适合发文的智能优化算法应用——三维TSP问题

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 今天给大家介绍一种非常小众的智能优化算法应用&am…

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等…

2024/9/9 408“回头看”:

B树是什么?有什么作用?B树的插入和删除具体细节是什么?除了B树还有一个是B+树、还是B-树,他们有什么区别,又有什么相同点? b树在王道考研查找这一章,所以他的主要作用就是查找。 在…

MySQL中binary放在判断语句之前有什么作用

为什么要加binary进行判断 ① 因为 mysql中等号比较是不区分大小写的,select aA这个输出结果为1。 ② 在判断语句之前 加上binary可以以区分大小写比较 ,因为这样底层会用二进制形式比较,实现精确匹配。 代码比较 忽略大小写比较 select …

Ftrans跨域文件传输方案,数据流动无阻的高效路径

大型集团企业由于其规模庞大、业务广泛且往往将分支机构、办事处分布在多个地域,因此会涉及到跨域文件传输的需求。主要源于以下几个方面: 1.业务协同:集团内部的不同部门或子公司可能位于不同的地理位置,但需要进行紧密的业务协…

【C++】STL学习——priority_queue(了解仿函数)

目录 priority_queue介绍迭代器种类priority_queue实现仿函数仿函数的使用 priority_queue介绍 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素&#x…

Linux 磁盘管理-RAID磁盘冗余阵列看这一篇就够了

今天给伙伴们分享一下Linux 磁盘管理-RAID磁盘冗余阵列,希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到…

机器学习深度学习

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 深度学习概述 1.1 定义与历史背景 深度学习作为机器学习领域的一个重要分支,其核心在于构建由多层(深层)的人工神经网络组成的计算模型,这些模型能够学习数据的多层次抽象表示。深度学习的…

东大成贤资源库-数据挖掘技术与应用 实验一:数据预处理_熟悉数据挖掘数据预处理流程。 基于给定的数据集(csv)文件,完成下列数据处理。 1

【实验内容】 程序清单 import pandas as pd import numpy as np# 读入文件,存放在字典data里 data pd.read_csv("D:\\Desktop\\data1.csv")# 填入Id列空缺的值 for i in range(1,len(data)):if pd.isnull(data[Id][i]):data[Id][i]i1# Id属性列去重&a…

虚拟机的安装步骤

我这里使用的是VMware 1.下载centos7 2.配置 跟这图来就好 开启虚拟机 第一个页面直接回车,忘了截图 等待安装 选择语言,看自己 点击完成 点击继续安装 设置账号密码 然后等待就行 安装完成之后会有一个重启,点击(又忘了截图) 完成许可和网络 最后就可以了

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵…

数据权限的设计与实现系列7——前端筛选器组件Everright-filter用法说明

背景 官方给了全局性的介绍和示例,不过到了具体使用环节,介绍就不是那么清楚明确了,往往是直接放 demo,需要去推测和揣测,然后动手验证。去百度了下,也没找到现成的对该组件的使用说明,得以开荒…

Unreal Fest 2024 虚幻引擎影视动画制作的普遍问题

一 毛发缓存数据巨大的问题(及5个解决方案) 在引擎里模拟毛发,并且把它缓存下来,我们就不需要从外部导入了,所以我们要解决的问题就是怎么样在引擎里自由地控制毛发 1.物理场控制 延申 [技术分享]《UE中的世界物理场…

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介&am…

P1071 [NOIP2009 提高组] 潜伏者

1.题目太长要耐性总结出题目的要求 2.map中count的使用方法 #include <bits/stdc.h> using namespace std; map<char, char>m0, m1;//m0记录密文对明文&#xff0c;m1记录明文对密文int main() {string x, y, z ;//x为密文&#xff0c;y为明文&#xff0c;z为待翻…

SpringBoot+Redis极简整合

1 前言 Redis是现在最受欢迎的NoSQL数据库之一&#xff0c;下面将以最简洁的代码演示&#xff0c;在SpringBoot中使用redis。 2 下载安装Redis 2.1 下载 Redis3.x windows安装版下载地址 2.2 安装到任意位置 一直Next到完即可。 2.3 启动 打开安装目录&#xff0c;点击…

【数据结构】堆——堆排序与海量TopK问题

目录 前言一、堆排序1.1 整体思路1.2 代码部分1.3 建堆的时间复杂度1.4 堆排序的总结 二、向下调整算法的时间复杂度三、向上调整算法的复杂度四、海量TopK问题4.1 TopK题目 总结 前言 上一篇我们学习了堆的数据结构&#xff0c;现在我们来看看堆的日常应用和排序 一、堆排序 …