ITADN
Kosinkadink/ComfyUI-AnimateDiff-Evolved
Kosinkadink/ComfyUI-AnimateDiff-Evolved · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

ComfyUI 的 AnimateDiff

改进了 ComfyUI 的 AnimateDiff 集成,以及可在 AnimateDiff 之外使用的高级采样选项,称为 Evolved Sampling。有关其核心工作原理的更多信息,请阅读 AnimateDiff 仓库的 README 和 Wiki。

AnimateDiff 工作流通常会使用以下有用的节点包:

  • ComfyUI-Advanced-ControlNet 用于使 ControlNet 与 Context Options 配合工作,并控制哪些潜变量应受 ControlNet 输入的影响。包含 SparseCtrl 支持。由我维护。
  • ComfyUI-VideoHelperSuite 用于加载视频、将图像组合成视频,以及执行各种图像/潜变量操作,如追加、拆分、复制、选择或计数。由 AustinMroz 和我积极维护。
  • comfyui_controlnet_aux 用于原生 ComfyUI 中不存在的 ControlNet 预处理器。由 Fannovel16 维护。
  • ComfyUI_IPAdapter_plus 用于 IPAdapter 支持。由 cubiq (matt3o) 维护。
  • ComfyUI-KJNodes 用于杂项节点,包括为动画 GLIGEN 选择坐标。由 kijai 维护。
  • ComfyUI_FizzNodes 用于通过 BatchPromptSchedule 节点实现 prompt-travel 功能的替代方式。由 FizzleDorf 维护。

安装

如果使用 ComfyUI Manager:

  1. 查找 AnimateDiff Evolved,并确保作者是 Kosinkadink。安装它。 image

如果手动安装:

  1. 将此仓库克隆到 custom_nodes 文件夹中。

Model Setup:

  1. Download motion modules. You will need at least 1. Different modules produce different results.
    • Original models mm_sd_v14, mm_sd_v15, mm_sd_v15_v2, v3_sd15_mm: HuggingFace | Google Drive | CivitAI
    • Stabilized finetunes of mm_sd_v14, mm-Stabilized_mid and mm-Stabilized_high, by manshoety: HuggingFace
    • Finetunes of mm_sd_v15_v2, mm-p_0.5.pth and mm-p_0.75.pth, by manshoety: HuggingFace
    • Higher resolution finetune,temporaldiff-v1-animatediff by CiaraRowles: HuggingFace
    • FP16/safetensor versions of vanilla motion models, hosted by continue-revolution (takes up less storage space, but uses up the same amount of VRAM as ComfyUI loads models in fp16 by default): HuffingFace
  2. Place models in one of these locations (you can rename models if you wish):
    • ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models
    • ComfyUI/models/animatediff_models
  3. Optionally, you can use Motion LoRAs to influence movement of v2-based motion models like mm_sd_v15_v2.
    • Google Drive | HuggingFace | CivitAI
    • Place Motion LoRAs in one of these locations (you can rename Motion LoRAs if you wish):
      • ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/motion_lora
      • ComfyUI/models/animatediff_motion_lora
  4. Get creative! If it works for normal image generation, it (probably) will work for AnimateDiff generations. Latent upscales? Go for it. ControlNets, one or more stacked? You betcha. Masking the conditioning of ControlNets to only affect part of the animation? Sure. Try stuff and you will be surprised by what you can do. Samples with workflows are included below.

NOTE: 你还可以通过使用 ComfyUI extra_model_paths.yaml 文件来为模型/运动 LoRA 使用自定义位置。运动模型文件夹的 id 是 animatediff_models,运动 LoRA 文件夹的 id 是 animatediff_motion_lora

