介绍
ComfyUI 中的 AnimateDiff 是生成 AI 视频的绝佳方式。在本指南中,我将尽力帮助您开始使用它,并为您提供一些入门工作流程。我在这里的尝试是尝试为您提供一个设置,为您提供开始制作自己的视频的起点。
系统要求
配备 NVIDIA 显卡且至少具有 10GB VRAM 的 Windows 计算机(您可以使用较小的分辨率(512x512 适用于 2 个 ControlNet)或至少具有 8GB VRAM 的 Txt2VID 工作流程)。其他任何事情我都会尽力为您指出正确的方向,但无法帮助您解决问题。请注意,在我使用的分辨率下,我使用的是 9.9-10GB VRAM 和 2 个 ControlNet,因此如果情况处于临界状态,这可能会成为问题。
现在让我们安装 ComfyUI 和 Animate Diff 所需的节点!
使用此直接链接下载 ComfyUI:https://github.com/comfyanonymous/ComfyUI/releases/download/latest/ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z或在网页上导航: https: //github.com/comfyanonymous/ComfyUI(如果您有Mac 或 AMD GPU 那里有更复杂的安装指南)。
使用上面安装的 7zip 解压。请注意,它本身不需要安装,只需提取到目标文件夹即可。
导航到 comfy 的自定义节点部分

在资源管理器选项卡(即上图所示的框)中,单击“选择”并键入 CMD,然后按 Enter 键,现在应该打开一个命令提示符框。它应该看起来像这样:

您将输入以下命令(您可以一次复制/粘贴一个命令) - 我们在这里所做的是使用 Git(上面安装的)下载我们想要的节点存储库(有些可能需要一段时间):
git 克隆https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved
git 克隆https://github.com/ltdrdata/ComfyUI-Manager
git 克隆https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet
对于 ControlNet 预处理器,您不能简单地下载它们,您必须使用我们上面安装的管理器。首先运行 ComfyUI_windows_portable 文件夹中的“run_nvidia_gpu”。它将初始化上述一些节点。然后,您将点击“管理器”按钮,然后“安装自定义节点”,然后搜索“辅助预处理器”并安装 ComfyUI 的 ControlNet 辅助预处理器。
与 ControlNet 预处理器类似,您需要搜索“FizzNodes”并安装它们。这是工作流程 4/5 中用于快速移动的内容。然后关闭舒适的 UI 窗口和命令窗口,当您重新启动时它将加载它们。
与上面类似,找到“VideoHelperSuite”并安装它 - 它可以帮助您将视频和图像加载到工作流程中。
下载检查点并将其放入检查点文件夹中。您可以选择任何基于稳定扩散1.5的模型来使用。对于我的教程下载:https://civitai.com/models/24779? modelVersionId=56071也https://civitai.com/models/4384/dreamshaper。顺便说一句,现实/中现实模型经常因某种原因而与动画相冲突,除了史诗现实主义自然罪恶似乎工作得特别好而且不模糊。将其放入检查点文件夹中:

下载VAE放入VAE文件夹中。对于我的教程,请下载https://civitai.com/models/76118?modelVersionId=80869。这是一个很好的通用 VAE,并且 VAE 总体上不会产生巨大差异。

