文章标题:DynamiCrafter: Animating Open-domain Images with Video Diffusion Priors 文章链接:https://arxiv.org/abs/2310.12190 作者:Jinbo Xin, Menghan Xia 等 项目地址:https://doubiiu.github.io/projects/DynamiCrafter/ 内容整理:王寒 任务定义为给定一张静止图片,生成一段与输入图片内容高度一致的短视频。给定的这张图片可以出现在视频的任意位置。DynamiCrafter利用T2V的运动先验,通过将图像作为生成过程中的指导来实现动画效果。突破了传统动画化方法在内容上的限制,实现了Open-domain图像动画化。实验结果表明,DynamiCrafter提出的方法能够产生视觉上真实且更符合逻辑和自然的运动,以及与输入图像更高的一致性。与现有竞争方法相比,DynamiCrafter显示出显著的优越性。此外,DynamiCrafter还可以轻松支持如故事化视频生成、循环视频生成和生成帧插值。
目录
图1 VideoCrafterVideoCrafter
VideoCrafter的网络架构如图所示,它包括T2V和I2V两个子任务,相应的需要注入Text prompt和image prompt。Motion speed用fps控制,fps和timestep有同样的结构。
图2 ViT
Text prompt与LDM一致使用CLIP text encoder得到
,为了让Image prompt对齐文本嵌入
的空间,使用CLIP image encoder来提取图像特征,但是它代表的视觉信息是semantic level的,不能捕捉图像的全部上下文信息。采用了CLIP image VIT最后一层的完整的视觉token。
为了让Denoising U-Net理解
,引入了一个Projection Net 来获得最终的上下文表示。
的结构是一个query transformer,如下图所示。
图3 Projection Net
最终Text embedding和Image embedding通过双路cross attn与Unet的中间特征交互,可以认为VideoCrafter能够根据文字描述建模多样化的视觉动效,它是DynamiCrafter的基础模型。
图片动画化任务,可以理解为一种特殊类型的图像条件视频生成,这种生成需要高度视觉一致性。DynamiCrafter的condition包括三部分:文本、图像上下文表示、图像。通过预训练的T2V模型引入文本信息;分别针对宏观信息理解和细节保留引入了两种不同的图像信息的注入方式:1.Text-aligned context representation:使用Query Transformer将图像投影到一个 与文本对齐 的隐空间中,这有助于基础视频模型(文生视频) 以兼容的方式理解图像内容。2.Visual detail guidance (VDG):一些视觉细节在生成的视频中仍然难以保留。为了补充更精确的图像信息,DynamiCrafter进一步将完整图像与初始噪声连接起来,并通过扩散模型进行处理。
图4 DynamiCrafter
DynamiCrafter使用与VideoCrafter相同的方法得到文本嵌入和上下文嵌入,通过双路cross attn与Unet中间特征交互,不同之处在于引入调整文本信息和图像信息特征的可学习参数(每层都不一样)。这种设计旨在促进模型以层依赖的方式吸收图像条件。由于U-Net的中间层更多地与物体形状或姿势相关,而两端层更多地与外观相关,我们期望图像特征主要影响视频的外观,而对形状的影响相对较小。
图5
及影响
上图展示了模型学习到的不同层的
值,表明图像信息在两端的层有更重要的影响。为了进一步探索,右图展示了手动调整
值的结果。增大
抑制了帧间运动,减小
不能保持物体的形状。这一结论不仅与本文的分析相对应,而且还表明,在图像条件扩散模型中,丰富的上下文信息影响了U-Net的某些中间层(第7-9层),使模型能够在动作存在的情况下保持与输入相似的物体形状。
丰富的上下文信息可以使生成视频与输入图片相似,但是细节方面还是有所欠缺。这主要是因为预训练的CLIP图像编码器是为了对齐视觉和语言信息,并不能完全保留输入图像的细节。为了增强视觉一致性,VDG将图像信息与每一帧的随机噪声拼接起来送入去噪U-Net。
虽然本文提出图像上下文的表示包含更丰富的信息,但是对于T2V模型来说,准确理解这些信息可能存在困难,加入文本嵌入给予模型一种更直接的方法来理解全局上下文,从而使模型更高效的利用图像信息。此外,一张动图可动的方向很多,文字描述可以根据用户的喜好有效指导其运动生成。
预训练的T2V模型由一个语义控制空间(text embedding)和一个完全随机空间(initial noise)组成。concatenate参考图像能提供丰富的low level信息,但是由于每一帧都加入了同样的图片,会引入空间空间错位,误导模型朝着不受控制的方向发展。对此,图像嵌入提供的精确视觉上下文可以帮助可靠地利用视觉细节。消融实验中有进一步讨论。
dataset:WebVid-10M 训练分3个阶段:
1)基于T2I模型(SD-v2.1)训练图像上下文表示网络。
2)调整到T2V模型(256x256的VideoCrafter),同时训练和空间层(不训时间层)30K steps。
3)加入VDG联合fine-tuning(仍然是只训练和空间层,应该避免破坏T2V模型的时间层先验,否则会造成严重的退化。)
训练过程中的参考图是随机选取的一帧,从而:
1)避免学习到concatenated的图像到特定位置的映射,
2)促使上下文表征更加灵活,避免为某一帧给出过于僵硬的信息。
测试集:UCF-101 & MSR-VTT
指标选择了FVD、KVD并提出了新指标PIC:
表1 定量实验
对比的方法加入了商业产品PikaLabs 和 Gen-2 (Nov. 1st, 2023)
图6 定性分析
VideoComposer :不连续 I2VGen-XL :细节差,审美差
Gen-2:突然的内容改变,消失/平移
PikaLabs:静态,模糊
上述方法都无法对齐文字对动作的描述。此外,针对动作质量、时间连续性和内容保持做了用户实验:
表2 用户实验
图7 消融实验-双路图片注入
context conditioning stream 显著影响了生成视频的质量和时间连续性;VDG 影响了细节和运动幅度;的引入有助于减小抖动和不自然的运动;最后一行研究了仅使用CLIP的Global token会导致只有语义上的一致不能保留细节信息
图8 第一阶段训练策略的影响
如果去掉第一阶段,在相同的优化步数下,直接在T2V模型上训练P只能保证粗粒度的上下文信息。
图9 finetune参数影响
如果finetune整个T2V网络会破坏时序先验,造成视频内容的不连续;如果固定参考图为第一帧训练,会导致首帧和后续帧的突变(图9最后一行),FVD、PIC指标也反映了这一点;作者将这一现象归因于模型将图像condition直接映射到第一帧而忽略了对其他帧的指导。
由于图像通常与其上下文中的多种潜在动态相关联,因此文本可以补充指导根据用户偏好定制动态内容的生成。然而,现有大规模数据集中的字幕通常由大量场景描述词和较少的动态/运动描述组成,可能导致模型在学习过程中忽略动态/运动。对于图像动画,场景描述已经包含在图像条件中,而运动描述应视为文本条件,以解耦的方式训练模型,为模型提供更强的基于文本的动态控制。为了实现解耦训练,本文通过过滤和重新注释 WebVid10M 数据集来构建数据集,如图所示。
图10 Motion数据集制作
构建的数据集包含具有更纯粹的动态措辞的标题,例如“Man doing push-ups.”,以及类别,例如“human”。使用该数据集训练模型 DynamiCraterDCP,并通过 40 个图像提示测试案例验证其有效性,这些测试案例以具有模糊潜在动作的人物为特征,并提示描述各种动作(e.g., “Man waving hands” and “Man clapping”). 测量提示和视频结果之间的平均 CLIP 相似度 (CLIP-SIM),DynamiCraterDCP 将 CLIP-SIM 得分的性能从 0.17 提高到 0.19。视觉比较表明,Gen-2 和 PikaLabs 无法支持使用文本的运动控制,而 DynamiCrafter 反映了文本提示的动作,并通过提出的解耦训练在 DynamiCrafterDCP 中得到了进一步增强。
DynamiCrafter 可轻松进行调整以支持其他应用。
图11 其他应用
i)Storytelling with shots. 利用ChatGPT(w/ DALL-E 3 )生成故事脚本和相应的图。然后,可以使用 DynamiCrafter 通过故事脚本对这些图进行动画处理,从而生成Storytelling的视频,如图(row 1)。
ii).Looping video generation. 通过较小的修改,这个框架可以适应循环视频的生成。具体来说,提供 x1 和 xL 作为视觉细节指导,并在训练期间将其他帧保留为空。在推理过程中,将它们都设置为输入图像。此外,作者尝试在更高分辨率 (320×512) 版本的 VideoCrafter 之上构建此应用。循环视频结果如图(row 2)。
iii)Generative frame interpolation. 修改后的模型通过设置不同的输入图像 x1 和 xL 来实现生成帧插值,如图(row 3)。