赞
踩
在弱条件下使用音视频扩散模型生成富有表现力的肖像视频(音频+图像=动态视频)
算法框架主要由两个阶段组成。
最终目标:给定人物肖像的单个参考图像,可以生成与输入语音音频片段同步的视频,保留自然的头部运动和生动的表达,与所提供的声音音频的音调变化相协调。另外,在技术实现上通过创建一系列无缝的级联视频,有助于生成具有一致身份和连贯运动的长时间说话的肖像视频。
网络的流程(如上图),骨干网络获取多帧噪声的潜在输入,并尝试在每个时间步将它们去噪到连续的视频帧,骨干网络具有与原始的类似的UNet结构配置(StableDiffusion1.5)。总结为4点:
对于主干网络中与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 中。 因此,提取的特征在整个过程中被重复使用,确保推理期间的计算时间不会大幅增加。
时间模块可以保证生成帧的连续性和视频剪辑之间的无缝过渡,但是由于独立的生成过程,它们不足以确保生成的角色在剪辑中运动的一致性和稳定性。传统的做法是使用一些信号来控制角色运动,然而,由于它们的自由度有限,使用这些控制信号可能不能很好地创建生动的面部表情和动作,并且在训练阶段标记不充分。 捕捉全方位的面部动态。此外,相同的控制信号可能会导致不同人物之间的差异,无法考虑个体的细微差别。生成控制信号可能是一种可行的方法,但产生逼真的运动仍然是一个挑战。因此,作者选择“弱”控制信号方法。 具体来说,如图 2 所示,使用掩模 M 作为面部区域,其中包含视频剪辑的面部边界框区域。使用面部定位器,它由轻量级卷积层组成,旨在对边界框掩模进行编码。然后将生成的编码掩码添加到噪声潜在表示中,然后再馈送到骨干网中。这样就可以通过mask来控制角色脸部应该在哪里生成的。 然而,由于在单独的生成过程中头部运动频率存在变化,因此在剪辑之间创建一致且平滑的运动具有挑战性。为了解决这个问题,将目标头部运动速度纳入到生成中。 更准确地说,考虑帧 f 中的头部旋转速度 wf 并将速度范围划分为 d 个离散速度buckets,每个速度buckets代表不同的速度级别。与音频层中使用的方法类似,每帧的头部旋转速度嵌入由下式给出:
并且 Sf ∈Rb×f×c 速度随后由 MLP 处理以提取速度特征。在时间层内,将 S f 重复为形状 (b × h × w) × f × c 速度,并实现一种交叉注意力机制,该机制在时间维度 f 上的速度特征和 eshape 特征图之间运行。通过这样做并指定目标速度,可以在不同的剪辑中同步生成的角色头部的旋转速度和频率。结合面部定位器提供的面部位置控制,最终的输出既稳定又可控。 还应该注意的是,指定的面部区域和指定的速度并不构成强控制条件。 在人脸定位中,由于M是整个视频片段的联合区域,表示允许面部运动的相当大的区域,从而保证头部不限于静态姿势。 对于速度层,准确估计人体头部旋转速度以进行数据集标记的困难意味着预测的速度序列本质上是有噪声的。 因此,生成的头部运动只能近似指定的速度水平。 这种限制激发了设计速度桶框架。
训练过程分为三个阶段。
图3:当提供单个参考图像作为输入时,Wav2Lip 通常会合成模糊的嘴部区域并生成以静态头部姿势和最小眼球运动为特征的视频。 就 DreamTalk 而言,作者提供的风格剪辑可能会扭曲原始面孔,也会限制面部表情和头部运动的活力。 与 SadTalker 和 DreamTalk 相比,文章技术能够生成更大范围的头部运动和更动态的面部表情。
图4:各种肖像风格的头像视频的生成。来自 Civitai 的参考图像由不同的文本到图像 (T2I) 模型合成,包含不同风格的角色,即现实、动漫和 3D。 这些角色使用相同的声音音频输入进行动画处理,从而在不同风格之间产生大致一致的唇形同步。尽管作者模型仅在真实视频上进行训练,但它展示了为各种肖像类型制作头部说话视频的熟练程度。
图5:在处理具有明显音调特征的音频时能够生成更丰富的面部表情和动作。 例如,第三行的例子表明,高音调会引发角色更强烈、更生动的表情。 此外,利用运动帧可以扩展生成的视频,可以根据输入音频的长度生成持续时间较长的视频。
图 5 图 6 :即使在大幅运动中也能在扩展序列中保留角色的身份。
表 1 :结果表明在视频质量评估方面具有显着优势,较低的 FVD 分数就证明了这一点。 此外,在单个帧质量方面优于其他方法,如改进的 FID 分数所示。 尽管在 SyncNet 指标上没有获得最高分,但在生成生动的面部表情方面表现出色,如 E-FID 所示。
Paper:https://arxiv.org/pdf/2402.17485.pdf
Github:https://github.com/HumanAIGC/EMO
Demo:https://humanaigc.github.io/emote-portrait-alive/
记得点赞关注,更多技术跟进中~
知乎:二度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。