功能

  • 几乎兼容任何原生或自定义的 KSampler 节点。
  • 支持 ControlNet、SparseCtrl 和 IPAdapter
  • 通过在整个 unet 上使用滑动上下文窗口(Context Options)和/或在运动模块内(View Options)支持无限动画长度
  • 调度 Context Options 以在采样过程的不同点之间进行更改
  • 支持 FreeInit 和 FreeNoise(FreeInit 位于迭代选项下,FreeNoise 位于 SampleSettings 的 noise_type 下拉菜单中)
  • 实现了来自 原始 AnimateDiff 仓库 的可混合运动 LoRAs。注意:原始 loras 实际上仅适用于基于 v2 的运动模型,如 mm_sd_v15_v2mm-p_0.5.pthmm-p_0.75.pth
    • 更新:现在可以通过 AnimateDiff-MotionDirector 仓库 训练没有 v2 限制的新运动 LoRAs。感谢 ExponentialML 为 AnimateDiff 目的实现了 MotionDirector!
  • 使用内置的 Prompt Scheduling 节点或来自 ComfyUI_FizzNodes 的 BatchPromptSchedule 节点进行提示词旅行
  • 缩放和效果多值输入,用于控制生成过程中的运动量和运动模型的影响。
    • 可以是浮点数、浮点数列表或掩码
  • 通过 Sample Settings 及相关节点中的 Noise Types、Noise Layers 以及 seed_override/seed_offset/batch_offset 进行自定义噪声调度
  • 支持 AnimateDiff 模型 v1/v2/v3
  • 通过 Gen2 节点同时使用多个运动模型(每个节点支持
  • 支持 HotshotXL(一种 SDXL 运动模块架构),hsxl_temporal_layers.safetensors
  • 注意:您需要使用 autoselectlinear (HotshotXL/default) beta_schedule,context_length 或总帧数(在不使用 context 时)的最佳值为 8 帧,并且您需要使用 SDXL 检查点。
  • AnimateDiff-SDXL 支持,包含相应的模型。经过数月后仍处于测试阶段。
    • 注意:您需要使用 autoselectlinear (AnimateDiff-SDXL) beta_schedule。除此之外,适用于 AnimateDiff-SDXL 的经验法则与 AnimateDiff 相同。
  • AnimateLCM 支持
    • 注意:您需要使用 autoselectlcmlcm[100_ots] beta_schedule。要完全使用 LCM,请确保使用适当的 LCM lora,在 KSampler 节点中使用 lcm sampler_name,并将 cfg 降低到 1.0 到 2.0 左右。由于 LCM 收敛更快(所需步数更少),请记得减少步数(最小值 = 约 4 步)。增加步数以按需增加细节。
  • AnimateLCM-I2V 支持,非常感谢 Fu-Yun Wang 提供他在撰写论文期间创建的原始 diffusers 代码
  • 注意:需要与上文 AnimateLCM 中描述的相同设置。需要使用 Apply AnimateLCM-I2V Model Gen2 节点以便提供 ref_latent;使用 Scale Ref Image and VAE Encode 节点对输入图像进行预处理。虽然这被设计为 img2video 模型,但我发现使用 ref_drift=0.0 时它在 vid2vid 用途上效果最佳,并且仅在切换到其他模型之前至少使用 1 步,通过与其他 Apply AnimateDiff Model (Adv.) 节点链式连接来实现。可以将 apply_ref_when_disabled 设置为 True,以便在达到 end_percent 时允许 img_encoder 执行其功能。AnimateLCM-I2V 对于在更高分辨率下保持连贯性也非常有用(在 ControlNet 和 SD LoRAs 激活的情况下,我可以轻松地从 512x512 源图像单次放大到 1024x1024)。TODO:添加示例
  • CameraCtrl 支持,此处必须使用剪枝模型:CameraCtrl_pruned.safetensors
    • 注意:需要 AnimateDiff SD1.5 模型,并且是专门为 v3 模型训练的。仅限 Gen2,辅助节点位于 Gen2/CameraCtrl 子菜单下。
  • PIA 支持,模型为 pia.ckpt
    • 注意:您需要使用 autoselectsqrt_linear (AnimateDiff) beta_schedule。如果您想实际提供输入图像,则需要使用 Apply AnimateDiff-PIA Model Gen2 节点。pia_input 可以通过论文中的预设(PIA Input [Paper Presets])提供,或者通过手动输入值(PIA Input [Multival])提供。
  • AnimateDiff Keyframes 用于在采样过程的不同点更改 Scale 和 Effect。
  • fp8 支持;需要最新版本的 ComfyUI 和 torch >= 2.1(减少 VRAM 使用,但会改变输出)
  • Mac M1/M2/M3 支持
  • 在 AnimateDiff 之外,通过 Gen2 Use Evolved Sampling 节点使用 Context Options 和 Sample Settings
  • 通过 LoRA Hooks 实现可遮罩和可调度的 SD LoRA(以及将模型作为 LoRA 使用),同时适用于 AnimateDiff 和 StableDiffusion
  • 逐帧 GLIGEN 坐标控制
    • 目前需要 KJNodes 中的 GLIGENTextBoxApplyBatch 来实现,但我很快就会添加原生节点来执行此操作。
  • 采样中途图像注入
  • ContextRef 和 NaiveReuse(新颖的跨上下文一致性技术)

即将推出的功能

  • AnimateDiff-Evolved 仓库中每个功能的示例工作流,节点将包含使用说明(目前 Value/Prompt Scheduling 节点已有说明),以及 YouTube 教程/文档
  • UniCtrl 支持
  • Unet-Ref 支持,以便移植一批论文
  • StoryDiffusion 实现
  • 合并运动模型权重/组件,包括按块自定义
  • 可遮罩的运动 LoRA
  • 时间步可调度的 GLIGEN 坐标
  • 针对在不同 start/end_percents 加载/卸载的运动模型的动态内存管理
  • 其他任何相关的 AnimateDiff 内容

基本用法和节点

示例

已知问题

某些运动模型在生成的图像上可见水印(尤其是在使用 mm_sd_v15 时)

AnimateDiff 论文作者使用的训练数据包含 Shutterstock 水印。由于 mm_sd_v15 是在更精细、幅度更小的运动上微调的,运动模块试图复制该水印的透明度,并且不会像 mm_sd_v14 那样被模糊掉。使用其他运动模块,或使用 Advanced KSamplers 的组合,应能缓解水印问题。