Stable Diffusion 从 Automatic1111 迁移到 ComfyUI

2024年3月22日 1443点热度 0人点赞 0条评论
本文是《Stable Diffusion ComfyUI系列》系列文章中的第2篇,共6篇

从 Automatic1111 的 stable diffusion webui 切换到较新的 ComfyUI 的原因之一是更好的内存管理。 ComfyUI 可以轻松避免系统 VRAM 和 RAM 的问题。但是 ComfyUI 目前也存在一些不足,比如社区永和手册不完整,缺乏示例,并且使用的技术语言对新手来说比较难于启齿理解。

虽然 ComfyUI 的工作流程逻辑一开始可能会令人生畏,但一旦习惯了它,您就会了解 Stable Diffusion 如何工作,并且您将能够通过大量控制创建更复杂和复杂的图像。另外加载PNG(带有嵌入的生成数据)以查看其工作流程对于开始理解工作流程非常有用。

ComfyUI 使用上的常见问题

如何使用路径中的当前日期设置输出文件名?

使用连接到“保存图像”节点的“原始”节点,您可以自定义生成图像的输出文件路径和文件名。

使用此值设置当前日期的各个文件夹:%date:yyyy-MM-dd%/%date:hhmmss%_%KSampler.seed%

您可以将日期、时间、模型、种子和任何其他工作流程值添加到输出名称。

CLIP Set Last Layer 节点的用途是什么?

CLIP 模型中有大约 12 层,并且变得越来越具体。将剪辑跳过设置为 1 表示不跳过任何层,并使用全部 12 个层。剪辑跳过为 2 会忽略最后一层。CLIP 设置最后一层将其反转,其中 -1 是最后一层(处理全部),-2 省略最后一层,-3 省略最后 2 层,依此类推。

一般来说,跳过的层数越多,图像的细节就越少。有些模型使用 -2 效果更好,因此如果您愿意,这是推荐值。更详细的解释可以在这里找到:Clip Skip

由于 CLIP 是一个神经网络,这意味着它有很多层。您的提示以简单的方式数字化,然后通过层传递。您在第一层之后获得提示的数字表示,将其输入第二层,将结果输入第三层,依此类推,直到到达最后一层,这就是 stable 中使用的 CLIP 的输出扩散。这是滑块值 1。但是您可以提前停止,并使用倒数第二层的输出 – 即滑块值 2。您停止得越早,处理提示的神经网络层数就越少。

在哪里下载 ComfyUI 扩展或插件?

以下是ComfyUI 一些最流行的插件的精选。推荐的入门插件是:

如何安装ComfyUI插件?

复制插件的 GitHub URL。在 ComfyUI\custom_nodes 文件夹中打开一个新的命令提示符窗口(通过在 Windows 资源管理器中的文件夹路径中键入cmd并按 Enter)并键入:

git clone https://github.com/pythongosssss/ComfyUI-Custom-Scripts

https…替换为您的插件的 URL。

如何比较 XYZ 图中的图像?

要创建图像网格,您需要安装插件,例如ComfyUI Custom Nodes。请注意,这并不像automatic1111 中的XYZ 绘图模式那么简单。

如何比较 checkpoint 模型?

您可以比较您的检查点模型(没有自定义节点插件),如下所示:

  1. 通过右键单击“Load Checkpoint”节点并选择“将 ckpt_name 转换为输入”,将模型转换为输入。
  2. 添加Primitive节点(添加节点 > utils > Primitive)
  3. Load Checkpoint ckpt 输入链接到Primitive节点
  4. 在此 Primitive 节点上,从列表中选择要比较的第一个模型。
  5. 将其control_after_generate设置为increment
  6. 将 batch count设置为要比较的检查点数量。
  7. 单击“Queue Prompt”一次,将为每个检查点模型创建一个队列。
  8. 建议:在KSampler中使用固定种子来比较重复使用相同种子数的模型。

缺点是您无法挑选模型进行比较,因为control_after_generate选项只会在每个生成图像后从列表中选择下一个模型。此外,到达最后一个模型后,它不会返回到第一个模型。您必须手动重新选择第一个模型才能进行新的比较。

是否支持 img2img 以及如何使用它?

ComfyUI 上的每个 Sampler 节点(实际生成图像的步骤)都需要一个潜在图像作为输入。要从头开始创建新图像,您需要输入一个 Empty Latent Image 节点,要执行 img2img,您需要使用“加载图像”节点VAE 编码来加载图像并将其转换为潜在图像。新图像的尺寸与原始文件相同。

是否支持修复以及如何使用它?

使用VAEEncodeForInpainting节点,为其提供要修复的图像和遮罩,然后将其生成的潜在图像传递给KSampler节点以仅修复遮罩区域。

以下是修复的工作流程示例:

脸部修复模型在哪里?

ComfyUI 中不存在使用 CodeFormer 或 GFPGAN 的自动 1111脸部恢复选项,但是,您会注意到它无论如何都会生成更好的脸部。为了进一步改善脸部,您可以尝试ComfyUI-Impact-Pack插件 中的FaceDetailer节点。

如何在工作流程中使用OpenPose?

将ControlNetApply节点与具有骨架图像的LoadImage节点结合使用,您可以在此处从 Civitai 下载开放姿势骨架 PNG 图像:

请注意,手和脸的姿势需要足够大的分辨率来容纳它们,具体取决于拍摄对象的大小。建议在 SD 1.5 上使用 768×768 的空潜在尺寸,在 SDXL 上使用 1024×1024 的空潜在尺寸。

如何在工作流程中使用LoRA?

使用连接到正向负向提示节点的Load Lora节点。您可以级联多个 loras,如此处此处所示。

如何重现潜在的耦合/二次扩展?

由于某些限制,允许在同一图像中绘制多个主题的潜在耦合扩展在 ComfyUI 中可能会很棘手。您可以使用MultiAreaConditioning节点轻松入门, 如果您不想使用 Davemane 的插件,也可以使用本机ConditioningSetArea节点。

如何重现可组合的 lora 扩展?

auto1111可组合 lora 扩展用于通过将 LoRA 与特定子提示关联(用 AND 分隔)来限制 LoRA 的影响范围。换句话说,您可以创建具有多个 LoRA 的单个图像,同时将它们分别应用到提示的不同块,而不是像通常那样将它们与整个图像混合。

ComfyUI 开箱即用,允许任意数量的提示,并且每个提示都可以单独连接到自己的 LoRA。然而,将提示范围限制在特定区域并不像看起来那么容易,至少现在使用 MutlAreaConditioning 节点时是这样。在这种情况下,lora效果在它们之间进行平均,从而产生不期望的结果。

如何在 ComfyUI 中从 a1111 重现相同的图像?

您无法以像素完美的方式重现相同的图像,您只能获得相似的图像。

这是因为ComfyUI 上的空潜像噪声是在CPU上生成的,而 a1111 UI 上的空潜像噪声是在GPU上生成的。这使得 ComfyUI 种子可以在不同的硬件配置上重现,但使它们与 a1111 webui 使用的种子不同。这已经在 GitHub 上讨论过了。

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

您需要 登录 之后才可以评论