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 框架包含两个模块:Audio2Lmk 和 Lmk2Video。Audio2Lmk 的作用是提取 Landmark 序列,其能从音频输入捕获复杂的面部表情和嘴唇动作。Lmk2Video 是利用这种 Landmark 序列来生成时间上稳定一致的高质量人像视频。图 1 给出了 AniPortrait 框架的概况。
对于一段语音片段序列,这里的目标是预测对应的 3D 人脸网格序列和姿势序列。该团队采用了预训练的 wav2vec 来提取音频特征。该模型具有很好的泛化性能,并且可以准确识别音频中的发音和语调 —— 这对生成具有真实感的人脸动画来说至关重要。通过利用所获得的鲁棒的语音特征,使用一种包含两个 fc 层的简单架构就可以有效地将它们转换成 3D 人脸网格。该团队观察到,这种简单直接的设计不仅能确保准确度,而且还能提升推理过程的效率。在将音频转换成姿势的任务中,该团队使用的骨干网络依然是同样的 wav2vec。但是,这一个网络的权重不同于音频到网格模块的网络。这是因为:姿势与音频中的节奏和音调的关联更加紧密,而音频到网格任务关注的重点(发音和语调)却不一样。为了将之前状态的影响纳入考量,该团队采用了一个 transformer 解码器来解码姿势序列。在这个过程中,该模块使用交叉注意力机制将音频特征整合进解码器。对于上述两个模块,训练使用的损失函数都是简单的 L1 损失。在获得了网格和姿势序列之后,再使用透视投影将它们转换为 2D 的人脸 Landmark 序列。这些 Landmark 是下一阶段的输入信号。给定一张参考人像和一个人脸 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 渲染姿势图像时,给上下唇标注不同的颜色。所有图像的分辨率都重新调整成了 512x512。该模型的训练使用了 4 台 A100 GPU,每一步都耗时 2 天。优化器是 AdamW,学习率固定为 1e-5。如图 2 所示,新方法得到的动画在质量和真实度上都非常出色。
此外,用户还可以编辑其中间的 3D 表征,从而对最终输出进行修改。举个例子,用户可从某个源提取 Landmark 并修改其 ID 信息,从而实现面部重现效果,如下视频所示:更多细节请参考原论文。 以上是Up主已经开始鬼畜,腾讯开源「AniPortrait」让照片唱歌说话的详细内容。更多信息请关注PHP中文网其他相关文章!