AnimateDiff


一、关于 AnimateDiff

此存储库是AnimateDiff[ICLR2024 Spotlight]的官方实现,它是一个即插即用模块,将大多数社区文本到图像模型转换为动画生成器,无需额外培训。

AnimateDiff:动画您的个性化文本到图像的扩散模型,无需特定的调整


*注:*该main分支用于稳定扩散V1.5;对于稳定扩散XL,请参考sdxl-beta分支。


演示

更多结果可以在画廊中找到。其中一些是由社区贡献的。


模型:ToonYou

在这里插入图片描述


模型:Realistic Vision V2.0

在这里插入图片描述


二、快速入门

注意: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

NameHuggingFaceTypeStorageDescription
v3_adapter_sd_v15.ckptLinkDomain Adapter97.4 MB
v3_sd15_mm.ckpt.ckptLinkMotion Module1.56 GB
v3_sd15_sparsectrl_scribble.ckptLinkSparseCtrl Encoder1.86 GBscribble condition
v3_sd15_sparsectrl_rgb.ckptLinkSparseCtrl Encoder1.85 GBRGB image condition

限制
  1. 微小的变化是显而易见的;
  2. 为了保持与通信模型兼容,一般T2V没有特定的优化,导致在此设置下视觉质量有限;
  3. (样式对齐)对于图像动画/插值等用法,建议使用由同一社区模型生成的图像。

演示

在这里插入图片描述


2、AnimateDiff SDXL-Beta(2023.11)

在SDXL上发布运动模块(测试版),可在Google Drive/HuggingFace/CivitAI获得。高分辨率视频(即具有各种纵横比的1024x1024x16帧)可以使用/不使用个性化模型制作。推理通常需要~13GB VRAM和调整的超参数(例如采样步骤),具体取决于所选择的个性化模型。
签出到分支sdxl以获取推理的更多详细信息。


AnimateDiff SDXL-Beta 模型 Zoo

名称HuggingFace类型存储空间
mm_sdxl_v10_beta.ckptLinkMotion Module950 MB

演示

在这里插入图片描述


3、AnimateDiff v2(2023.09)

在此版本中,运动模块mm_sd_v15_v2.ckptGoogle Drive/HuggingFace/CivitAI)在更大的分辨率和批量大小下进行训练。我们发现放大训练显着有助于提高运动质量和多样性。
我们还支持八种基本相机运动的MotionLoRA。MotionLoRA检查点仅占用每个模型77 MB存储空间,可在Google Drive/HuggingFace/CivitAI获得。


AnimateDiff v2模型 Zoo

名称HuggingFace类型参数存储
mm_sd_v15_v2.ckpt链接Motion Module453 M1.7 GB
v2_lora_ZoomIn.ckpt链接MotionLoRA19 M74 MB
v2_lora_ZoomOut.ckpt链接MotionLoRA19 M74 MB
v2_lora_PanLeft.ckpt链接MotionLoRA19 M74 MB
v2_lora_PanRight.ckpt链接MotionLoRA19 M74 MB
v2_lora_TiltUp.ckpt链接MotionLoRA19 M74 MB
v2_lora_TiltDown.ckpt链接MotionLoRA19 M74 MB
v2_lora_RollingClockwise.ckpt链接MotionLoRA19 M74 MB
v2_lora_RollingAnticlockwise.ckpt链接MotionLoRA19 M74 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 M1.6 GB
mm_sd_v15.ckpt链接417 M1.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(二)

### 关于 Animatediff 和 LoRA 的使用教程和技术文档 #### 动画生成工具概述 Animatediff 是一种用于创建平滑过渡动画的技术,能够帮助用户快速掌握制作过渡动画的整体逻辑[^1]。此技术不仅限于影视制作,在广告宣传、教育培训等领域也有广泛应用[^2]。 #### 技术实现原理 AnimateDiff 通过特定算法处理图像序列之间的转换关系,从而实现场景间的自然切换效果。然而需要注意的是,由于其批处理特性,可能存在不完全兼容某些特殊格式文件的情况,比如 GIF 到 GIF 转换的支持度较低[^4]。 #### 官方资源获取途径 对于希望深入了解并应用该技术的人来说,官方提供了详细的开源项目教程以及完整的实现方案说明文档。可以通过访问指定链接来查阅更多资料[^3]。 #### 结合LoRA模型的应用案例 当提到 LoRA (Low-Rank Adaptation),这是一种轻量级微调方法,适用于各种预训练大模型的个性化调整。在 AnimateDiff 中引入 LoRA 可以为用户提供更加定制化的服务体验,允许根据具体需求对基础架构进行优化改进。虽然两者结合的具体指导尚未详尽描述,但从现有信息推测,这种组合有望进一步拓展 AnimateDiff 在不同场景下的表现力和灵活性。 ```python # 示例代码片段展示如何加载预训练权重 import torch from transformers import AutoModelForSequenceClassification, AutoTokenizer model_name = "path_to_animatediff_model" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) def apply_lora_adaptations(): """Apply Low Rank Adaption to the model.""" pass # 实际操作需依据官方文档完成 apply_lora_adaptations() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值