ComfyUI 噪声
本仓库包含了6个用于 ComfyUI 的节点,可以对噪声进行更多控制和灵活操作。这允许例如创建具有微小变化的生成工作流,或者为某些输入图像和提示词找到相应的噪声。
节点
噪声潜在图像:
该节点允许你生成噪声,你可以在 latent>noise
下找到这个节点,它有以下设置:
- source: 生成噪声的位置,当前支持 GPU 和 CPU。
- seed: 噪声种子。
- width: 图像宽度。
- height: 图像高度。
- batch_size: 批量大小。
复制批次索引:
此节点的功能已移至核心,请使用:Latent>Batch>Repeat Latent Batch
和 Latent>Batch>Latent From Batch
代替。
该节点允许你复制批次中的某个样本,这可以用于复制例如编码后的图像,也可以复制上面列出的节点生成的噪声。你可以在 latent
下找到这个节点,它有以下设置:
- latents: 潜在表示。
- batch_index: 要复制的潜在表示中的样本索引。
- batch_size: 新的批量大小(即复制样本的次数)。
球面线性插值潜在表示:
该节点允许你混合两个潜在表示。两个输入的潜在表示必须具有相同的维度,否则节点将忽略混合因子,而输出顶部槽位的内容。对于附加到潜在表示的其他内容,如掩码,只有顶部槽位的内容会被传递。你可以在 latent
下找到这个节点,它有以下输入:
- latents1: 第一批潜在表示。
- latents2: 第二批潜在表示。此输入是可选的。
- mask: 决定在潜在表示中哪里进行球面线性插值。此输入是可选的。
- factor: 第二批潜在表示应该插值到第一批的程度。
获取 Sigma:
该节点可用于计算采样器开始去噪时预期的噪声量。你可以在 latent>noise
下找到这个节点,它有以下输入和设置:
- model: 用于计算 sigma 的模型。
- sampler_name: 用于计算 sigma 的采样器名称。
- scheduler: 采样器中使用的调度类型。
- steps: 调度中的总步数。
- start_at_step: 采样器的起始步骤,即它预期输入图像中的噪声量。
- end_at_step: 前一个采样器的当前结束步骤,即图像中已有的噪声量。
大多数情况下,你只需将 start_at_step
保持为零,end_at_step
保持为 steps
。但如果你想在两个采样器之间重新注入一些噪声,例如一个采样器从 0 到 15 去噪,第二个从 10 到 20 去噪,你需要使用 start_at_step
为 10,end_at_step
为 15。这样我们得到的图像处于步骤 15,可以被加噪回到步骤 10,然后第二个采样器可以将其带到 20。注意,高级 K 采样器有 add_noise
和 return_with_leftover_noise
的设置,在使用这些节点时,我们都希望将它们禁用。
注入噪声:
该节点允许您将噪声实际注入到图像潜空间中,您可以在"latent>noise"下找到此节点,它具有以下输入:
- 潜变量:要注入噪声的潜变量。
- 噪声:噪声。此输入是可选的。
- 掩码:确定在哪里注入噪声。此输入是可选的。
- 强度:噪声的强度。请注意,我们可以使用上面的节点为我们计算适当的强度值。
反采样器:
该节点执行与采样器相反的操作。它计算给定模型和提示词下生成图像所需的噪声。您可以在"sampling"下找到此节点,它接受以下输入和设置:
- 模型:目标模型。
- 步骤:噪声化的步骤数。
- 结束步骤:回溯到哪一步。
- CFG:分类器自由引导尺度。
- 采样器名称:使用的采样技术名称。
- 调度器:使用的调度类型。
- 归一化:是否在输出前对噪声进行归一化。在将其传递给期望归一化噪声的注入噪声节点时很有用。
- 正面提示词:正面提示词。
- 负面提示词:负面提示词。
- 潜在图像:要重新添加噪声的图像。
当尝试尽可能忠实地重建目标图像时,如果反采样器和采样器都使用接近1.0的CFG尺度和相似的步骤数,效果最佳。但是尝试调整这些设置以更好地了解结果也很有趣且值得。这个节点让您可以执行类似于A1111 img2img替代方案脚本的操作。
示例
以下是一些展示如何使用上述节点的示例。这些示例的工作流程可以在"example_workflow"文件夹中找到。
生成变体
要为给定生成创建小变体,我们可以执行以下操作:使用"噪声潜在图像"节点生成我们感兴趣的种子的噪声,然后使用"复制批次索引"节点创建整个批次。请注意,如果我们对img2img执行此操作,我们可以使用相同的节点来复制图像潜变量。接下来,我们生成更多噪声,但这次我们生成一批噪声而不是单个样本。然后,我们使用"Slerp潜变量"节点将这个新创建的噪声插值到另一个中。为了确定注入此噪声所需的强度,我们使用"获取Sigma"节点。最后,我们使用"注入噪声"节点将插值后的噪声注入到一批空白潜变量中。请注意,我们使用高级Ksampler,并禁用了"add_noise"设置。
"反采样"
要获得重现特定图像的噪声,我们首先加载一张图像。然后,我们使用低cfg值的Unsampler
节点。为了检查这是否有效,我们将生成的噪声重新输入到高级ksampler中,同时禁用add_noise
设置,并将cfg设为1.0。