一、关于 AnimateDiff
此存储库是AnimateDiff[ICLR2024 Spotlight]的官方实现,它是一个即插即用模块,将大多数社区文本到图像模型转换为动画生成器,无需额外培训。
AnimateDiff:动画您的个性化文本到图像的扩散模型,无需特定的调整
*注:*该main
分支用于稳定扩散V1.5;对于稳定扩散XL,请参考sdxl-beta
分支。
演示
更多结果可以在画廊中找到。其中一些是由社区贡献的。
模型:ToonYou
二、快速入门
注意:AnimateDiff 也正式支持 AnimateDiff。请访问 AnimateDiff Diffusers Tutorial 了解更多详细信息。以下说明适用于使用此存储库。
注意:对于所有脚本,检查点下载将被自动处理,因此首次执行时运行的脚本可能需要更长的时间。
1、设置存储库和环境
git clone https://github.com/guoyww/AnimateDiff.git
cd AnimateDiff
pip install -r requirements.txt
2、启动采样脚本!
生成的样本可以在samples/
文件夹中找到。
2.1 使用社区模型生成动画
python -m scripts.animate --config configs/prompts/1_animate/1_1_animate_RealisticVision.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_2_animate_FilmVelvia.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_3_animate_ToonYou.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_4_animate_MajicMix.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_5_animate_RcnzCartoon.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_6_animate_Lyriel.yaml
python -m scripts.animate --config configs/prompts/1_animate/1_7_animate_Tusun.yaml
2.2 使用 MotionLoRA 控件生成动画
python -m scripts.animate --config configs/prompts/2_motionlora/2_motionlora_RealisticVision.yaml
2.3 使用 SparseCtrl RGB 和 sketch 进行更多控制
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_1_sparsectrl_i2v.yaml
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_2_sparsectrl_rgb_RealisticVision.yaml
python -m scripts.animate --config configs/prompts/3_sparsectrl/3_3_sparsectrl_sketch_RealisticVision.yaml
2.4 Gradio 支持
我们创建了一个Gradio演示,使AnimateDiff更易于使用。默认情况下,演示将在localhost:7860
运行。
python -u app.py
三、技术说明
1、AnimateDiff
AnimateDiff旨在学习可应用于稳定扩散家族其他变体的可转移运动先验。为此,我们设计了以下由三个阶段组成的训练管道。
- 在1.减轻负面影响阶段,我们训练域适配器,例如
v3_sd15_adapter.ckpt
,以适应训练集中有缺陷的视觉事实(例如水印)。这也有利于运动和空间外观的远程学习。默认情况下,适配器可以在推理时移除。它也可以集成到模型中,其效果可以通过lora缩放器进行调整。 - 在2.学习运动先验阶段,我们训练运动模块,例如
v3_sd15_mm.ckpt
,从视频中学习真实世界的运动模式。 - 在3.(可选)Adapt to New Patterns阶段,我们训练MotionLoRA,例如
v2_lora_ZoomIn.ckpt
,以有效地使运动模块适应特定的运动模式(相机变焦、滚动等)。
2、SparseCtrl
SparseCtrl旨在通过采用一些稀疏输入(例如,少量RGB图像或草图输入)为文本到视频模型添加更多控制。它的技术细节可以在以下论文中找到:
四、模型版本
1、AnimateDiff v3和SparseCtrl(2023.12)
在这个版本中,我们使用域适配器LoRA进行图像模型微调,这提供了更多的推理灵活性。我们还实现了两个(RGB图像/涂鸦)SparseCtrl编码器,它可以采用大量的条件映射来控制动画内容。
AnimateDiff v3 Model Zoo
Name | HuggingFace | Type | Storage | Description |
---|---|---|---|---|
v3_adapter_sd_v15.ckpt | Link | Domain Adapter | 97.4 MB | |
v3_sd15_mm.ckpt.ckpt | Link | Motion Module | 1.56 GB | |
v3_sd15_sparsectrl_scribble.ckpt | Link | SparseCtrl Encoder | 1.86 GB | scribble condition |
v3_sd15_sparsectrl_rgb.ckpt | Link | SparseCtrl Encoder | 1.85 GB | RGB image condition |
限制
- 微小的变化是显而易见的;
- 为了保持与通信模型兼容,一般T2V没有特定的优化,导致在此设置下视觉质量有限;
- (样式对齐)对于图像动画/插值等用法,建议使用由同一社区模型生成的图像。
演示
2、AnimateDiff SDXL-Beta(2023.11)
在SDXL上发布运动模块(测试版),可在Google Drive/HuggingFace/CivitAI获得。高分辨率视频(即具有各种纵横比的1024x1024x16帧)可以使用/不使用个性化模型制作。推理通常需要~13GB VRAM和调整的超参数(例如采样步骤),具体取决于所选择的个性化模型。
签出到分支sdxl以获取推理的更多详细信息。
AnimateDiff SDXL-Beta 模型 Zoo
名称 | HuggingFace | 类型 | 存储空间 |
---|---|---|---|
mm_sdxl_v10_beta.ckpt | Link | Motion Module | 950 MB |
演示
3、AnimateDiff v2(2023.09)
在此版本中,运动模块mm_sd_v15_v2.ckpt
(Google Drive/HuggingFace/CivitAI)在更大的分辨率和批量大小下进行训练。我们发现放大训练显着有助于提高运动质量和多样性。
我们还支持八种基本相机运动的MotionLoRA。MotionLoRA检查点仅占用每个模型77 MB存储空间,可在Google Drive/HuggingFace/CivitAI获得。
AnimateDiff v2模型 Zoo
名称 | HuggingFace | 类型 | 参数 | 存储 |
---|---|---|---|---|
mm_sd_v15_v2.ckpt | 链接 | Motion Module | 453 M | 1.7 GB |
v2_lora_ZoomIn.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_ZoomOut.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_PanLeft.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_PanRight.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_TiltUp.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_TiltDown.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_RollingClockwise.ckpt | 链接 | MotionLoRA | 19 M | 74 MB |
v2_lora_RollingAnticlockwise.ckpt | 链接 | MotionLoRA | 19 M | 74 MBv2_lora_ |
演示(MotionLoRA)
演示(改进的动作)
这是 mm_sd_v15.ckpt
(左)和改进的 mm_sd_v15_v2.ckpt
(右)之间的比较。
4、AnimateDiff v1(2023.07)
AnimateDiff的第一个版本!
AnimateDiff v1 模型 Zoo
名称 | HuggingFace | 参数 | 存储空间 |
---|---|---|---|
mm_sd_v14. ckpt | 链接 | 417 M | 1.6 GB |
mm_sd_v15.ckpt | 链接 | 417 M | 1.6 GB |
五、训练
请查看训练步骤了解详情。
1、数据集
在训练之前,将视频文件和WebVid10M的.csv
注释下载到本地机器。请注意,我们的示例训练脚本要求将所有视频保存在一个文件夹中。您可以通过修改animatediff/data/dataset.py
来更改此设置。
2、配置
准备好数据集后,更新configs/培训/文件夹中config.yaml``configs/training/
以下数据路径:
train_data:
csv_path: [Replace with .csv Annotation File Path]
video_folder: [Replace with Video Folder Path]
sample_size: 256
其他训练参数(lr、Epoch、验证设置等)也包含在配置文件中。
3、训练
微调unet的图像层
torchrun --nnodes=1 --nproc_per_node=1 train.py --config configs/training/v1/image_finetune.yaml
来训练 motion 模块
torchrun --nnodes=1 --nproc_per_node=1 train.py --config configs/training/v1/training.yaml
六、其它
1、相关资源
用于 Stable Diffusion WebUI的AnimateDiff:sd-webui-animatediff(由 @continue-revolution )
用于 ComfyUI 的 AnimateDiff:ComfyUI-AnimateDiff-Evolved(由 @Kosinkadink)
谷歌 Colab:Colab(由 @camenduru)
2、免责声明
本项目仅供学术使用。我们不对用户生产内容负责。此外,请注意,我们唯一的官网链接是https://github.com/guoyww/AnimateDiff 和 https://animatediff.github.io,所有其他网站都与AnimateDiff无关。
2025-01-07(二)