AniPortrait 模型是开源的,可以自由畅玩。
「小破站鬼畜区的新质生产力工具。」
近日,腾讯开源发布的一个新项目在推上获得了如此评价。这个项目是 AniPortrait,其可基于音频和一张参照图象生成高质量动画人像。
话不说多,我们先看看可能会被律师函警告的 demo:
动漫图象也能轻松开口说话:
该项目刚上线几天,就已经收获了广泛好评:GitHub Star 数已经突破 2800。
下面我们来看看 AniPortrait 的创新之处。
论文标题:AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation
论文地址:https://arxiv.org/pdf/2403.17694.pdf
代码地址:https://github.com/Zejun-Yang/AniPortrait
AniPortrait
腾讯新提出的 AniPortrait 框架包含两个模块:Audio2Lmk 和 Lmk2Video。
Audio2Lmk 的作用是提炼 Landmark 序列,其能从音频输出捕获复杂的面部表情和嘴唇动作。Lmk2Video 是利用这种 Landmark 序列来生成时间上稳定一致的高质量人像视频。
图 1 给出了 AniPortrait 框架的概况。
Audio2Lmk
对于一段语音片段序列,这里的目标是预测对应的 3D 人脸网格序列和姿式序列。
该团队采取了预训练的 wav2vec 来提炼音频特色。该模型具有很好的泛化性能,并且可以准确识别音频中的发音和语调 —— 这对生成具有真实感的人脸动画来说至关重要。通过利用所获得的鲁棒的语音特色,运用一种包含两个 fc 层的简单架构就可以有效地将它们转换成 3D 人脸网格。该团队观察到,这种简单直接的设想不仅能确保准确度,而且还能提升推理过程的效率。
在将音频转换成姿式的任务中,该团队运用的主干收集依然是同样的 wav2vec。但是,这一个收集的权重不同于音频到网格模块的收集。这是因为:姿式与音频中的节奏和音调的关联更加紧密,而音频到网格任务关注的重点(发音和语调)却不一样。为了将之前状态的影响纳入考量,该团队采取了一个 transformer 解码器来解码姿式序列。在这个过程中,该模块运用交叉注意力机制将音频特色调整进解码器。对于上述两个模块,训练运用的损失函数都是简单的 L1 损失。
在获得了网格和姿式序列之后,再运用透视投影将它们转换为 2D 的人脸 Landmark 序列。这些 Landmark 是下一阶段的输出信号。
Lmk2Video
给定一张参照人像和一个人脸 Landmark 序列,该团队提出的 Lmk2Video 可以创建具有时间一致性的人像动画。这个动画过程是将动作与 Landmark 序列对齐,同时维持与参照图象一致的外观。该团队采取的思路是将人像动画表示成一个人像帧构成的序列。
Lmk2Video 的这种收集结构设想的灵感来自 AnimateAnyone。其中的主干收集是 SD1.5,其调整了一个时间活动模块,能有效地将多帧噪声输出转换成一个视频帧序列。
另外,他们还运用了一个 ReferenceNet,其同样采取了 SD1.5 的结构,作用是提炼参照图象的外观信息并将其调整进主干收集中。这一策略设想可确保人脸 ID 在整个输出视频中保持一致。
不同于 AnimateAnyone,这里提升了 PoseGuider 的设想的复杂性。原来的版本只是集成了几个卷积层,之后 Landmark 特色与主干收集的输出层的隐含特色融合。而腾讯的这个团队发现,这种初级设想无法捕获嘴唇的复杂活动。因此,他们采取了 ControlNet 的多尺度策略:将相应尺度的 Landmark 特色调整进主干收集的不同模块。尽管有这些改进,但最终模型的参数数量依然相当低。
该团队还引入了另一项改进:将参照图象的 Landmark 用作一个额外的输出。PoseGuider 的交叉注意力模块能促进参照 Landmark 和每一帧的目标 Landmark 之间的互动。这一过程能为收集提供额外的线索,使其能够理解人脸 Landmark 和外观之间的关联,由此可帮助人像动画生成更精准的动作。
实验
实现细节
Audio2Lmk 阶段运用的主干收集是 wav2vec2.0。用于提炼 3D 网格和 6D 姿式的工具是 MediaPipe。Audio2Mesh 的训练数据来自腾讯的内部数据集,其中包含接近一个小时的来自单个说话人的高质量语音数据。
为了确保 MediaPipe 提炼出的 3D 网格的稳定性,在记录期间,表演者头部位置稳定并且面向相机。训练 Audio2Pose 运用的是 HDTF。所有的训练操作都在单台 A100 上执行,运用了 Adam 优化器,学习率设置为 1e-5.
Lmk2Video 过程则采取了一种两步式训练方法。
起始步骤阶段关注的重点是训练主干收集 ReferenceNet 以及 PoseGuider 的 2D 组件,而不管活动模块。在后续步骤,则会冻结其它所有组件,专注于训练活动模块。为了训练模型,这里运用了两个大规模高质量人脸视频数据集:VFHQ 和 CelebV-HQ。所有数据都经由 MediaPipe 来提炼 2D 人脸 Landmark。为了提升收集对嘴唇活动的敏感性,该团队的做法是在根据 2D Landmark 渲染姿式图象时,给上下唇标注不同的颜色。
所有图象的分辨率都重新调整成了 512×512。该模型的训练运用了 4 台 A100 GPU,每一步都耗时 2 天。优化器是 AdamW,学习率固定为 1e-5。
实验结果
如图 2 所示,新方法得到的动画在质量和真实度上都非常出色。
此外,用户还可以编辑其中间的 3D 表征,从而对最终输出进行修改。举个例子,用户可从某个源提炼 Landmark 并修改其 ID 信息,从而实现面部重现效果,如下视频所示:更多细节请参照原论文。