Comfyui AnimateDiff
Comfyui AnimateDiff
Comfyui AnimateDiff Comfyui AnimateDiff Modified December 13, 2024 controlNet高级控件 ComfyUI Advanced ControlNet https://github.com/Kosinkadink/ComfyUI Advanced ControlNet 在时间步和批处理潜变量之间调度 ControlNet 强度的节点,以及应用自定义权重和注意力掩码。这里的 ControlNet 节点完全支持滑动上下文采样,就像 ComfyUI AnimateDiff Evolved 节点中使用的那种。目前支持 ControlNets、T2IAdapters、ControlLoRAs、ControlLLLite、SparseCtrls、SVD ControlNets 和 Reference。 输入 • postitive:提示词(正面)。 • negative: 提示词(负面)。 • 🟩control net:加载了控制网络;如果是支持的类型,此节点将自动转换为高级版本。 • 🟩image:用于指导控制网络的图像 如果加载的控制网络需要,它们必须预处理图像。如果提供了一张图像,将用于所有潜在因素。如果提供了更多图像,将分别为每个潜在因素使用每个图像。如果没有足够的图像来满足潜在因素的数量,将重复从开头开始的图像以匹配基本的控制网络功能。 • 🟨mask optional:应用于控制网络的注意力掩码;基本上,决定了图像的哪个部分应用于控制网络(以及相对强度,如果掩码不是二进制)。如果提供多个掩码,则与图像输入相同,每个掩码可以应用于不同的潜在因素。 • 🟨timestep kf:时间步关键帧,用于在采样步骤中引导控制网络效果。 • 🟨latent kf override:潜在关键帧的覆盖,如果不需要来自时间步关键帧的其他特征,则很有用。注意:此潜在关键帧将应用于所有时间步,而不管是否有其他潜在关键帧附加到连接的时间步关键帧上。 • weights override:权重覆盖,如果不需要来自时间步关键帧的其他特征,则很有用。注意:此权重将应用于所有时间步,而不管是否连接的时间步关键帧附有其他权重。 • 🟦strength:控制网络的强度;1.0 表示完全强度,0.0 表示没有任何效果。 • 🟦start percent:控制网应开始应用的采样步骤百分比 无论时间步关键帧上设置了什么 start percent,直到达到此 start percent,它们才会生效。 • 🟦stop percent:控制网在采样步骤百分比达到此值时应停止应用 无论时间步关键帧上设置了什么 start percent,一旦达到此 end percent,它们将不会生效。 输出 • 🟪postitive:使用控制网络进行调节(积极) • negative:使用控制网络进行条件化(负面) 控制模型 https://huggingface.co/crishhh/animatediff controlnet/blob/main/controlnet checkpoint.ckpt 运动控制网络:https://huggingface.co/crishhh/animatediff controlnet/resolve/main/controlnet checkpoint.ckpt?download=true https://huggingface.co/crishhh/animatediff controlnet/tree/main 人物姿态的控制 https://huggingface.co/comfyanonymous/ControlNet v1 1 fp16 safetensors/blob/main/control v11p sd15 openpose fp16.safetensors 重点是controlNet的控制器, 也是难点, 需要理解管道为什么要这样来链接的 控制帧变化FIZZ FizzNodes https://github.com/FizzleDorf/ComfyUI FizzNodes 特别注意一下, 选择提示词调度(批次) 💡 在使用FIZZ控制帧的变化时候, 要注意context length的值, 如果是16, 对应的帧变化也应该是每隔16一个提示词。 因为context length表示是一次绘制多少张图, 比如在context length=16下, FIZZ里面写了0:red,8:black,那么这两个会作用在一个context上 如果是0:red,16:black,则分别作用在第一个和第二个context上 采样补帧插件 Frame ComfyUI Frame Interpolation (ComfyUI VFI) (WIP) https://github.com/Fannovel16/ComfyUI Frame Interpolation 图生视频SparseCtrl 两个(RGB 图像/草图)SparseCtrl 编码器,可以使用任意数量的条件图来控制生成过程. SparseCtrl https://guoyww.github.io/projects/SparseCtrl/?ref=aiartweekly 视频生视频 controlNet高级控件 ComfyUI Advanced ControlNet https://github.com/Kosinkadink/ComfyUI Advanced ControlNet 在时间步和批处理潜变量之间调度 ControlNet 强度的节点,以及应用自定义权重和注意力掩码。这里的 ControlNet 节点完全支持滑动上下文采样,就像 ComfyUI AnimateDiff Evolved 节点中使用的那种。目前支持 ControlNets、T2IAdapters、ControlLoRAs、ControlLLLite、SparseCtrls、SVD ControlNets 和 Reference。 输入 • postitive:提示词(正面)。 • negative: 提示词(负面)。 • 🟩control net:加载了控制网络;如果是支持的类型,此节点将自动转换为高级版本。 • 🟩image:用于指导控制网络的图像 如果加载的控制网络需要,它们必须预处理图像。如果提供了一张图像,将用于所有潜在因素。如果提供了更多图像,将分别为每个潜在因素使用每个图像。如果没有足够的图像来满足潜在因素的数量,将重复从开头开始的图像以匹配基本的控制网络功能。 • 🟨mask optional:应用于控制网络的注意力掩码;基本上,决定了图像的哪个部分应用于控制网络(以及相对强度,如果掩码不是二进制)。如果提供多个掩码,则与图像输入相同,每个掩码可以应用于不同的潜在因素。 • 🟨timestep kf:时间步关键帧,用于在采样步骤中引导控制网络效果。 • 🟨latent kf override:潜在关键帧的覆盖,如果不需要来自时间步关键帧的其他特征,则很有用。注意:此潜在关键帧将应用于所有时间步,而不管是否有其他潜在关键帧附加到连接的时间步关键帧上。 • weights override:权重覆盖,如果不需要来自时间步关键帧的其他特征,则很有用。注意:此权重将应用于所有时间步,而不管是否连接的时间步关键帧附有其他权重。 • 🟦strength:控制网络的强度;1.0 表示完全强度,0.0 表示没有任何效果。 • 🟦start percent:控制网应开始应用的采样步骤百分比 无论时间步关键帧上设置了什么 start percent,直到达到此 start percent,它们才会生效。 • 🟦stop percent:控制网在采样步骤百分比达到此值时应停止应用 无论时间步关键帧上设置了什么 start percent,一旦达到此 end percent,它们将不会生效。 输出 • 🟪postitive:使用控制网络进行调节(积极) • negative:使用控制网络进行条件化(负面) 控制模型 https://huggingface.co/crishhh/animatediff controlnet/blob/main/controlnet checkpoint.ckpt 运动控制网络:https://huggingface.co/crishhh/animatediff controlnet/resolve/main/controlnet checkpoint.ckpt?download=true https://huggingface.co/crishhh/animatediff controlnet/tree/main 人物姿态的控制 https://huggingface.co/comfyanonymous/ControlNet v1 1 fp16 safetensors/blob/main/control v11p sd15 openpose fp16.safetensors 重点是controlNet的控制器, 也是难点, 需要理解管道为什么要这样来链接的 控制帧变化FIZZ FizzNodes https://github.com/FizzleDorf/ComfyUI FizzNodes 特别注意一下, 选择提示词调度(批次) 💡 在使用FIZZ控制帧的变化时候, 要注意context length的值, 如果是16, 对应的帧变化也应该是每隔16一个提示词。 因为context length表示是一次绘制多少张图, 比如在context length=16下, FIZZ里面写了0:red,8:black,那么这两个会作用在一个context上 如果是0:red,16:black,则分别作用在第一个和第二个context上 在使用FIZZ控制帧的变化时候, 要注意context length的值, 如果是16, 对应的帧变化也应该是每隔16一个提示词。 因为context length表示是一次绘制多少张图, 比如在context length=16下, FIZZ里面写了0:red,8:black,那么这两个会作用在一个context上 如果是0:red,16:black,则分别作用在第一个和第二个context上 采样补帧插件 Frame ComfyUI Frame Interpolation (ComfyUI VFI) (WIP) https://github.com/Fannovel16/ComfyUI Frame Interpolation 图生视频SparseCtrl 两个(RGB 图像/草图)SparseCtrl 编码器,可以使用任意数量的条件图来控制生成过程. SparseCtrl https://guoyww.github.io/projects/SparseCtrl/?ref=aiartweekly 视频生视频 项目地址 https://github.com/guoyww/animatediff/ 需要注意的是,Animatediff这里有一个关键的lora对图像模型进行了微调 lora地址 https://huggingface.co/guoyww/animatediff/blob/main/v3 sd15 adapter.ckpt 关于lora的强度, 这个强度越高, 画面就越稳定, 但是需要在合理的范围 AnimateDiff节点和模型 AD源项目(非官方是分支更全):https://github.com/Kosinkadink/ComfyUI AnimateDiff Evolved AD模型下載:https://huggingface.co/guoyww/animatediff/tree/main AnimateDiff 工作流经常会使用这些有用的节点包: • ComfyUI FizzNodes 用于与 BatchPromptSchedule 节点一起。由 FizzleDorf 维护。 • ComfyUI Advanced ControlNet 用于使 ControlNets 与上下文选项配合使用,并控制哪些潜变量应受到 ControlNet 输入的影响。包括 SparseCtrl 支持。 • ComfyUI VideoHelperSuite 用于加载视频,将图像合并为视频,并执行各种图像/潜在操作,如追加、拆分、复制、选择或计数。由 AustinMroz。 • comfyui controlnet aux 用于在原始 ComfyUI 中不存在的 ControlNet 预处理器。由 Fannovel16 维护。 • ComfyUI IPAdapter plus 用于 IPAdapter 支持。由 cubiq(matt3o)维护。 里面我们用到的节点是ComfyUI AnimateDiff Evolved, 调用animatediff有两个版本, 现在比较建议使用新的版本(第二个版本),因为第一个版本官方说是存在内存的多次调用。 两个版本的对照: 第一个版本: 第二个版本: 关于视频增稳的: freeNoise,还可以在这个基础上再进行二次迭代。 1. 将模型放置在以下位置之一(如果需要,您可以重命名模型): ◦ ComfyUI/custom nodes/ComfyUI AnimateDiff Evolved/models ◦ ComfyUI/models/animatediff models ◦ ComfyUI/custom nodes/ComfyUI AnimateDiff Evolved/models ◦ ComfyUI/models/animatediff models 注意:您还可以通过使用 ComfyUI extra model paths.yaml 文件来使用自定义位置的模型/运动 loras。运动模型文件夹的 id 是 animatediff models ,运动 lora 文件夹的 id 是 animatediff motion lora 。 这些节点提供了一些技术,用于扩展动画的长度,以绕过 AnimateDiff 模型(通常为 16 帧)和 HotshotXL 模型(8 帧)的限制。 有两种上下文/视图选项:标准和循环。标准选项不会在输出中引起循环。循环选项,顾名思义,会在输出中引起循环(从末尾到开头)。在代码重构之前,唯一可用的上下文是循环类型。我建议在不想要循环输出时首先使用标准静态 🥛 这个上面文可以这样理解: 原来AnimateDiff 只能做2s的视频, 现在是引入了这个上下文, 把多个2秒钟拼合在一起了, 所以能生成更长的视频, 但是生成的长视频, 需要上下文相关,前面的2s是后面2s的基础起到一个承上启下的作用, 所以需要这个上下文. 这个上面文可以这样理解: 原来AnimateDiff 只能做2s的视频, 现在是引入了这个上下文, 把多个2秒钟拼合在一起了, 所以能生成更长的视频, 但是生成的长视频, 需要上下文相关,前面的2s是后面2s的基础起到一个承上启下的作用, 所以需要这个上下文. 上下文选项 循环统一 参数解释: 🟦context length: 一次扩散的潜变量数量(一次要推理多少张图像, 看我们的显存大小决定)。 这里的context length是决定一次是绘制多少张图片 🟦context stride:相邻潜变量之间的最大距离为2^(stride 1)(是一帧一帧的推理还是跳帧推理, 一般选择1, 会比较细腻一些) 🟦context overlap: 相邻窗口之间的最小公共潜变量。上下文跨度:相邻潜在变量之间的最大距离为 2^(步幅 1)。(叠加帧数, 前面多少帧数与后面重叠, 这个是让图像前后相关的)。 🟦closed loop: 当为 True 时,添加额外的窗口以增强循环。 🟦fuse method: 窗口结果平均化的方法。 🟦use on equal length: 当为 True 时,允许在潜在计数与上下文长度相匹配时使用上下文 允许在潜在计数 == 上下文长度时进行循环。 🟦start percent: 当多个上下文选项链接在一起时,允许进行调度。 🟦guarantee steps: 在调度上下文时,确定应使用上下文的最小采样步骤数。 🟦context length: 一次扩散的潜变量数量。 🟨prev context: 允许上下文的链接。 🟨view options: 当 context length view length(除非另有说明),允许在每个上下文窗口中使用 view options 采样器 这里采样器选择 autoselect 有时候可能会让图像褪色,如果遇到这样的问题, 可以尝试选择其他的, 比如 avg, 如果你是用的 lcm , 可以试下 lcm avg.