这些是最重要的内置数据类型。你还可以定义自己的。
数据类型通过 INPUT_TYPES
中的 str
指定,COMBO
除外,它是 list[str]
数据类型在客户端使用,以防止工作流将错误形式的数据传递给节点 - 类似于强类型。
JavaScript 客户端代码通常不允许将不同数据类型的节点输出连接到输入,尽管下面有一些例外。
Comfy 的数据类型
COMBO
INPUT_TYPES
中没有额外的参数- Python 数据类型:定义为
list[str]
,输出值为str
表示下拉菜单小部件。
与其他数据类型不同,COMBO
不是通过 str
在 INPUT_TYPES
中指定的,而是通过一个 list[str]
,对应下拉列表中的选项,默认选择第一个选项。
COMBO
输入通常在运行时动态生成。例如,在内置的 CheckpointLoaderSimple
节点中,你会发现
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )
或者它们可能只是一个固定的选项列表,
"play_sound": (["no","yes"], {}),
原始和重定向
原始和重定向节点仅存在于客户端。它们没有内在的数据类型,但当连接时,它们会采用所连接的输入或输出的数据类型(这也是为什么它们不能连接到 *
输入的原因……)
Python 数据类型
INT
INPUT_TYPES
中的额外参数:default
是必需的min
和max
是可选的
- Python 数据类型
int
FLOAT
INPUT_TYPES
中的附加参数:default
是必需的min
,max
,step
是可选的
- Python 数据类型
float
STRING
INPUT_TYPES
中的附加参数:default
是必需的
- Python 数据类型
str
张量数据类型
MASK, IMAGE 和 LATENT 都使用 torch.Tensor
类型,但它们的 shape 不同。
参见‘图像、潜变量和掩码’部分的讨论。
IMAGE
INPUT_TYPES
中没有额外的参数- Python 数据类型
torch.Tensor
,shape 为 [B,H,W,C]
一批 B
张图像,高度 H
,宽度 W
,C
个通道(通常 C=3
对于 RGB
)。
LATENT
INPUT_TYPES
中没有额外的参数- Python 数据类型
dict
,包含一个 形状 [B,C,H,W] 的torch.Tensor
传递的 dict
包含键 samples
,它是一个 形状 [B,C,H,W] 的 torch.Tensor
,代表一个包含 B
个潜在值的批次,C
个通道(对于现有的稳定扩散模型,通常 C=4
),高度 H
和宽度 W
。
高度和宽度是相应图像大小的 1/8(这是你在 Empty Latent Image 节点中设置的值)。
字典中的其他条目包含诸如潜在掩码之类的其他内容。
MASK
INPUT_TYPES
中没有额外的参数- Python 数据类型
torch.Tensor
,具有 shape [H,W] 或 [B,C,H,W]
自定义采样数据类型
Noise
NOISE
数据类型表示一个 源(而不是实际的噪声本身)。它可以由任何提供 generate_noise(self, input_latent:Tensor) -> Tensor
方法的 Python 对象表示,该方法的签名包含一个属性,seed:Optional[int]
。
seed
被传递到 SamplerCustomAdvanced
中的 sample
指引器,但似乎在所有标准指引器中都没有被使用。它是可选的,所以你通常可以将其设置为 None。
当需要添加噪声时,将潜在变量传递到该方法,该方法应返回一个形状相同且包含噪声的 Tensor
。
查看 噪声混合示例
采样器 Sampler
SAMPLER
数据类型表示一个采样器,它是一个Python对象,提供了一个 sample
方法。
稳定扩散采样超出了本指南的范围;如果您想深入了解这部分代码,请参阅 comfy/samplers.py
。
Sigmas
SIGMAS
数据类型表示采样过程中的每一步之前和之后的σ值,由调度器生成。
这表示为一个一维张量,长度为 steps+1
,其中每个元素表示对应步骤之前预期的噪声,最终值表示最终步骤之后的噪声。
对于一个具有 20 步和 1 次去噪的 normal
调度器,SDXL 模型会产生:
tensor([14.6146, 10.7468, 8.0815, 6.2049, 4.8557,
3.8654, 3.1238, 2.5572, 2.1157, 1.7648,
1.4806, 1.2458, 1.0481, 0.8784, 0.7297,
0.5964, 0.4736, 0.3555, 0.2322, 0.0292, 0.0000])
sigma的起始值取决于模型,这就是为什么调度节点需要一个MODEL
输入来生成SIGMAS输出
Guider
GUIDER
是对去噪过程的泛化,即通过提示或其他任何形式的条件“引导”。在Comfy中,guider由一个提供__call__(*args, **kwargs)
方法的callable
Python对象表示,该方法被样本调用。
__call__
方法接收(在args[0]
中)一组噪声潜在值(形状为[B,C,H,W]
的张量),并返回噪声的预测(形状相同的张量)。
模型数据类型
稳定扩散模型有许多更技术化的数据类型。其中最重要的包括 MODEL
、CLIP
、VAE
和 CONDITIONING
。
使用这些数据类型(目前)超出了本指南的范围!
额外参数
以下是在输入定义的“额外选项”部分可以使用的官方支持的键的列表。
您可以使用额外的键来创建自己的自定义小部件,但不应将以下任何键用于其他目的。
键 | 描述 |
---|---|
default | 小部件的默认值 |
min | 数字(FLOAT 或 INT )的最小值 |
max | 数字(FLOAT 或 INT )的最大值 |
step | 增加或减少小部件的量 |
label_on | 当布尔值为 True 时在 UI 中使用的标签(BOOL ) |
label_off | 当布尔值为 False 时在 UI 中使用的标签(BOOL ) |
defaultInput | 默认为输入插座而不是支持的部件 |
forceInput | defaultInput 并且不允许转换为部件 |
multiline | 使用多行文本框(STRING ) |
placeholder | 在 UI 中为空时显示的占位文本(STRING ) |
dynamicPrompts | 导致前端评估动态提示 |
lazy | 声明此输入使用懒加载评估 |
rawLink | 当存在链接时,而不是接收评估值,您将接收链接(即 ["nodeId", <outputIndex>] )。主要在您的节点使用节点扩展时有用。 |