在弱条件下使用音视频扩散模型生成富有表现力的肖像视频(音频+图像=动态视频)
paper:[2402.17485] EMO: Emote Portrait Alive -- Generating Expressive Portrait Videos with Audio2Video Diffusion Model under Weak Conditions (arxiv.org)
code:喜闻乐见没开源
1. 介绍
- 通过关注音频Prompt和面部动作之间的动态和关系来解决增强头部说话视频生成问题.
- 解决了传统技术的局限性:无法捕捉人类表情的全部范围和个人面部风格的独特性.
- 结果:
- 无需中间表示(如3D模型、landmark)
- 能够捕捉广泛的真实面部表情,包括微表情等,并促进自然的头部运动,使得生成的视频有较强的表现力
- 可确保整个视频中的无缝帧过渡和一致的身份保留,从而产生高度表现力和逼真的动画
图1:EMO,一种表现力强的音频驱动的人像视频生成框架。输入单个参考图像和声音,例如说话和唱歌,可以生成具有丰富面部表情和各种头部姿势的视频,同时可以根据输入音频的长度生成任何时长的视频。
传统方法表示面部运动,通常会对视频施加限制,如:使用3D模型来限制面部关键点,或者则从基础视频中提取头部运动序列来指导整体运动。 虽然这些限制降低了视频生成的复杂性,但它们也往往限制了最终面部表情的丰富性和自然度。
作者希望能捕捉广泛、真实的现实面部表情,并促进自然的头部运动。因此利用扩散模型,直接从图像和音频合成说话头视频。这种方法消除了中间表示或复杂预处理,呈现出高度的视觉和情感保真度,与音频输入中的细微差别密切相关。音频信号富含与面部表情相关的信息,理论上使模型能够生成各种表情面部动作。
将音频与扩散模型集成的困难:音频和面部表情之间的映射存在固有的模糊性。导致视频不稳定,表现为面部扭曲或视频帧之间的抖动。因此在模型中加入了稳定的控制机制,即速度控制器和面部区域控制器,以增强生成过程中的稳定性。这两个控制器作为超参数,作为控制信号,不损害最终生成的视频的多样性和表现力。
为了确保生成的视频中的角色与输入的参考图像保持一致,作者采用并增强了ReferenceNet的方法,设计了一个类似的模块FrameEncoding,旨在保持角色在整个视频中的身份。
最后,构建了一个庞大而多样的音频视频数据集,包括250小时视频和1.5亿张图像。
2. 背景
音频驱动的头部说话生成音频驱动的头部头部生成可以大致分为两种方法:基于视频的方法和单图像。
基于视频的头部生成,允许对输入视频片段进行直接编辑。 例如,Wav2Lip使用音频-唇形同步鉴别器,根据音频重新生成视频中的唇部运动。局限性在于依赖于基础视频,导致头部运动固定并且仅产生嘴巴运动,这会限制真实感。
对于单图像头部生成,参考照片用于生成反映照片外观的视频。另外,通过学习混合形状和头部姿势来独立生成头部运动和面部表情,然后使用它们创建 3D 面部网格,作为指导最终视频帧生成的中间表示。类似方法还包括采用 3D Morphable Model (3DMM) 作为生成头部说话视频的中间表示。局限性: 3D 网格的表示能力有限,限制表现力和真实感。
3. 方法
算法框架主要由两个阶段组成。
帧编码阶段,ReferenceNet 用于从参考图像和运动帧中提取特征。随后,在扩散过程阶段,预训练的音频编码器处理音频嵌入。
面部区域掩模与多帧噪声集成以控制面部图像的生成。接下来是使用主干网络来促进去噪操作。在主干网络中,应用了两种形式的注意力机制:参考注意力和音频注意力。这些机制分别对于保留角色的身份和调节角色的动作至关重要。此外,时间模块用于操纵时间维度,并调整运动速度。
骨干网络
骨干网络获取多帧噪声的潜在输入,并尝试在每个时间步将它们去噪到连续的视频帧,骨干网络具有与原始的类似的UNet结构配置(StableDiffusion1.5)。总结为4点:
- 为了确保生成的帧之间的连续性,骨干网络嵌入了时间模块。
- 为了保持生成帧中肖像的ID一致性,部署了一个与Backbone并行的称为ReferenceNet的UNet结构,它输入参考图像以获得参考特征。
- 为了驱动角色说话动作,利用音频层对语音特征进行编码。
- 为了使说话角色的运动可控且稳定,使用面部定位器和速度层来提供弱条件。
对于主干网络中与SD1.5的区别,首先没有使用Prompt嵌入特征;因此,将SD1.5 UNet 结构中的交叉注意力层调整为参考注意力层。这些修改后的层现在采用 ReferenceNet 中的参考特征作为输入,而不是文本嵌入。
音频编码层
语音中的发音和语气是生成人物运动的主要驱动标志。通过预训练 wav2vec 的各个块从输入音频序列中提取的特征被连接起来,生成第 f 帧的音频表示嵌入 A(f) 。 然而,动作可能会受到未来/过去音频片段的影响,例如说话前张嘴和吸气。为了解决这个问题,通过连接附近帧的特征来定义每个生成帧的语音特征
m是一侧附加特征的数量。为了将语音特征注入到生成过程中,添加了音频注意层,在每个参考注意层之后在潜在code和 Agen之间执行交叉注意机制。
参考网络
ReferenceNet 具有与 Backbone Network 相同的结构,用于从输入图像中提取详细特征。 鉴于 ReferenceNet 和 Backbone Network 都源自相同的原始 SD 1.5 UNet 架构,这两种结构在某些层生成的特征图可能会表现出相似性 因此,这有助于主干网络集成 ReferenceNet 提取的特征。先前的研究强调了利用类似结构在保持目标对象身份一致性方面的深远影响。所以在本文中,ReferenceNet 和 Backbone Network 都继承了原始 SD UNet 的权重。目标人物的图像被输入到ReferenceNet中,以从自注意力层中提取参考特征图输出。在主干去噪过程中,相应层的特征使用提取的特征图进行参考注意层。 由于ReferenceNet主要设计用于处理单个图像,因此它缺少 Backbone中的时间层。
时间模块
大多数工作尝试将时间混合层插入到预训练的文本到图像架构中,以促进连续视频帧之间时间关系的理解和编码。 通过这样做,增强的模型能够保持帧之间的连续性和一致性,从而生成平滑且连贯的视频流。 根据 AnimateDiff 的架构概念,文章将自注意力时间层应用于帧内的特征。
具体来说,将输入特征图 x ∈ R b×c×f×h×w 重新配置为形状 (b × h × w) × f × c。 这里,b代表批量大小,h和w表示特征图的空间维度,f是生成帧的数量,c是特征维度。 值得注意的是,将自注意力引导到时间维度 f 上,以有效捕获视频的动态内容。 时间层被插入到骨干网络的每个分辨率层中。 当前大多数基于扩散的视频生成模型本质上受到其设计的限制,无法产生预定数量的帧,从而限制了扩展视频序列的创建。 这种限制在头部说话视频的应用中尤其有影响,其中足够的持续时间对于清晰表达有意义的讲话至关重要。 一些方法采用前一剪辑末尾的帧作为后续生成的初始帧,旨在保持串联片段之间的无缝过渡。 受此启发,作者合并了最后 n 帧,称为先前生成的剪辑中的“运动帧”,以增强跨剪辑的一致性。 具体来说,这 n 个运动帧被输入到 ReferenceNet 中以预先提取多分辨率运动特征图。 在主干网络内的去噪过程中,将时间层输入与沿帧维度匹配分辨率的预先提取的运动特征合并。 这种简单的方法有效地保证了各个剪辑之间的连贯性。 为了生成第一个视频剪辑,将运动帧初始化为零图。
应该注意的是,虽然骨干网络可能会迭代多次以对噪声帧进行去噪,但目标图像和运动帧仅连接一次并输入到 ReferenceNet 中。 因此,提取的特征在整个过程中被重复使用,确保推理期间的计算时间不会大幅增加。
脸部定位和Speed层
时间模块可以保证生成帧的连续性和视频剪辑之间的无缝过渡,但是由于独立的生成过程,它们不足以确保生成的角色在剪辑中运动的一致性和稳定性。传统的做法是使用一些信号来控制角色运动,然而,由于它们的自由度有限,使用这些控制信号可能不能很好地创建生动的面部表情和动作,并且在训练阶段标记不充分。 捕捉全方位的面部动态。此外,相同的控制信号可能会导致不同人物之间的差异,无法考虑个体的细微差别。生成控制信号可能是一种可行的方法,但产生逼真的运动仍然是一个挑战。因此,作者选择“弱”控制信号方法。 具体来说,如图 2 所示,使用掩模 M 作为面部区域,其中包含视频剪辑的面部边界框区域。使用面部定位器,它由轻量级卷积层组成,旨在对边界框掩模进行编码。然后将生成的编码掩码添加到噪声潜在表示中,然后再馈送到骨干网中。这样就可以通过mask来控制角色脸部应该在哪里生成的。 然而,由于在单独的生成过程中头部运动频率存在变化,因此在剪辑之间创建一致且平滑的运动具有挑战性。为了解决这个问题,将目标头部运动速度纳入到生成中。 更准确地说,考虑帧 f 中的头部旋转速度 wf 并将速度范围划分为 d 个离散速度buckets,每个速度buckets代表不同的速度级别。与音频层中使用的方法类似,每帧的头部旋转速度嵌入由下式给出:
并且 Sf ∈Rb×f×c 速度随后由 MLP 处理以提取速度特征。在时间层内,将 S f 重复为形状 (b × h × w) × f × c 速度,并实现一种交叉注意力机制,该机制在时间维度 f 上的速度特征和 eshape 特征图之间运行。通过这样做并指定目标速度,可以在不同的剪辑中同步生成的角色头部的旋转速度和频率。结合面部定位器提供的面部位置控制,最终的输出既稳定又可控。 还应该注意的是,指定的面部区域和指定的速度并不构成强控制条件。 在人脸定位中,由于M是整个视频片段的联合区域,表示允许面部运动的相当大的区域,从而保证头部不限于静态姿势。 对于速度层,准确估计人体头部旋转速度以进行数据集标记的困难意味着预测的速度序列本质上是有噪声的。 因此,生成的头部运动只能近似指定的速度水平。 这种限制激发了设计速度桶框架。
4. 实验
训练策略
训练过程分为三个阶段。
第一阶段是图像预训练,其中 Backbone Network、ReferenceNet 和 Face Locator 被标记到训练中,在此阶段,Backbone 将单个帧作为输入,而 ReferenceNet 处理来自同一帧的不同的、随机选择的帧。 Backbone 和 ReferenceNet 都从原始 SD 初始化权重。
在第二阶段,引入视频训练,其中结合了时间模块和音频层,从视频剪辑中采样n+f个连续帧,开始的n帧是运动帧。 时间模块从 AnimateDiff 初始化权重。
在最后一个阶段,速度层被集成,在这个阶段只训练时间模块和速度层。 这一战略决策故意从训练过程中省略音频层。 因为说话角色的表情、嘴部动作和头部运动的频率主要受音频影响。 因此,这些元素之间似乎存在相关性,可能会提示模型根据速度信号而不是音频来驱动角色的运动。实验结果表明,速度层和音频层的同时训练会破坏音频对角色运动的驱动能力。
实验设置
数据集
- 互联网上收集了大约250小时的头部说话视频,并用 HDTF和 VFHQ 数据集进行补充来训练模型。由于 VFHQ 数据集缺乏音频,因此仅在第一个训练阶段使用。
- 应用 MediaPipe 人脸检测框架来获取面部边界框区域。 通过使用面部标志提取每帧的 6-DoF 头部姿势来标记头部旋转速度,然后计算连续帧之间的旋转度。
- 视频剪辑被调整大小并裁剪为 512 × 512。
- 在第一个训练阶段,分别从视频剪辑中采样参考图像和目标帧,训练 Backbone Network 和 ReferneceNet,批量大小为 48
- 在第二和第三阶段,设置f = 12作为生成的视频长度,运动帧数设置为n = 4,采用bath size 4进行训练。
- 遵循 Diffused Heads ,附加特征数 m 设置为 2。 所有阶段的学习率均设置为1e-5。
- 在推理过程中,使用DDIM的采样算法来生成40步的视频剪辑,为每一帧生成分配一个恒定的速度值。 本方法的耗时约为 15 秒(f = 12 帧)。
文章来源:https://www.toymoban.com/news/detail-850064.html
评估指标
- 利用 Fréchet Inception Distance (FID) 来评估生成帧的质量。
- 为了衡量结果中身份的保留,通过提取和比较生成的帧和参考图像之间的面部特征来计算面部相似度(FSIM) 值得注意的是,使用单个不变的参考图像可能会产生看似完美的 F-SIM 分数。 某些方法 可能只生成嘴部区域,而使帧的其余部分与参考图像相同,这可能会扭曲结果。 因此,文章将 F-SIM 视为群体参考指数,更接近相应的地面实况 (GT) 值,表明性能更好。
- 采用 Fréchet Video Distance (FVD) 进行视频级评估。
- SyncNet 分数用于评估唇形同步质量,这是头部说话应用的一个关键方面。
- 为了评估生成视频中面部表情的表现力,引入了 Expression-FID (E-FID) 指标的使用。这涉及通过面部重建技术提取表情参数。 随后,计算这些表情参数的 FID,以定量测量合成视频中的表情与真实视频中的表情之间的差异。
结论
- 图3:当提供单个参考图像作为输入时,Wav2Lip 通常会合成模糊的嘴部区域并生成以静态头部姿势和最小眼球运动为特征的视频。 就 DreamTalk 而言,作者提供的风格剪辑可能会扭曲原始面孔,也会限制面部表情和头部运动的活力。 与 SadTalker 和 DreamTalk 相比,文章技术能够生成更大范围的头部运动和更动态的面部表情。
参考:EMO 肖像视频生成 论文解读 阿里视频生成 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-850064.html
到了这里,关于【论文阅读】EMO: Emote Portrait Alive - Generating Expressive Portrait Videos with Audio2Video Diffusi的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!