Stable Diffusion101(贰)
Stable Diffusion101(贰)
JialaiStable Diffusion 右键菜单详解
ADD NODE Menu:
Utils
Add node
>utils
1. Note: Note节点允许你在ComfyUI的工作区中添加文本注释。
2. Primitive: Primitive节点用于创建和操作基本几何形状,如点、线、矩形、圆形等。这些形状可以作为掩码或控制信息,用于影响图像生成过程。
创建掩码:使用
Primitive
节点创建一个矩形,然后将其连接到Mask
输入,从而只对图像的特定区域进行处理。ControlNet控制:使用
Primitive
节点创建线条,然后将其连接到ControlNet
的相应输入,从而引导图像生成特定形状的物体。例子:
- 使用
Primitive
节点创建一个圆形,然后将其连接到Inpaint
节点的Mask
输入,从而只对圆形区域内的图像进行修复。
- 使用
3. Reroute: Reroute节点用于在ComfyUI工作区中整理节点连接,使流程更加清晰。它可以将节点的输出重新路由到其他位置,避免过多的连线交叉,提高工作区的可读性。
- 例子:
- 当一个节点的输出需要连接到多个其他节点时,可以使用
Reroute
节点将输出复制到多个位置,避免多条连线交叉。
- 当一个节点的输出需要连接到多个其他节点时,可以使用
4. Terminal Log (Manager) : Terminal Log (Manager)节点用于在ComfyUI界面中显示终端输出信息。这对于查看模型加载过程、调试错误、获取运行时信息等非常有用。可以查看模型加载过程中的详细信息,如模型大小、参数数量等。当工作流程出现错误时,可以在终端输出中查看错误信息,帮助定位问题。也可以获取图像生成过程中的实时信息,如采样进度、损失值等。
- 例子:
- 在加载一个大型模型时,你可以添加一个
Terminal Log (Manager)
节点来查看加载进度和详细信息。
- 在加载一个大型模型时,你可以添加一个
Sampling
Schedulers(调度器)
Add node
>Sampling
> custom_sampling
> schedulers
在Stable Diffusion中,调度器控制着图像生成过程中噪声的去除方式。不同的调度器采用不同的策略来逐步降低噪声水平,从而影响生成图像的质量、速度和多样性。
BasicScheduler: 最基础的调度器,采用线性方式逐步降低噪声水平。适用于快速生成图像,或者作为其他调度器的基础。如果想快速生成一张概念草图,可以使用
BasicScheduler
。KarrasScheduler: 一种改进的调度器,采用非线性方式降低噪声水平,尤其在早期阶段去噪速度较快。适用于生成高质量图像,同时保持一定的生成速度。如果想生成一张细节丰富的图像,但又不想等待太长时间,可以使用
KarrasScheduler
。ExponentialScheduler: 采用指数方式降低噪声水平,早期去噪速度较慢,后期较快, 适用于生成具有柔和过渡效果的图像。如果想生成一张具有梦幻感的图像,可以使用
ExponentialScheduler
。PolyexponentialScheduler: 一种基于多项式插值的调度器,可以灵活调整去噪曲线。适用于需要精细控制去噪过程的高级用户。如果想通过调整去噪曲线来实现特定的图像效果,可以使用
PolyexponentialScheduler
。VPScheduler (Variational Posterior Scheduler): 一种基于变分推理的调度器,理论上可以生成更高质量的图像。适用于追求极致图像质量的用户。如果想生成一张尽可能逼真和精细的图像,可以尝试
VPScheduler
。BetaSamplingScheduler: 一种基于beta分布的调度器,可以生成多样化的图像。适用于探索不同风格或创意的图像生成。如果想生成一组具有不同风格的图像,可以使用
BetaSamplingScheduler
。SDTurboScheduler: 一种优化过的调度器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,提高生成速度。如果想快速生成高质量的图像,可以使用
SDTurboScheduler
。Align YourStepsScheduler & GITSScheduler: 这两种调度器是基于社区开发的算法,旨在进一步提高图像质量和稳定性。适用于追求更高图像质量或尝试新算法的用户。
Samplers
Add node
>Sampling
>custom_sampling
> samplers
KSamplerSelect: 是一个下拉菜单,可以快速选择常用的采样器,无需手动添加节点。适用于快速切换不同的采样器,尤其是在实验和比较不同采样器效果时非常方便。
e.g. 如果想尝试使用
Euler a
采样器,可以直接在KSamplerSelect
中选择它,而无需手动添加KSampler
节点并设置算法。PS: Euler Sampler:
Euler 采样器
基本算法:Euler 采样器是最基础的采样器,它直接使用 Euler 方法来数值求解扩散模型中的随机微分方程(SDE)。Euler 方法是一种简单的一阶数值求解方法,它通过在每个时间步上使用当前时刻的导数来估计下一时刻的值。
初始化:从一个随机噪声图像
x_T
开始,设置初始时间步t = T
。迭代:
计算噪声预测:使用 U-Net 模型预测当前时间步
t
的噪声ϵ_t
。更新图像:根据 Euler 方法的公式,更新图像:
1
x_{t-1} = x_t - ϵ_t * sqrt(β_t) + sqrt(1 - β_t) * z_t
其中:
β_t
是预先定义的噪声调度参数,控制每个时间步添加的噪声量。z_t
是从标准正态分布中采样的随机噪声。
更新时间步:
t = t - 1
。
终止:当
t = 0
时,停止迭代,输出x_0
作为生成的图像。
Euler a(Euler ancestral)采样器
基本算法:Euler a 采样器是 Euler 采样器的改进版本,它引入了祖先采样(ancestral sampling)的概念。祖先采样通过在每一步迭代中添加额外的噪声,来增加生成图像的多样性。
与 Euler 采样器类似,但在更新图像的公式中增加了一个额外的噪声项:
1
x_{t-1} = x_t - ϵ_t * sqrt(β_t) + sqrt(1 - β_t) * z_t + σ_t * z'_t
其中:
σ_t
是预先定义的噪声调度参数,控制每个时间步添加的额外噪声量。z'_t
是从标准正态分布中采样的随机噪声。
Euler Ancestral 采样器
基本算法:Euler Ancestral 采样器与 Euler a 采样器非常相似,它们都使用了祖先采样技术。主要区别在于 Euler Ancestral 采样器在计算噪声预测时,使用了前一个时间步的图像
x_{t-1}
作为输入,而不是当前时间步的图像x_t
。初始化:从一个随机噪声图像
x_T
开始,设置初始时间步t = T
。迭代:
计算噪声预测:使用 U-Net 模型预测 前一个 时间步
t-1
的噪声ϵ_{t-1}
,**输入为x_t
**。更新图像:根据 Euler 方法的公式,更新图像:
1
x_{t-1} = x_t - ϵ_{t-1} * sqrt(β_t) + sqrt(1 - β_t) * z_t + σ_t * z'_t
更新时间步:
t = t - 1
。
终止:当
t = 0
时,停止迭代,输出x_0
作为生成的图像。
Euler a 和 Euler Ancestral 最主要的区别就在于:
- Euler a:在计算当前时间步
t
的噪声预测时,使用 当前时间步 的图像x_t
作为 U-Net 的输入。 - Euler Ancestral:在计算当前时间步
t
的噪声预测时,使用 前一个时间步 的图像x_{t-1}
作为 U-Net 的输入。 - 当前图像是第一步(即
t = T
)时,前一步的图像x_{t-1}
不存在。在这种情况下,Euler Ancestral 采样器通常会使用当前时间步的图像x_t
作为 U-Net 的输入,或者使用一个预先定义的噪声图像来代替x_{t-1}
。 - Euler Ancestral 使用前一步的图像作为输入,可以考虑到更多的历史信息,从而可能产生更稳定、更高质量、更多样化的图像。
SamplerEulerAncestral: Euler ancestral采样器,一种基于Euler方法的迭代采样器,引入了祖先采样(ancestral sampling)的概念,可以提高生成图像的质量和稳定性。适用于生成高质量图像,尤其是在处理复杂场景或精细细节时表现较好。如果想生成一张包含丰富细节的风景画,可以使用
SamplerEulerAncestral
。SamplerEulerAncestralCFG:
SamplerEulerAncestral
的改进版本,增加了对Classifier-Free Guidance(CFG)的支持,可以更好地控制图像生成的方向和风格。适用于需要更强控制力的图像生成任务,例如在提示词中包含特定风格或元素时。如果想生成一张具有梵高风格的星空图,可以在提示词中加入”梵高风格”,并使用SamplerEulerAncestralCFG
来增强风格效果。SamplerLMS: LMS采样器,一种基于线性多步法(Linear Multistep Method)的采样器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,提高生成速度。如果想快速生成一张高质量的人物肖像,可以使用
SamplerLMS
。SamplerDPMPP_2M_SDE & SamplerDPMPP_3M_SDE: DPM++ 2M SDE和DPM++ 3M SDE采样器,是基于DPM++算法的采样器,使用了2阶或3阶的随机微分方程求解器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,进一步提高生成速度。如果想在更短的时间内生成高质量的图像,可以尝试使用
SamplerDPMPP_2M_SDE
或SamplerDPMPP_3M_SDE
。PS:
DPM (Denoising Diffusion Probabilistic Models)
- DPM 是一种基于扩散模型的采样器。它通过迭代地向图像添加噪声,然后学习如何从噪声中恢复出原始图像。在每一步迭代中,DPM 会根据当前的噪声图像和模型预测,计算出下一步需要去除的噪声量。
DPM++
- DPM++ 是 DPM 的改进版本,它引入了几种优化技术,包括:
- 改进的噪声调度:使用更复杂的噪声调度算法,使得模型能够更有效地去除噪声。
- 预测校正:在每一步迭代中,对模型的预测进行校正,提高预测的准确性。
- 更快的求解器:使用更高效的数值求解器来计算每一步需要去除的噪声量。
- 特点:在保持 DPM 较高图像质量的基础上,显著提高了生成速度。
DPM++ 和 DPM 的区别 :
速度:DPM++ 比 DPM 快得多,尤其是在生成高分辨率图像时。
假设我们要生成一张 512x512 像素的风景画。
- 使用 DPM:可能需要 50 步迭代才能生成一张高质量的图像,耗时较长。
- **使用 DPM++**:可能只需要 20 步迭代就能生成一张质量相当甚至更好的图像,耗时更短。
质量:DPM++ 在大多数情况下都能生成与 DPM 相当甚至更好的图像质量。
SamplerDPMPP_SDE: DPM++ SDE采样器,是DPM++算法的另一个变体,使用了随机微分方程求解器,可以在较少的采样步数下生成高质量图像。适用于在保证图像质量的前提下,进一步提高生成速度。
SamplerDPMAdaptive: DPM adaptive采样器,是DPM++算法的自适应版本,可以根据图像内容动态调整采样步数,从而在保证图像质量的同时,进一步提高生成速度。适用于对生成速度有较高要求,同时希望保持图像质量的用户。如果想在尽可能短的时间内生成高质量的图像,可以尝试使用
SamplerDPMAdaptive
。SamplerLCMUpscale: LCM upscale采样器,专门用于在潜在空间中提高图像的分辨率。适用于先生成低分辨率图像,然后通过LCM upscale提高分辨率,从而在提高图像质量的同时,节省计算资源。如果想生成一张高分辨率的图像,但受限于显存,可以先生成一张低分辨率的图像,然后使用
SamplerLCMUpscale
将其放大。LCM (Latent Consistency Model)
- LCM 是一种专门用于提高图像分辨率的采样器。它在潜在空间(latent space)中进行操作,通过迭代地向低分辨率图像添加噪声,然后学习如何从噪声中恢复出高分辨率图像。
Sigmas(噪声等级)
Add node
>Sampling
>custom_sampling
> sigmas
在Stable Diffusion的扩散模型中,sigmas代表了不同阶段的噪声等级。在图像生成过程中,模型从高噪声等级逐步向低噪声等级迭代,直到生成最终的清晰图像。sigmas
子菜单下的节点主要用于控制和操作这些噪声等级。
- SplitSigmas
作用:将一个包含所有噪声等级的张量(tensor)分割成多个单独的噪声等级。
PS: Tensor:
在深度学习和数值计算领域,tensor(张量)是一种多维数组。它可以看作是向量和矩阵的推广,可以表示任意维度的数据。
- 0 维张量:标量(scalar),即一个单独的数字。
- 1 维张量:向量(vector),即一组有序的数字。
- 2 维张量:矩阵(matrix),即一个二维数组。
- 3 维张量:可以看作是一摞矩阵,例如 RGB 彩色图像就可以表示为一个 3 维张量,其中每个通道(R、G、B)都是一个二维矩阵。
- 更高维张量:可以表示更复杂的数据结构,例如视频(时间维度 + 图像维度)或多通道时间序列数据。
- Tensor 的优势
- 统一表示:Tensor 提供了一种统一的方式来表示各种类型的数据,使得模型的输入和输出更加一致,简化了模型的设计和实现。
- 高效计算:Tensor 可以利用 GPU 进行高效的并行计算,大大加快了模型的训练和推理速度。
- 灵活操作:Tensor 支持各种数学运算和变换,如加法、乘法、转置、卷积等,为模型的构建和优化提供了丰富的工具。
使用场景:当你需要对不同的噪声等级进行单独处理或分析时,可以使用
SplitSigmas
节点。示例:你可以使用
SplitSigmas
将噪声等级分割后,分别连接到不同的去噪模型,以实现更精细的控制。
- SplitSigmasDenoise
- 作用:类似于
SplitSigmas
,但它在分割噪声等级的同时,还应用了去噪模型对每个噪声等级进行去噪处理。 - 使用场景:当你需要在分割噪声等级的同时进行去噪处理时,可以使用
SplitSigmasDenoise
节点,从而简化流程。
- FlipSigmas
- 作用:将噪声等级的顺序翻转。
- 使用场景:在某些特殊情况下,你可能需要将噪声等级的顺序翻转,例如在实现某些自定义采样算法时。
Guiders(引导器)
Add node
>Sampling
>custom_sampling
> guiders
在 Stable Diffusion 中,引导器(Guiders)用于在采样过程中提供额外的指导或约束,从而影响生成图像的特定方面,如构图、颜色、一致性等。
CFG Guider: Classifier-Free Guidance(CFG)引导器,通过调整条件信息(通常是文本提示)的强度来控制图像生成。这是最常用的引导器之一,适用于大多数情况。可以通过调整 CFG Scale 参数来控制提示词对生成图像的影响程度。如果想生成一张更符合提示词描述的图像,可以增加 CFG Scale 的值。
Dual CFG Guider: 双 CFG 引导器,允许你同时使用两个 CFG Scale 值,一个用于正向提示词,一个用于负向提示词。适用于需要更精细地控制正向和负向提示词影响的情况。如果想在生成图像时强调正向提示词,同时弱化负向提示词,可以设置较高的正向 CFG Scale 和较低的负向 CFG Scale。
Basic Guider: 基础引导器,不提供任何额外的指导或约束,直接使用模型的输出。适用于不需要任何引导的简单图像生成任务,或者用于与其他引导器进行比较。
Video Models 下的选项详解
Add node
>Sampling
>video_models
VideoLinearCFGGuidance
- 作用:为视频生成任务设计的线性 Classifier-Free Guidance(CFG)引导器。它通过线性调整条件信息(通常是文本提示)的强度来控制视频生成的过程,从而影响生成视频的风格和内容。
- 使用场景:适用于需要对生成视频进行风格和内容控制的任务,希望以线性方式调整 CFG 强度。
- 示例:如果你想生成一个逐渐从写实风格过渡到抽象风格的视频,可以使用
VideoLinearCFGGuidance
,并在采样过程中线性增加 CFG Scale 的值。
VideoTriangleCFGGuidance
- 作用:为视频生成任务设计的三角形 CFG 引导器。它通过三角形函数调整条件信息(通常是文本提示)的强度来控制视频生成的过程,从而影响生成视频的风格和内容。
- 使用场景:适用于需要对生成视频进行风格和内容控制的任务,希望以三角形函数方式调整 CFG 强度。
- 示例:如果你想生成一个在中间帧具有最强风格效果,而在开始和结束帧风格效果较弱的视频,可以使用
VideoTriangleCFGGuidance
。
KSampler
- 作用:虽然KSampler主要用于图像生成,但在视频生成任务中,它也可以用于对每一帧进行采样。
- 使用场景:当你需要使用KSampler提供的各种采样算法来生成视频的每一帧时,可以使用这个节点。
- 示例:如果你想使用Euler a算法生成视频的每一帧,可以将
KSampler
节点连接到视频生成流程中,并设置其算法为Euler a
。
KSampler (Advanced)
- 作用:与图像生成类似,
KSampler (Advanced)
是KSampler的高级版本,提供了更多的参数设置,可以更精细地控制视频采样过程。 - 使用场景:适用于需要对视频采样过程进行更多调整的高级用户。
- 示例:如果你想在视频采样过程中动态调整CFG Scale,可以使用
KSampler (Advanced)
,并设置CFG Scale Schedule
。
Loaders
Add node
>loaders
“Loaders” 选项提供了各种加载器节点,用于将模型、图像、文本等数据加载到 ComfyUI 的工作流程中。
Load Checkpoint: 加载 Stable Diffusion 的主模型(checkpoint),这是生成图像的基础, 这是任何文生图或图生图工作流程都必不可少的节点。可以用来加载 sd_xl_base_1.0.safetensors
这样的模型文件来生成图像。
Load VAE: 加载变分自编码器(VAE),用于在图像的像素空间和潜在空间之间进行转换。通常与主模型一起使用,有些主模型可能内置了 VAE,有些则需要单独加载。可以用来加载 vae-ft-mse-840000-ema-pruned.ckpt
这样的 VAE 文件。
Load LoRA:加载 LoRA(Low-Rank Adaptation)模型,用于对主模型进行微调,实现风格定制或其他效果。当想要在生成图像时应用特定的风格、主题或其他效果时,可以使用 LoRA。可以用于加载 koreanDollLikeness_v10.safetensors
这样的 LoRA 文件,让生成的图像具有韩国娃娃的风格。
Load ControlNet Model:加载 ControlNet 模型,用于通过额外的控制图像(如边缘图、深度图、姿势图等)来引导图像生成过程。当需要更精确地控制生成图像的构图、姿势、深度等方面时,可以使用 ControlNet。可以用于加载 control_canny-fp16.safetensors
这样的 ControlNet 模型,然后输入一张边缘图,让生成的图像遵循边缘图的轮廓。
**Load ControlNet Model (diff)**:与 Load ControlNet Model
类似,但它加载的是 ControlNet 的差异模型(difference model),可以更有效地利用计算资源。与 Load ControlNet Model
相同,但通常在计算资源有限时使用。
Load Style Model:加载风格模型,用于将特定艺术风格应用到生成的图像上。当你想要生成具有特定艺术风格的图像时,可以使用风格模型。可用于加载 vangogh_style.ckpt
这样的风格模型,让生成的图像具有梵高的风格。
Load CLIP Vision:加载 CLIP 视觉编码器,用于将图像编码为向量表示。主要用于图像相似度计算、图像分类等任务。
unCLIPCheckpointLoader:加载 unCLIP 模型,unCLIP 是一种能够从文本生成图像的模型,与 Stable Diffusion 不同,它不需要 VAE。适用于探索 unCLIP 模型的图像生成能力。
GLIGENLoader:加载 GLIGEN 模型,GLIGEN 是一种能够根据文本和边界框生成图像的模型。适用于需要在指定区域内生成特定物体的图像生成任务。
LoraLoaderModelOnly:仅加载 LoRA 模型的权重,不加载其元数据(metadata)。适用于只需要 LoRA 权重,不需要元数据的情况。
HypernetworkLoader:加载超网络(Hypernetwork)模型,超网络是一种通过修改主模型权重来实现特定效果的模型。适用于实现一些全局性的图像调整或效果。
Load Upscale Model:加载图像超分辨率模型,用于提高图像的分辨率。适用于在生成低分辨率图像后,通过超分辨率模型提高其分辨率。
Conditioning
在 Stable Diffusion 中,”Conditioning”(条件)指的是影响图像生成过程的各种因素,最常见的是文本提示词(prompts)。Conditioning 菜单中的节点提供了多种方式来控制和调整这些条件信息,从而实现对生成图像的更精细控制。
Add node
>conditioning
style_model
:加载风格模型,用于将特定艺术风格迁移到生成的图像上。
controlnet
:加载 ControlNet 模型,用于通过额外的控制图像来精确引导图像生成过程。
gilgen
:加载 GLIGEN 模型,用于根据文本提示和边界框在图像的指定区域内生成物体。
inpaint
:加载 Inpaint 模型,用于修复或替换图像中的指定区域。
upscale_diffusion
:加载超分辨率扩散模型,用于提高图像的分辨率。
stable_cascade
:加载 Stable Cascade 模型,用于生成高分辨率图像。
instructx/pix2pix
:加载 instruct-pix2pix 模型,用于根据文本指令编辑图像。
CLIP Text Encode (Prompt): 这是最基本的 conditioning 节点,它使用 CLIP 模型将文本提示词编码为向量表示,然后将这些向量输入到模型中,引导图像生成过程。输入你希望生成的图像的文本描述。
CLIP Set Last Layer:这个节点允许你修改 CLIP 文本编码器最后一层的输出,从而微调文本提示对图像生成的影响。对 CLIP 编码器有一定了解并希望进行更精细控制的高级用户可以使用这种CLIP。比如可以通过修改最后一层的输出,来强调或弱化提示词中的某些概念。
**Conditioning (Average)**:这个节点将多个 conditioning 向量(通常来自多个 CLIP Text Encode
节点)进行平均,生成一个新的 conditioning 向量。适用于将多个提示词混合在一起,生成融合了多个概念的图像。比如,可以输入两个提示词 “一只猫” 和 “一只狗”,然后使用 Conditioning (Average)
节点将它们的编码向量平均,生成一个新的向量,模型会尝试生成同时具有猫和狗特征的图像。
**Conditioning (Combine)**:这个节点将多个 conditioning 向量组合在一起,但不是简单地平均,而是根据每个向量的权重进行加权平均。适用于对多个提示词的影响程度进行更精细的控制。同样用猫狗为例,输入两个提示词 “一只猫” 和 “一只狗”,并分别设置它们的权重为 0.7 和 0.3,然后使用 Conditioning (Combine)
节点将它们组合,模型会生成一张更偏向于猫的图像。
**Conditioning (Concat)**:将多个 conditioning 向量拼接(concatenate)在一起,形成一个更长的向量。适用于将多个提示词的信息完全保留,而不进行任何混合或加权。比如,可以输入两个提示词 “一只猫” 和 “在窗台上”,然后使用 Conditioning (Concat)
节点将它们拼接,模型会尝试生成一只在窗台上的猫的图像。
**Conditioning (Set Area)**:将不同的 conditioning 向量应用到图像的不同区域。适用于对图像的不同部分进行独立控制。比如将 “蓝天” 应用到图像的上半部分,将 “绿草地” 应用到图像的下半部分。
**Conditioning (Set Area with Percentage)**:类似于 Conditioning (Set Area)
,但它允许你使用百分比来指定区域的大小,可以更灵活地控制区域划分。
ConditioningSetAreaStrength:用来调整 Conditioning (Set Area)
或 Conditioning (Set Area with Percentage)
节点设置的区域的 conditioning 强度。适用于更精细地控制不同区域的 conditioning 影响程度。
**Conditioning (Set Mask)**:这个节点用来使用掩码(mask)来控制 conditioning 向量的影响区域。适用于对图像的任意形状区域进行控制。例如,可以使用一个圆形掩码,将 “红苹果” 的 conditioning 向量只应用到图像的圆形区域内。
CLIP Vision Encode:这个节点使用 CLIP 视觉编码器将图像编码为向量表示吗,之前在loaders中有提到过。主要用于图像相似度计算、图像分类等任务,也可以用于一些高级的图像生成技巧。
unCLIP Conditioning:这个节点用于 unCLIP 模型的 conditioning,unCLIP 是一种不需要 VAE 就能从文本生成图像的模型。
Latent(潜在空间)
latent
子菜单下的节点主要用于在模型的潜在空间中处理图像。这些节点可以实现图像修复、超分辨率、图像合成等功能。
inpaint:加载和应用 Inpaint 模型,用于修复或替换图像中的指定区域。
- 图像修复:去除图像中不需要的物体、瑕疵或水印。
- 内容替换:将图像中的某个区域替换为新的内容。
在图像上绘制一个掩码,然后使用 Inpaint 模型来修复掩码覆盖的区域,生成没有瑕疵或不需要物体的图像。
batch:批量处理潜在图像。将多张图像的潜在表示输入到 batch
节点,然后将输出连接到其他节点,对多张图像进行相同的操作。比如将多张图像的潜在表示输入到 batch
节点后,将输出连接到 Latent Upscale
节点,可以同时提高多张图像的分辨率。
transform:对潜在图像进行各种变换操作,如旋转、缩放、平移等。比如将潜在图像连接到 transform
节点,设置旋转角度为 45 度,然后解码回像素空间,得到旋转后的图像。
advanced:包含一些高级的潜在空间操作节点,如 LoraLoaderModelOnly
、HypernetworkLoader
等。适用于对模型进行微调或应用其他高级技巧。
stable_cascade:加载和应用 Stable Cascade 模型,Stable Cascade 是一种用于生成高分辨率图像的模型。一般用于直接生成高分辨率图像,或者在生成低分辨率图像后进一步提高分辨率的情况。
VAE Decode:将潜在空间表示解码为普通图像。一般用于显示生成结果:将 KSampler
等采样器生成的潜在图像解码为可视化的图像。比如将 KSampler
生成的潜在图像连接到 VAE Decode
,在 ComfyUI 界面中预览生成的图像。
VAE Encode:将普通图像编码为潜在空间表示。一般用来以图生图,将参考图像编码为潜在表示,然后输入到 KSampler
等采样器中,引导生成新的图像。比如加载一张照片,将其转换为潜在表示,然后使用 KSampler
生成一张具有相似构图但不同风格的风景画。
Empty Latent Image:创建一个空的潜在图像(latent image),其大小由参数指定。与 Inpaint
或 Outpaint
节点结合使用,通过在空白潜在图像上绘制或填充来生成新的图像内容,或作为图像生成的起点,代替从随机噪声开始生成。e.g. 创建一个 512x512 的空白潜在图像,然后使用 Inpaint
节点在其中绘制一个物体,生成包含该物体的图像。
Upscale Latent:在潜在空间中提高图像的分辨率。可以先生成低分辨率图像,然后通过放大来提高分辨率,从而在提高图像质量的同时,节省计算资源。比如将 KSampler
生成的低分辨率潜在图像连接到 Upscale Latent
,提高其分辨率,然后再通过 VAE Decode
解码为高分辨率图像。
Upscale Latent By:类似于 Upscale Latent
,但它允许你指定放大的倍数。
Latent Composite:将多个潜在图像按照指定的权重和蒙版进行合成。适用于将多个生成的图像或图像的不同部分进行融合。比如将两个 KSampler
生成的潜在图像和对应的掩码连接到 Latent Composite
,将它们融合成一张新的图像。
LatentCompositeMasked:与 Latent Composite
类似,但它允许你使用一个额外的掩码来控制合成区域。适用于更精细地控制图像合成的区域。
Image
image
子菜单下的节点主要用于在像素空间中处理图像,包括图像缩放、变换、合成、加载和保存等操作。
upscaling:提高图像分辨率。
Upscale
:使用 ESRGAN 等模型对图像进行超分辨率处理。
Latent Upscale
:在潜在空间中提高图像的分辨率,通常与 VAE 结合使用。
postprocessing
用于图像后处理的节点,可以在图像生成完成后对其进行进一步的调整和优化。
- 图像增强:提高图像的清晰度、对比度、饱和度等。
- 瑕疵修复:去除图像中的噪点、伪影等瑕疵。
- 风格化:为图像添加艺术滤镜或特殊效果。
比如:GFPGAN
:修复图像中的人脸。RealESRGAN
:提高图像的真实感和细节。CodeFormer
:修复图像中的人脸。
batch:批量处理图像。
preprocessors:包含用于图像预处理的节点,在将图像输入到模型之前对其进行转换或调整。比如 VGG16 Preprocessor
:使用 VGG16 模型对图像进行预处理。
transform:对图像进行各种变换操作,如旋转、缩放、平移等。
animation:用于生成动画或视频。
- 通过插值或其他技术,从多张图像生成动画。
- 生成视频:将多帧图像组合成视频。
- e.g.
Frame Interpolation
:在视频帧之间插入新的帧,使动画更流畅。
Save Image:将生成的图像保存到文件。
Preview Image:在 ComfyUI 界面中预览图像。
Load Image:从文件加载图像。
- 图生图:加载参考图像,用于引导生成新的图像。
- 图像编辑:加载需要编辑的图像。
Invert Image:反转图像的颜色。
Batch Images:批量处理图像。
Pad Image for Outpainting:为图像添加填充,以便进行 Outpainting(图像扩展)。
- Outpainting:即在图像的边界之外生成新的内容来扩展图像。
Empty Image:创建一个空的图像,其大小由参数指定。
- 作为背景图像,在其上添加其他元素,代替随机噪声成为初始图象。
Image Composite Masked:将多张图像按照指定的权重和蒙版进行合成。适用于将多个生成的图像或图像的不同部分进行融合。和刚刚Latent中的区别在于这个是在像素空间进行操作,接受图像而不是潜在图像作为Input,计算成本比Latent空间中操作要高,但是更加直观和容易控制。
Webcam Capture:从网络摄像头捕获图像。
- 实时图像生成:将网络摄像头捕获的图像实时输入到模型中,生成新的图像。
- 交互式应用:创建与用户互动的应用程序,例如虚拟试衣间、实时风格迁移等。
Mask(掩码)
mask
子菜单下的节点主要用于创建、编辑和操作掩码(mask)。掩码本质上是一张灰度图像,其中每个像素的值表示该像素在图像中的透明度或影响程度。掩码可以用于控制图像生成或处理过程中的哪些区域受到影响。
Compositing:用于合成多个掩码。
- e.g.
Mask Blend
:将两个掩码按照指定的混合模式(如叠加、相乘、相减等)进行混合,Mask Composite
:将多个掩码按照指定的顺序和操作进行合成。
**Load Image (as Mask)**:将加载的图像作为掩码使用。例如从文件加载一张灰度图像作为掩码,或加载一张带有 Alpha 通道的图像,将其 Alpha 通道作为掩码。
e.g. 加载一张黑白图像,其中黑色区域表示不透明,白色区域表示透明,然后将这张图像作为掩码用于 Inpainting。
Convert Mask to Image:将掩码转换为普通图像。预览掩码,将掩码转换为图像,以便在 ComfyUI 界面中查看其效果。保存掩码,将掩码保存为图像文件,以便在其他软件中使用。
Convert Image to Mask:将普通图像转换为掩码。将一张灰度图像或带有 Alpha 通道的图像转换为掩码,之后用于 Inpainting。
Image Color To Mask:根据图像中的颜色范围创建掩码。一般是根据颜色范围从图像中提取掩码,用于对特定颜色区域进行操作。比如从一张风景照片中提取天空区域的掩码,然后对天空进行单独处理。
Solid Color Mask:创建一个纯色掩码。快速创建一个矩形、圆形或其他形状的纯色掩码。
比如创建一个黑色矩形掩码,用于 Inpainting 填充图像中的某个区域。
Invert Mask:反转掩码的透明度。将掩码的透明区域和不透明区域互换。e.g. 将一个圆形掩码反转,使圆形区域外的部分变为不透明。
Feather Mask:对掩码的边缘进行羽化(模糊)处理,使其过渡更加平滑,避免硬边缘,即在图像合成或 Inpainting 中避免出现明显的边缘。
e.g. 对一个圆形掩码进行羽化处理,使圆形边缘与周围区域自然过渡。
Grow Mask:将掩码的不透明区域向外扩展指定的像素数。扩大掩码的影响范围。
Threshold Mask:根据像素值的阈值将图像转换为二值掩码。根据亮度或其他特征,从图像中提取掩码。比如将一张灰度图像转换为二值掩码,其中亮度高于阈值的像素变为不透明,其他像素变为透明。