书接上回:
ComfyUI-AnimateDiff-Evolved(1)_节点和模型基础介绍-CSDN博客
有一回更新ComfyUI节点后,看到AnimateDiff节点中的子节点变得越来越复杂了,这次直接整了个GEN1和GEN2,第一代和第二代,所以跑到官方git来了解下原作者具体是什么区别和思路。
⭕官方解释
Gen1 和 Gen2 产生完全相同的结果(后端代码相同),唯一的区别在于模型的使用方式。总体而言,Gen1 是使用基本 AnimateDiff 功能的最简单方法,而 Gen2 将模型加载和应用与演进采样功能分开。这意味着在实践中,Gen2 的 Use Evolved Sampling 节点可以在没有模型模型的情况下使用,从而可以在没有 AnimateDiff 模型的情况下使用 Context Options 和 Sample Settings。
GEN1:
多合一节点,如果多个 Gen1 节点加载同一模型,则会重复 RAM 使用。
GEN2:
1、将模型加载与应用程序和演进采样分开;
2、允许不使用运动模型,同时保留演进采样功能;
3、通过应用 AnimateDiff 模型(高级)节点启用多个运动模型使用;
🅰GEN1节点详解
红框内是必选的参数,其他的参数可以不输入。
先看AnimateDiff Loader (左边这个)每个参数的含义如下:
- model:StableDiffusion (SD) 模型输入。
- model_name:在采样过程中应用的 AnimateDiff (AD) 模型。某些运动模型适用于 SD1.5,而有的运动模型则适用于 SDXL,务必要根据你做图像生成的大模型(Stable Diffusion模型)进行匹配选择。
- beta_schedule:将选定的 beta_schedule 应用到 SD 模型;"autoselect"将自动为选定的运动模型选择推荐的 beta_schedule - 或者如果没有为 Gen2 选择运动模型,则将使用"use existing"。
- context_options:context_opts 子菜单中的上下文选项节点,当需要返回 AnimateDiff 模型的最佳位置时应使用,可以简单的理解为每次生成图像的时候需要参考前边多少帧的图像。也适用于无运动模型(仅限 Gen2)。
- motion_lora :对于基于 v2的模型,Motion LoRA 将影响生成的运动。具体可以参考huggingface上的这个链接:Motion LoRA下载。
- ad_settings:在过程中修改运动模型的影响权重。
- ad_keyframes:允许根据采样步数进行调度
scale_multival
和effect_multival
输入。- sample_settings :采样器设置。也适用于无运动模型(仅限 Gen2)
- scale_multival :可以理解为动画变化幅度,默认为1.0。以前称为motion_scale,它直接影响模型生成的运动量。使用 Multival 节点,它可以接受浮点数、浮点数列表和/或作为蒙版输入,允许将不同的比例不仅应用于不同的帧,而且应用于帧的不同区域(包括每帧)。
- effect_multival :定义运动模型对采样过程的影响,默认为1.0。如果设置为0,那么生成的结果将只受到SD的影响,而不会受到animatediff模型的影响。利用这个节点,它可以接受浮点数、浮点数列表和/或蒙版作为输入,允许不同的效果量不仅应用于不同的帧,而且应用于帧的不同区域(包括每帧)。
再看AnimateDiff Loader [legacy](右边这个)节点中,跟上边不同的节点参数的介绍:
- motion_scale: scale_multival这个参数的历史版本,仅仅接受float类型;
- apply_v2_models_properly: 仅仅用于兼容,适用于几个月前的工作流程。仅影响v2模型,不影响其他。现在所有节点默认此值设置为True。
🅱GEN2节点详解
我们先看“Apply AnimateDiff Model”这个基础版:
- motion_model: 输入/加载运动模型,跟之前一样;
再看“Apply AnimateDiff Model(Adv.)”这个高级版节点:
- start_percent: 确定运动模型什么时间(总时间的百分比)生效,这个优先级优先于任何ad_keyframes的定义。
- end_percent: 确定运动模型什么时间(总时间的百分比)停止影响,这个优先级优先于任何ad_keyframes的定义。
- prev_m_models: 用于串联多个运动模型。
😶Multival Nodes
前边多次提到Multival Nodes这个事情,那么Multival Nodes到底是什么呢?
这些节点允许使用浮点数、浮点数列表和/或掩码(mask)作为输入。缩放蒙版节点(Multival Scaled Mask),允许根据值对应的内容自定义蒙版的暗/亮区域。
- mask_optional:选填,浮点值的掩码 - 黑色表示 0.0,白色表示 1.0(乘以 float_val)。
- float_val:浮点乘数。
- mask:必填,浮点值的掩码,可以传入一张灰度图。
- min_float_val:最小值。
- max_float_val:最大值。
- scaling:当设置为absolute时,黑色表示 min_float_val,白色表示 max_float_val。当 设置为relative时,masks 中最暗的区域表示 min_float_val,massk 中最亮的区域表示 max_float_val。
🎄AnimateDiff 关键帧设置
也就是ad_keyframes,这个关键帧应该如何设置呢?
节点的链接方式如下图,是可以串联起来的:
- prev_ad_keyframes: 用于连接关键帧,形成一条关键帧的链;
- scale_multival: 在当前关键帧上,设定animatediff运动模型的动画幅度是多少;
- effect_multival: 在当前关键帧上,运动模型的影响权重是多少;
- start_percent: 开始使用此关键帧的时间百分比。如果多个关键帧有相同的start_percent,执行顺序由它们的链接顺序决定,并且将持续的步数为:guarantee_steps。
- guarantee_steps:关键帧将被使用的最小步数 - 当设置为0时,只有当没有其他关键帧更适合当前时间步时,此关键帧才会被使用。
- inherit_missing: 当设置为True时,任何缺失的scale_multival或effect_multival输入将继承前一个关键帧的值 - 如果前一个关键帧也继承了缺失的值,将使用最后一个继承的值。
好了,这篇文章就先到这里,接下来将进入动画生成中一个更关键的概念的理解:上下文相关设置。
这里是聚梦小课堂,关注我,下期我们继续分享Animatediff Evolved节点的相关内容。