AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning
讲背景: stable diffuison, DreamBooth, LoRA的发展, T2I任务成本降低, 但是将motion dynamics添加到T2I模型做animation并不容易. 提出AnimateDiff, animation personalized通用框架, 可插拔模块.(这个摘要云里雾里的, 什么叫animate personalized, 还是有必要解释一下的. 根据已有知识, 它的贡献应该是为为T2I任务引入了时间层, 支持视频生成, 即原文提到的motion dynamics.)

介绍
T2I模型让艺术家可以使用提示词创作视觉内容, LoRA, DreamBooth这样的技术, 可以让个人使用低算力小数据集微调改善视觉质量. 但是技术限制在静态图片, 生成动画在真实世界更有需求, 但是并不容易实现.
AnimateDiff的核心是一个即插即用的通用motion module, 训练分三个阶段, 根据经验这种概括很难理解, 详细在method章节再看.
评估用的hf和civitai上的模型, 发现沿时间轴的Transformer足以捕获运动先验, 可以无缝插入实现视频生成.
相关工作
Text-to-Image diffusion model. GLIDE引入文本条件; DALL-E2使用CLIP改善文本和image的对齐; Imagen结合大语言模型和级联结构达到逼真的效果; Stable Diffusion的VAE大大降低训练成本.
personalizing T2I models. 个性化可以高效运用T2Imodel的创造力, 最直接的方法是微调, 但是当微调数据集很小时会带来catastrophic forgetting. DearmBooth用了一个preservation使在小数据集上微调成为可能, LoRA引入了LoRA Layer, 只优化权重残差. DreamBooth, LoRA方法保持了原始T2I的特征空间, 该论文的采用了这种基于微调的方法.
Animating personalized T2Is. 相关工作不多, 大多数方法都是更新所有参数, 修改原始T2I的特征空间, 没法做个性化. 后面介绍了几篇论文在tuning-based 方法上的研究.
预备知识
关于Stable Diffusion和LoRA的, LoRA就是添加一个秩压缩矩阵, 在attention块中作为一个残差连接, 只优化添加的权重, 原结构参数freeze.
AnimateDiff

Domain Adapter
使用Domain Adapter去缓解T2I训练数据和我们的视频训练数据直接的视觉分布gap. 基于这样一个观点, 视频质量要普遍比图片质量差, 这个gap会限制animation generation的质量.
他们的应对思路是"将领域信息适配到一个独立的网络中", 称作Domain Adapter.
用LoRA实现, 并把它插入T2I的self/cross attn层中, 如上图的图一. 在训练时, adapter起作用, 感知视频域的特征, 推理是把设置为0, 看起来像一种防止过拟合的方法.
Motion Module
为了在预训练T2I之上model motion动态信息, 需要解决两个问题: 1) 膨胀2D diffusion处理三维视频数据; 2) 在时间维度进行高效的信息交换.
Network Inflation. 对视频 , 相比图片多了一个维度f表示帧数, 我们的方法是reshape到b. 在做时间注意力时, 把h和wreshape到b. 他这里x的表示方式有点奇怪, 但是问题不大.
Module Design. 文中是这样表述的, x被reshape为长度为f的向量序列, , 这样做自注意力的时候就可以促进帧间的交互, 同时指出使用sinusoidal position encoding是必要的, 不然模型没法感知帧间顺序. 尾部加了个映射层, 使用零初始化.
Motion LoRA
这个是为其他人后续微调准备的, 像适应摄像机变焦、摇摄和平移等等. 直接看上面method的图吧, 没有什么其他信息.
AnimateDiff in Practice
训练. 他的核心思想还是在训练过程中, 将视频表示 reshape为
推理. 没啥好讲的, Domain Adapter并没有直接删掉, 他们通过一个消融实验找到了一个更好的值.
实验
我们先来回顾一下他的工作, 1) motion module, 本质是一个时间层, 捕获motion动态信息, T2I到T2V; 2)motionLoRA, 用户后续微调. 对于第一个工作, 他们在社区找了很多模型, 加上motion module后定性的查看效果, 还和其他相似论文的方法进行了比较, 但主要也是从定性的角度, 有一个定量的方法叫CLIP metric. 对于第二个工作, 他们尝试了zoom-in, rolling, zoom-out + rolling等不同的风格, 也是定性的一个方法.
实验用的数据集是WebVid10M, 消融实验比较了Domain Adapter(调整的值), Motion Module(transformer/convolution), MotionLoRA(改变rank和训练数据N)
补充
后面是在可控生成方便的应用, 结论, 道德声明和可重复性声明跳过.
感受
高引论文, Moore Animate Anyone就是根据这篇论文作为codebase改的, 实验要着手做视频生成了, 想着无论如何要看一看.
在算力不是很充足, 用视频数据直接训练一个T2V很困难的背景下, 想到从预训练T2I微调达到animation generation的目的, 很赞, 文中提出的一些思想在后续CongVideoX这类视频生成模型中依然可以找到一些影子.
很有启发性的一篇文章, 很经典的"技术风格", 相信它提到的任务都做了, 也都写下来了, 代码也都开源了, 还很注重实践(乐, 本科毕设答辩评委对我说的原话), hf和civitai都在关注, 不讨厌只是感慨一下在当前评价体系下没有优势.
btw, 这是我第一次见到做微调是在channel dimension拼接的.