背景
最近视频生成方向取得重大进展,陆续有大厂VideoCrafter1, Stable Video Diffusion开源最新的图生视频模型。但是这些模型基本上还是使用文本来对视频进行控制,从这些项目放出来的效果图来看,文本只能在全局上对视频进行引导,无法做到精细的局部控制。另外生成的视频细节上仍与输入的图片仍有细微的差别,特别是人物面部特征和皮肤纹理上,这些细微差别很容易的看出视频中的物体和输入的物体不一致。
image_animation_examples
方案介绍
近日我们团队提出了一种高保真的可控动图生成方案AnimateAnything,能够可控的对任意图片进行驱动。让古力娜扎跟你说话,让蒙娜丽莎朝你笑,刷刷几笔,清明上河图中的人物也能动起来,只需上传一张图片,就可以通过文本,motion brush, motion strength多种控制方式生成想要的动图。
为了精细控制动画中的运动,我们首先通过motion brush控制图片中的可动区域。用户只需在图片上画几笔指定可动区域,即可让这些区域根据prompt的指示动起来,并保持其余区域不动。为了实现这样的效果,在训练时,我们从真实的视频中生成了可动区域的mask, 然后将mask与用户输入的图片一同送到网络中引导网络学习可动区域mask与真实视频之间的运动关系。
在图片上添加运动区域mask, prompt: peoples are walking on the street.
同时我们提出了motion strength的参数来控制物体的运动速度。motion strength与传统的FPS控制速度不同,FPS只是代表视频帧的刷新率,有可能FPS很高但视频中物体不动的情况,而motion strength衡量的是视频中物体位置的差异,更符合用户的体感。
motion strength=5
motion strength=20
如何实现
训练过程
AnimateAnything在video diffusion模型的基础上进行高质量的微调, 我们对HD- VILA-100M数据集进行清理过滤,挑选出了20万个视频片段。在训练的时候,我们保留每一个视频的第一帧的clean latent, 往剩下帧的latent上加入噪声,让网络预测出完整视频。同样,在推理时,我们也通过在输入图像加噪的方式初始化视频latent,这个方法大大提高了图像的保真度。为了控制视频的运动区域, 我们从真实视频中合成了只有motion mask中指定区域运动的视频,然后将motion mask与每一帧的视频latent叠加输入网络之中。为了控制视频的运动强度,我们提出了motion strength loss来约束视频帧间的差异性。
具体细节可以查看论文:Fine-Grained Open Domain Image Animation with Motion Guidance.
更多的例子可以查看下面的链接,同时代码和模型即将开源,欢迎大家试用