EMO (humanaigc.github.io)

EMO(Emote Portrait Alive)

背景

作者提出了一种基于Diffusion的audio2video的方法。前人的方法要么用视频作为guidence,要么用单张图的3D点云作为guidence。后者由于自由度受限,导致画面不够逼真。这两者都没有用到DIffusion。

本文的创新点:Diffusion+单张图+音频的e2e

网络架构

Untitled

Key Parts

  1. Audio Layer: Wav2Vecwav2vec: Unsupervised Pre-Training for Speech Recognition (arxiv.org). 看论文,其实就是对audio做多次一维的卷积,逐步增加感受野。EMO作者认为这个感受野还不够大,所以又对这一部分左右扩充。

Untitled

  1. Temporal Layer: 即AnimateDiff采用的motion layer。在这里作者提出了新的概念”motion frames”。 考虑到音频一般比较长,一次性生成视频的帧数受到Temporal Layer的限制(输入为24帧)。具体的方法其实和最早在EDGE提出的一样。

Untitled

  1. Why facial locator and speed layer?回想Animate Anyone,制作数据集保证了pose和视频之间的对应关系,但在inference阶段,还需要另外调节pose和目标图片的对应关系。这里由于音频本身包含不了任何空间信息,所以在训练阶段就要额外加入对应的空间信息。 另外作者提出,不同的训练视频有不同的运动速度,为了保持这一部分的一致性,作者加入额外的头部运动速度信息。 这两部分被称为weak control。weak 相对 strong,能够实现更逼真的效果。

  2. 关于speed layer的具体实现:

    1. 对于每一个frame,得到唯一的omega^f,代表头部转动的速度,
    2. 对于每一个omega^f,将其离散化到d个值,每个值由以下公式给出

    Untitled

    其中c为中间值,r为半径,这作为设计时的超参数。

    c. 因此得到[B,F,D],在B维度重复HW次,得到[BH*W,F,D],就可以作为cross attention的输入了。这里的重复实际上包含了每个像素点的速度是相同的。作者说实际视频的转动要远比这个估计要复杂,这个估计含有比加大的噪声/自由度。

TRAINING and INFERENCE

stage1:

ReferenceNet,UNet(exclude temporal layer),facial locator

stage2:

speed layer + temporal layer