下载运动模块(原始模块在这里:https: //huggingface.co/guoyww/animatediff/tree/main微调的模块可以像https://huggingface.co/CiaraRowles/TemporalDiff/tree/main一样,https: //huggingface.co/manshoety/AD_Stabilized_Motion/tree/main或https://civitai.com/models/139237/motion-model-experiments)。对于我的教程,请下载原始版本 2 模型和TemporalDiff(您可以只使用其中一个,但您的最终结果将与我的略有不同)。需要注意的是,运动模型对事物产生了相当大的影响,尤其是对于 AnimateDiff 制作的任何新运动。所以尝试不同的。将它们放入动画差异节点中:

下载 Controlnets 并将它们放入您的 controlnet 文件夹中。https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main。对于我的教程,您需要 Lineart、Depth 和 OpenPose(下载 bot pth 和 yaml 文件)。

您应该准备好开始制作动画了!
我拥有的基本工作流程可以在本文的右上角下载。如果您想准确地重新创建我的工作流程,zip 文件包含预分割视频中的帧,可以帮助您开始。基本上有两种方法可以做到这一点。一个只是 text2Vid - 它很棒,但运动并不总是您想要的。Vid2Vid 使用 controlnet 提取视频中的一些运动来指导转换。
如果您正在使用 Vid2Vid,您可以从视频中分割帧(使用和编辑程序或像ezgif.com这样的网站)或直接使用视频。
在 ComfyUI 文件夹中运行“run_nvidia_gpu”,如果这是第一次,那么可能需要一段时间才能下载并安装一些东西。
要加载工作流程,请单击“加载”或将工作流程拖到 comfy 上(顺便说一句,任何图片都会附加 comfy 工作流程,因此您可以将任何生成的图像拖到 comfy 中,它将加载创建它的工作流程)
我将解释下面的工作流程,如果您想从某些内容开始,我将从标记为“1-Basic Vid2Vid 1 ControlNet”的工作流程开始。我将详细介绍这些节点及其含义。
跑步!(这一步需要一段时间,因为它是一次制作动画的所有帧)
有些应该是不言自明的,但我会记下大多数。

您所要做的就是复制加载图像(路径)节点的目录部分中的帧位置。我还包含了一个“加载视频”节点,它可以从视频中提取帧,因此您无需先分割它们。如果您想使用加载视频节点,我建议您必须拖动蓝点(图像旁边)并将其连接到加载图像路径节点所连接的位置
如果 image_load_cap 设置为 0,它将加载每一帧,否则它将加载您选择的任意数量的帧,这将决定动画的长度
如果需要,skip_first_images 将允许您在批次开始时跳过如此多的帧
select_every_nth 会将每一帧设为 1,将其他帧设为 2,将每第三帧设为 3,依此类推(如果您需要跳过某些帧)。




上述每个节点都有一个与其关联的模型。在每个示例中,您和我的模型名称可能并不完全相同。您需要单击每个型号名称并选择您拥有的型号。如果那里没有任何内容,那么您已将模型放入错误的文件夹中(请参阅上面的安装 ComfyUI)。

绿色是你的积极提示
红色是你的否定提示
它们是这种颜色并不是因为它们很特别,而是因为通过右键单击它们将它们设置为这种颜色仅供参考。
值得注意的是,运动模块使用您的提示来帮助决定使用什么运动,因此如果您使用“行走”,它会尝试让角色行走。如果你说有风,如果事情开始变得更加移动,不要感到惊讶。否定提示中存在一些奇怪/意外的结果,因此如果您正在复制很长的否定提示(或就此而言是肯定的),如果事情看起来很奇怪,请考虑简化它们。

统一上下文选项是新的,基本上设置了无限的上下文长度。如果没有它,animate diff 一次最多只能处理 24 (v1) 或 36 (v2) 帧。它所做的基本上是将 AD 的运行链接和重叠在一起,以使事情顺利进行。动画的总长度由加载器在非上下文长度中输入的帧数决定。加载程序根据选项来确定要做什么,其含义如下。默认值是我使用的并且非常好。
上下文长度 - 这是每次运行动画差异的长度。如果您偏离 16 太远,您的动画将不会看起来很好(这是animatediff 可以做到的限制)。目前默认值很好
上下文重叠 - 是每次运行的 animate diff 与下一个运行的重叠程度(即运行第 1-16 帧,然后运行第 12-28 帧,其中有 4 帧重叠以使事物保持一致)
闭环 - 选择此选项将尝试使 animate diff 成为循环视频,它不适用于 vid2vid
上下文跨步 - 这更难解释。1 时关闭。不仅如此,它还尝试在整个动画中运行一次 AD,然后填充帧。这个想法是通过制作一个框架然后填充中间帧来使整个动画更加一致。但在实践中,我发现它现在没有多大帮助。使用它会显着增加运行时间,因为它意味着更多的 AnimateDiff 运行。

这是基本的控制网络设置。有一个预处理器(左下角)。控制网、强度和开始/结束,就像 A1111 一样。值得注意的是,第一次使用预处理器时必须下载它。此过程可能需要相当长的时间,具体取决于您的互联网连接。

这是 FizzNodes 的提示调度程序。
pre_text - 要放在提示之前的文本(这样您就不必为每次更改复制并粘贴大提示)
app_text - 提示后放置的文本
主文本框在上下文“frame number”:“prompt”中工作(请注意,最后一个提示没有逗号,如果您将其放在列表末尾,则会出现错误)。它会在提示之间混合,因此如果您想保留它,我建议您将其放入两次,一次放在您希望它开始的位置,一次放在您希望它结束的位置。
(请注意,此节点的另一个版本没有潜在输入 - 如果您使用此节点,请确保最大帧数 = 输入动画的最大帧数,否则此节点不起作用)
这个节点还有更多奇特的东西可以做(您可以随着时间的推移更改单个术语)。此文档位于https://github.com/FizzleDorf/ComfyUI_FizzNodes。这就是 pw... 东西的用途。

这是 KSampler - 本质上这是稳定的扩散,因为我们已经加载了制作动画所需的所有内容。
步骤 - 这些很重要,您需要超过 20 个。25 个是最低限度,但人们确实会看到更高的结果。
CFG - 可以随意增加通常用于 SD 的过去值
采样器 - 采样器也很重要 Euler_a 很好,但 Euler 在较低的步骤上很糟糕。请随意为这些找到一个好的设置
降噪 - 除非您正在使用 Vid2Vid,否则请将其保持为 1。如果您正在使用 Vid2Vid,您可以减少此值以使内容更接近原始视频

这些是您的输出节点,最终会出现在

如果您看到我如何执行保存图像节点,它允许您将内容保存到文件夹中
对于组合节点,它默认创建一个 gif。要知道,GIF 看起来比单个帧差很多,所以即使 GIF 看起来不太好,但在视频中可能看起来很棒。
frame_rate - gif 的帧速率
Loop_count - 停止之前要执行的循环次数。0为无限循环
格式 - 更改制作 gif/mp4 等的内容
pingpong - 将使视频经过所有帧然后返回,而不是单向
保存图像 - 保存视频的一帧(因为视频有时不包含元数据,如果您不保存图像,这是保存工作流程的一种方法 - VHS 尝试将视频的元数据保存在视频本身上) 。
Basic Vid2Vid 1 ControlNet - 这是使用新节点更新的基本 Vid2Vid 工作流程。
Vid2Vid Multi-ControlNet - 与上面基本相同,但有 2 个控制网(这次不同)。我给出这个工作流程是因为人们对如何进行多控制网络感到困惑。
基本 Txt2Vid - 这是基本的文本到视频 - 一旦您确保模型已加载,您只需单击提示即可工作。请注意,有许多帧原始节点取代了加载图像节点,并且没有控制网。我知道我做的 txt2vid 工作不多,所以这会产生可接受的输出,但没有什么出色的。
带有提示调度的 Vid2Vid - 这基本上是带有提示调度节点的 Vid2Vid。这就是我用来为 Reddit 制作视频的方法。请参阅上述新节点的文档。
带提示调度的 Txt2Vid - 带有新提示调度节点的基本 text2img。
**使用 VHS 加载器节点时,它所做的就是将文件夹复制到舒适的输入文件夹中**

您只需将输入帧移动到输入目录中并从目录中选择即可。如果您多次上传同一文件夹,则会出现重复。如果您上传的文件夹与之前上传的另一个文件夹同名,则会合并文件夹。我已经与开发人员讨论了这个问题,并且可能会得到解决。现在,如果您遇到该问题,请转到上述位置并删除有问题的文件夹并重新开始。
更改 vid2vid 的视频输入(显然)!有一些新节点可以将视频直接分离成帧。请参阅加载视频节点 - 该节点相对较新。
更改参数!
KSampler 上稳定的扩散检查点和降噪强度产生很大差异(对于 Vid2Vid)。
您可以添加/删除控制网或更改它们的强度。如果您习惯于制作其他稳定的扩散视频,我发现您需要的 ControlNet 强度比直接 SD 少得多,并且您将获得的不仅仅是滤镜效果。我还建议尝试 openpose。
尝试先进的 K 采样器
尝试添加洛拉
尝试运动洛拉:https://civitai.com/models/153022 ?modelVersionId=171354
使用第二个 ksampler 来修复问题(可以在 Kosinkadink 的animateiff GitHub https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved上找到一些更好的示例)。
使用屏蔽或区域提示(这可能是一个单独的指南,因为人们在本指南发布时才开始这样做)。
通过这些基本工作流程,添加您想要的内容应该像添加或删除一些节点一样简单。祝你好运!
随着事情的进一步发展,本指南可能会慢慢过时,并且某些节点可能会贬值。这并不意味着它们不一定有效。希望我有时间制作另一本指南,或者其他人会的。
如果您收到 Null 类型错误,请确保您已在上述每个位置加载了模型。
如果您已经将 ComfyUI 用于其他用途,则有多个节点存储库与动画存储库冲突并可能导致错误。
如果您遇到张量不匹配错误或重复帧问题,这是因为 VHS 加载器节点将图像“上传”到 ComfyUI 的输入部分。
导航到此文件夹,您可以删除文件夹并重置内容。