Audio-Driven THG(一):Emote Portrait Alive浅析

前言

  本文介绍阿里的Emote Portrait Alive[1](之前talking head领域也有一篇EMO,所以就不简称了)的思路与方法。

Diffusion-Based talking head generation

  在Emote Portrait Alive发布之前,事实上学界已经有不少基于Diffusion做Talking head generation,例如DiffTalk[2]:DiffTalk

想法也非常直接,mask人脸中嘴唇的部分,音频与landmark作为控制信号,用cross-attention加入到Denoising UNet里。包括Diffused Heads[3]也比较类似:

Diffused Heads

区别在于Diffused Heads使用的是identity image进行生成,而DiffTalk仅生成嘴部。这两篇早期的工作虽然都用到了Diffusion,但都是from-scratch的训练,而且生成结果抖动比较厉害(见DiffTalk的demo视频)。

Backbone

  首先我们来看Emote Portrait Alive的基本框架,其同样基于Diffusion,同时基于现有的Diffusion-based的图像生成模型(Stable Diffusion,SD),加入时序模块(Temporal Modules,下文详细介绍)做视频生成,diffusion前后借鉴之前3DMM的思路用的是SD的VAE latents。

Emote Portrait Alive框架

  同时值得注意的是identity的feature没有和之前的工作一样,用单个encoder的feature通过cross-attention加入到backbone中,而是参考了Animate Anyone[4]和TryonDiffusion中的双塔UNet结构,即身份特征提取模块和去噪模块使用相同的结构,将中间的每层输出的特征都用cross-attention加入到denoising UNet中,替换的是原版SD UNet的text特征的cross-attention(某种程度上也算是参考了ControlNet):

Emote Portrait Alive同组的工作Animate Anyone

  我们已经介绍了UNet大层Transformer里的self-attention和reference-attention,接下来我们介绍Emote Portrait Alive中控制信号的引入和时序模块。

Conditions

  首先来看音频信号,Emote Portrait Alive使用的还是Wav2Vec,细节在于不单单使用当前帧的audio特征,而是像PIRender的3DMM一样使用前后$2m+1$窗口大小的特征,而后跟在reference的cross-attention之后做音频特征的cross-attention,实际$m=2$。
  如果只逐帧生成,则结果想必抖动地很厉害,因此将已生成的结果引入当前帧的生成是一个很自然的想法,也就是很多工作中的所谓motion frames。Emote Portrait Alive中的时序模块也和animate anyone中一样,基于AnimateDiff,直接在时间维度做self-attention。具体而言,设一次生成帧的数量为$f$,denoising net特征图$\{\boldsymbol x\in \mathbb R^{b\times c\times f\times h\times w}\}$,其中$b,c$分别是batch size和特征的channel数。而后将其reshape到$(b\times h\times w)\times f\times c$。而后将已生成的后$n$帧的reference net特征图与其拼接得到$\{\boldsymbol x'\in \mathbb R^{(b\times h\times w)\times (f+n)\times c}\}$,而后在时间维度使用self-attention,实际$f=12,n=4$。
  此外注意到时序层只能保证前后帧的连续性,而不能保证人脸运动的一致性和稳定性,如果用较强的控制信号如3DMM或者landmark则表现力与生动性会下降许多。因此Emote Portrait Alive使用了更低层次的特征即头部运动速度。你问表情如何保证稳定且自然?交给SD吧!
  具体来说,是基于mediapipe估计头部位姿得到6-dof的序列,通过差值得到速度序列,而后分桶离散化后过一个token embedding,得到每帧的头部速度特征$\boldsymbol s^t$,而后类似audio特征,将前后$2m+1$个滑窗内的特征过一个线性层得到$\mathbf F\in\mathbb R^{b\times f\times l}$,而后repeat到$\mathbf F'\in \mathbb R^{(b\times h\times w)\times f\times l}$,而后与reshape的denoising net特征图做cross-attention,再接上文的时序self-attention,实际$m=2$与audio层相同。
  其次我们知道头部pose由6-dof+3-dim的位置决定,自然为了更好控制头部序列我们需要用到位置。Emote Portrait Alive考虑了头部位置,即整个视频脸部bounding box的并集,而后通过一个小卷积加在噪声上输入denoising net。

Training

  Emote Portrait Alive的训练比较有意思分为三个阶段:

  • Stage1:训练Backbone、reference net、Face Locator,输入单帧,主要是训练图像生成能力。其中denoising net和reference net都从SD初始化。
  • Stage2:加入temporal modules和audio layers,主要训练时序建模与音频控制。
  • Stage3:加入speed layers,只训练temporal modules和speed layers,关闭audio layers的训练主要是考虑到音频和速度都和口型有相关性,如果同时训练会破坏音频对人物口型的驱动能力。

  总体而言也是一个从粗到细的分段。

Experiments

  训练时的分辨率是512*512,模型的输入输出和SD一样是通过VAE压缩8倍的latents,第一阶段batch size取为48,后面两阶段batch size为4。推理时使用40-step的DDIM,头部速度取固定值,推理12帧需要15秒。
  数据方面除了HDTF外还使用了仅视频数据集VFHQ,此外还额外收集了250小时的数据。

Conclusions

  实验结果方面就不必说了,想必大家都已经看过了,由于建模了头部运动速度,因此运动比较自然,而且由于使用了SD,ID泛化也非常不错。总体而言有四方面的takeaways:

  • 验证了使用相似结构对提取ID信息的重要性
  • SD是一个相当强的先验
  • 除音频外的控制信号太强或者太弱都不好
  • 高质量高清的数据集很重要

  Emote Portrait Alive的巨大成功也催发了一大批类似的基于图像生成模型+双塔的工作,例如基于SD的hallo,EchoMimic,Loopy等,还有基于DiT的MegActor-Σ等,我们接下来将分别介绍他们的思路与方法。

References

  1. Emote Portrait Alive: Generating Expressive Portrait Videos with Audio2Video Diffusion Model under Weak Conditions, ECCV 2024 -Emote Portrait Alive
    Linrui Tian , Qi Wang, Bang Zhang, and Liefeng Bo, 2024.2 | arXiv pdf Project homepage
  2. DiffTalk: Crafting Diffusion Models for Generalized Audio-Driven Portraits Animation, CVPR 2023 -DiffTalk
    Shuai Shen, Wenliang Zhao, Zibin Meng, Wanhua Li, Zheng Zhu, Jie Zhou, Jiwen Lu, 2023.1 | arXiv pdf Project homepage demo video
  3. Diffused Heads: Diffusion Models Beat GANs on Talking-Face Generation, WACV 2024 -Diffused Heads
    Michał Stypułkowski, Konstantinos Vougioukas, Sen He, Maciej Zięba, Stavros Petridis, Maja Pantic, 2023.1 | arXiv pdf Project homepage Official Implementaion demo video
  4. Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation, CVPR 2024 -Animate Anyone
    Li Hu, Xin Gao, Peng Zhang, Ke Sun, Bang Zhang, Liefeng Bo, 2023.11 | arXiv pdf Project homepage
如果觉得我的文章对你有用,请随意赞赏