AniPortrait:音频驱动的逼真肖像动画合成。
code:Zejun-Yang/AniPortrait: AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation (github.com)
paper:[2403.17694] AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animation (arxiv.org)
出处:腾讯,2024.3.26
论文阅读
总结:
AniPortrait,一个由音频和参考肖像图像驱动的动画生成框架。方法分为两个阶段:
- 首先,从音频中提取3D中间表示,并将其投影到一系列2D面部地标中。
- 随后,采用鲁棒扩散模型,加上运动模块,将landmark序列转换为时间一致的肖像动画。
实验结果表明AniPortrait在面部自然度、姿态多样性和视觉质量方面具有优势,从而提供了增强的感知体验。此外在灵活性和可控性方面表现出相当大的潜力,可以有效地应用于面部动作编辑或面部再现等领域。
1. 介绍
生成肖像动画的挑战:唇部动作、面部表情和头部位置的复杂协调,以创造出逼真的效果。它们依赖于有限容量的生成器来创建视觉内容,如gan[3,17]、NeRF[14,13]或基于运动的解码器[16,8]。这些网络泛化能力有限,并且在生成高质量内容时缺乏稳定性。最近,扩散模型的出现[2,5,9]促进了高质量图像的生成。一些研究在此基础上结合了时间模块。
建立在扩散模型的进步,我们介绍AniPortrait,旨在生成高质量的动画肖像由音频和参考图像驱动。AniPortrait分为两个不同的阶段。
- 第一阶段,使用基于transformer的模型提取来自音频输入的一系列3D面部网格和头部姿势,投影到一系列2D面部landmark中。这个阶段能够从音频中捕捉细微的表情和嘴唇动作,以及与音频节奏同步的头部动作。
- 第二阶段,利用鲁棒扩散模型[9],结合运动模块[4],将面部transformer序列转换为时间一致且逼真的动画肖像。具体来说,借鉴了AnimateAnyone[6]的网络架构,使用Stable diffusion 1.5,基于身体运动序列和参考图像生成流体和逼真的视频。(我们在这个网络中重新设计的姿态引导模块。这种修改不仅保持了轻量化的设计,而且在产生唇运动时也表现出更高的精度。)
图1:pipeline。分为两个阶段:首先,从音频中提取三维面部网格和头部姿态,然后将这两个元素投影到二维关键点上。第二阶段,用扩散模型将2D关键点转换为人像视频。两个阶段同时训练。
2. 方法
提出的框架包括两个模块:Audio2Lmk和Lmk2Video。
Audio2Lmk:从音频输入中提取一系列landmark,捕捉复杂的面部表情和嘴唇动作。
Lmk2Video:利用这个landmark序列,生成具有时间稳定性的高质量人像视频。
2.1 Audio2Lmk
表示语音片段序列,目标是预测相应的3D人脸网格序列,其中每个mT∈R N×3,和姿态序列,每个p T是一个6维向量,表示旋转和平移。
用预训练的wav2vec[1]来提取音频特征,由两个fc层组成的简单架构,将提取的音频特征转换为3D面部网格。这种简单的设计不仅保证了准确性,而且提高了推理过程的效率。
在将音频转换为姿态的任务中,使用相同的wav2vec网络作为主干。但不与音频到网格模块共享权重。这是因为姿势与音频中的节奏和音调联系更紧密,这与音频到网格任务的重点不同。
为了考虑先前状态的影响,用transformer解码器来解码姿势序列。在此过程中,音频特征通过交叉注意机制集成到解码器中。
对于上述两个模块,用简单的L1 loss训练。
在获得网格和姿态序列后,用透视投影将它们转换为二维面部地标序列。这些标志随后被用作下一阶段的输入信号。
2.2 Lmk2Video
给定一个参考肖像图像Iref,并表示一个面部landmark序列,其中l T∈R N×2。Lmk2Video模块创建了一个时间上连贯的肖像动画,这个动画将运动与关键点序列对齐,并保持与参考图像一致的外观。将肖像动画表示为肖像帧序列:。
Lmk2Video的网络结构设计灵感来自AnimateAnyone。用SD1.5作为主干,结合了一个能够将多帧噪声输入转换为视频帧序列的时间运动模块。同时,采用参照SD1.5结构的ReferenceNet从参考图像中提取外观信息并整合到主干中。这种策略设计确保了面部ID在整个输出视频中保持一致。
与AnimateAnyone不同的是,我们增强了poseguide设计的复杂性。原始版本仅包括了几个卷积层,之后将关键点特征与骨干网络的输入层的潜在特征合并。
实验发现这种简单的设计无法捕捉嘴唇的复杂运动。因此,我们采用了ControlNet的多尺度策略,将相应尺度的关键点特征合并到骨干网络的不同模块中。尽管进行了这些增强,还是保持了较低的参数数量。
额外的改进:将参考图像的关键点作为额外输入。PoseGuider的交叉注意力模块促进了参考关键点与每帧目标关键点之间的交互。这个过程为网络提供了额外的线索,帮助理解面部关键点和外观之间的相关性,从而有助于生成具有更精确运动的肖像动画。
3. 实验
3.1 Implementation Details
在Audio2Lmk阶段,用wav2vec2.0作为骨干网络。用MediaPipe[7]提取3D网格和6D姿势进行注释。Audio2Mesh的训练数据来自我们的内部数据集,该数据集包含来自单个发言者的近一个小时的高质量语音数据。为了确保由MediaPipe提取的3D网格的稳定性,我们指示演员在整个录制过程中保持稳定的头部位置,面向摄像机。用HDTF[18]对Audio2Pose进行训练。所有训练都在一块A100上进行,使用Adam优化器,学习率为1e-5。
在Lmk2Video过程中,我们采用了两阶段训练方法。在初始阶段,我们专注于训练骨干网络的2D组件,ReferenceNet和Pose Guider,而不涉及运动模块。在随后的阶段,冻结所有其他组件,集中精力训练运动模块。用数据集VFHQ[12]和CelebV-HQ[19]来训练模型。所有数据都经过MediaPipe处理,以提取2D面部关键点。为了增强网络对唇部运动的敏感性,在渲染从2D关键点得到的姿势图像时,我们用不同的颜色区分上下唇。图像分辨率调整为512x512。用4块A100 GPU进行模型训练,每个阶段耗时两天。采用AdamW优化器,并使用恒定的学习率1e-5。
3.2 Results
利用中间的3D表示,可以对其进行编辑以操纵最终的输出。例如,我们可以从源图像中提取关键点并改变其ID,从而创建面部再现效果。
4. 结论
本研究提出了一个基于扩散模型的肖像动画框架。通过输入音频片段和一个参考图像,能够生成具有平滑的嘴唇运动和自然的头部运动的肖像视频。
利用扩散模型强大的泛化能力,该框架创建的动画展示了令人印象深刻的逼真图像质量和逼真的运动。然而,这种方法需要使用中间的3D表示,而获得大规模、高质量的3D数据的成本相当高。因此,生成的肖像视频中的面部表情和头部姿势无法摆脱“反直觉谷”效应。在未来,我们计划遵循EMO[10]的方法,直接从音频中预测肖像视频。
复现
1. Inference
环境配置基本和 MooreThreads/Moore-AnimateAnyone (github.com) 相同
下载好的权重目录:
问题1:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
解决:
sudo apt update
sudo apt install libgl1-mesa-glx