【AIGC数字人】EchoMimic:基于可编辑关键点条件的类人音频驱动肖像动画
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,定量评估面部表情之间的差异
结果展示
相关文章:

【AIGC数字人】EchoMimic:基于可编辑关键点条件的类人音频驱动肖像动画
GitHub:https://github.com/BadToBest/EchoMimic 论文: https://arxiv.org/pdf/2407.08136 comfyui: https://github.com/smthemex/ComfyUI_EchoMimic 相关工作 Wav2Lip Wav2Lip是一个开创性的工作 ,但输出会出现面部模糊或扭…...

变量数据类型 Day3
1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元,是存储数据的基本单元变量的组成包括:数据类型、变量名、值,后文会具体描述变量的本质作用就是去记录数据的,比如说记录一个人的身高、体重、年龄,就需要去…...

SpringBoot2:请求处理原理分析-RESTFUL风格接口
一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…...
[Linux][配置]Linux修改history存储的最大记录数
Linux修改History最大记录为20000行 sed -i s/^HISTSIZE1000/HISTSIZE20000/ /etc/profile source /etc/profile 在 Linux 系统中,HISTSIZE 环境变量用于定义历史记录的大小,即在终端中可以回溯的命令数量。默认情况下,这个值通常是 1000&…...

代码随想录 刷题记录-28 图论 (5)最短路径
一、dijkstra(朴素版)精讲 47. 参加科学大会 思路 本题就是求最短路,最短路是图论中的经典问题即:给出一个有向图,一个起点,一个终点,问起点到终点的最短路径。 接下来讲解最短路算法中的 d…...

大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
C++复习day04
一、函数重载 1.什么是函数重载? 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重 载了。 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用…...

[苍穹外卖]-04菜品管理接口开发
效果预览 新增菜品 需求分析 查看产品原型分析需求, 包括用到哪些接口, 业务的限制规则 业务规则 菜品名称必须是唯一的菜品必须属于某个分类下, 不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片 接口设计 根据类型查询分类接口 文件上传接口 …...
gitlab 启动/关闭/启用开机启动/禁用开机启动
文章目录 启动 gitlab关闭 gitlab查看 gitlab 运行状态启用 gitlab 开机启动禁用 gitlab 开机启动GitlabGit启动 gitlab hxstrive@localhost:~$ sudo gitlab-ctl start ok: run: alertmanager: (pid 65953) 0s ok: run: gitaly: (pid 65965) 0s ok: run: gitlab-exporter: (pi…...

中间件解析漏洞(附环境搭建教程)
⼀:IIS解析漏洞 环境资源: https://download.csdn.net/download/Nai_zui_jiang/89717504 环境安装 windows2003iis6 1.创建新的虚拟机 2.在下⼀步中选择我们的iso⽂件镜像 vm已主动识别到windows2003 3.产品密钥⽹上搜⼀个 密码自己设置一个简单的&…...

matlab实现kaiser窗+时域采样序列(不管原信号拉伸成什么样子)是一样的,变到频谱后再采样就是一样的频域序列。
下图窗2的频谱在周期化的时候应该是2(w-k*pi/T)我直接对2w减得写错了 可见这两个kaiser窗频谱不一样,采样间隔为2T的窗,频谱压缩2倍,且以原采样频率的一半周期化。 但是这两个不同的kaiser窗在频域采样点的值使完全一…...

git为不同的项目设置不同的提交作者
方法1:找到项目的.git文件夹打开 打开config在下面添加自己作者信息 [user]name 作者名email 邮箱方法2:直接在.git文件夹设置作者名(不使用–global参数) git config user.name "xxxxx"如果想要修改之前提交的…...
防爆定位信标与防爆定位基站有什么区别?
新锐科技 https://baijiahao.baidu.com/s?id1804974957959442238&wfrspider&forpc http://www.xinruikc.cn/biaoqian/52.html http://www.xinruikc.cn/xinbiao/...

QT 编译报错:C3861: ‘tr‘ identifier not found
问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )...

谈谈ES搜索引擎
一 ES的定义 ES 它的全称是 Elasticsearch,是一个建立在全文搜索引擎库Lucene基础上的一个开源搜索和分析引擎。ES 它本身具备分布式存储,检索速度快的特性,所以我们经常用它来实现全文检索功能。目前在 Elastic 官网对 ES 的定义,…...

【MySQL】MySQL基础
目录 什么是数据库主流数据库基本使用MySQL的安装连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL的架构SQL分类什么是存储引擎 什么是数据库 mysql它是数据库服务的客户端mysqld它是数据库服务的服务器端mysql本质:基于C(mysql)…...
Spring中Bean的相关注解
目录 1.Spring IoC&DI 2.关于Bean存储的相关注解(类注解与方法注解) Bean的获取方式 类注解和方法注解的重命名 2.1 类注解 2.1.1 Controller 2.1.2 Service 2.1.3 Repository 2.1.4 Component 2.1.5 Configuration 2.2 方法注解-Bean 2.2.1 定义多个对象 2.2…...

Golang | Leetcode Golang题解之第385题迷你语法分析器
题目: 题解: func deserialize(s string) *NestedInteger {if s[0] ! [ {num, _ : strconv.Atoi(s)ni : &NestedInteger{}ni.SetInteger(num)return ni}stack, num, negative : []*NestedInteger{}, 0, falsefor i, ch : range s {if ch - {negati…...

【Java 优选算法】双指针(上)
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 移动零 分析 代码 复写零 分析 代码 快乐数 分析 代码 盛最多水的容器 分析 代码 移动零 题目链接 分析 双指针算法,利用两个指针cur和dest将数组划分为三个区间…...

【自动驾驶】控制算法(八)横向控制Ⅰ | 算法与流程
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

云原生时代的系统设计:架构转型的战略支点
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、云原生的崛起:技术趋势与现实需求的交汇 随着企业业务的互联网化、全球化、智能化持续加深,传统的 I…...
[特殊字符] Spring Boot底层原理深度解析与高级面试题精析
一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配,通过简化传统Spring应用的初始化和配置流程,显著提升开发效率。其底层原理可拆解为以下核心机制: 自动装配(Auto-Configuration) 核…...