论文:EMO: Emote Portrait Alive - Generating Expressive Portrait Videos with Audio2Video Diffusion Model under Weak Conditions
亮点:无需中间的3D模型或面部标志,通过音频提示生成表情丰富的肖像视频。
解决了单图+音频的视频生成中的常见问题:头部运动和北京会有比较大的割裂感(比如SadTalker)。
方法介绍
整个算法被分为两个阶段:Frame Encoding和Diffusion Process。
Frame Encoding: 将参考帧和运动帧叠加起来,输出VAE Encoder, 将输出的latent输入给一个referenceNet提取特征表示。
Diffusion Process: 将语音,人脸区域,noisy,Head speed分别通过不同的方式注入到Backbone Network,将输出的特征表示通过VAE Decoder转换为图片。在backbone network里用到了两种类型的Attention(Reference-Attention and Audio-Attention)。
训练
训练数据集:使用了超过250小时的视频和超过1.5亿张图像,还是用到了HDTF和VFHQ两个公开数据集。
数据预处理:使用MediaPipe Face detection获取bouding box。提取每帧的 6DoF 头部姿势来标记头部旋转速度。从数据集中采样的video clips并裁剪为 512 × 512
训练分为三个阶段,图像预训练、视频训练和速度层训练.
图像预训练:基于SD模型初始化backbone和ReferenceNet,BackBone基于单张图输入,Reference image和target image从视频中采样获得,Batch size被设置成48。
[b,c,1,h,w]
视频预训练:基于animateDiff初始化temporal module。生成视频长度设置为f=12,运动帧数设置为n=4,Batch size为4
输入:[b,c,f,h,w] --->[(b*h*w),f,c]
速度层训练:冻结音频layer,只训练temporal module和speed layers。