ComfyUI自定义节点数据类型
这些是最重要的内置数据类型。你也可以定义自己的数据类型。
数据类型在INPUT_TYPES
中由 str 指定,但COMBO
除外,它是list[str]
数据类型在客户端使用,以防止工作流将错误形式的数据传递到节点 - 有点像强类型。JavaScript 客户端代码通常不允许将节点输出连接到不同数据类型的输入,但下面列出了一些例外。
1、Comfy的数据类型
1.1 COMBO
INPUT_TYPES
中没有其他参数- Python 数据类型:定义为
list[str]
,输出值为str
表示下拉菜单小部件。与其他数据类型不同, COMBO
不是在 INPUT_TYPES
中由 str
指定,而是通过与下拉列表中的选项相对应的 list[str]
指定,默认选择第一个选项。
COMBO
输入通常在运行时动态生成。例如,在内置的 CheckpointLoaderSimple
节点中,你可以找到:
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )
或者它们可能只是一个固定的选项列表,
"play_sound": (["no","yes"], {}),
1.2 元节点和重路由
元节点(primitive)和重路由(reroute)节点仅存在于客户端。它们没有内在的数据类型,但连接时它们会采用已连接的输入或输出的数据类型(这就是它们无法连接到 *
输入的原因……)
2、Python 数据类型
2.1 INT
INPUT_TYPES
中的其他参数:default
是必需的,min
和max
是可选的- Python 数据类型
int
2.2 FLOAT
INPUT_TYPES
中的其他参数:default
是必需的,min
、max
、step
是可选的- Python 数据类型
float
2.3 STRING
INPUT_TYPES
中的其他参数:default
是必需的,Python 数据类型str
3、Tensor 数据类型
MASK、IMAGE 和 LATENT 都使用 torch.Tensor
类型,但它们的形状不同。请参阅“图像、潜在和蒙版”中的讨论。
3.1 IMAGE
INPUT_TYPES
中没有其他参数- Python 数据类型
torch.Tensor
,形状为[B,H,W,C]
一批 B 幅图像,高度为 H,宽度为 W,具有 C 个通道(RGB 通常为 C=3)。
3.2 LATENT
INPUT_TYPES
中没有其他参数- Python 数据类型字典,包含一个形状为
[B,C,H,W]
的torch.Tensor
传递的字典包含关键样本,它是一个形状为 [B,C,H,W]
的 torch.Tensor
,代表一批 B 幅潜伏图像,具有 C 个通道(对于现有的稳定扩散模型通常为 C=4),高度为 H,宽度为 W。
高度和宽度是相应图像大小的 1/8(这是你在 Empty Latent Image 节点中设置的值)。
字典中的其他条目包含潜伏掩码之类的内容。
3.3 MASK
INPUT_TYPES
中没有其他参数- Python 数据类型
torch.Tensor
具有形状[H,W]
或[B,C,H,W]
4、自定义采样数据类型
4.1 NOISE
NOISE
数据类型表示噪声源(而不是实际噪声本身)。它可以由任何提供生成噪声方法的 Python 对象表示,其签名为 generate_noise(self, input_latent:Tensor) -> Tensor
,以及属性 seed:Optional[int]
。
seed传递到 SamplerCustomAdvanced 中的样本引导器中,但似乎未在任何标准引导器中使用。它是可选的,因此你通常可以将其设置为 None。
当要添加噪声时,潜伏期将传递到此方法中,该方法应返回包含噪声的相同形状的张量。
参见噪声混合示例。
4.2 SAMPLER
SAMPLER
数据类型表示采样器,它表示为提供采样方法的 Python 对象。稳定扩散采样超出了本指南的范围;如果你想深入了解代码的这一部分,请参阅 comfy/samplers.py
。
4.3 SIGMAS
SIGMAS
数据类型表示由调度程序生成的采样过程每个步骤之前和之后的 sigma 值。这表示为长度为 steps+1 的一维张量,其中每个元素表示在相应步骤之前预计存在的噪声,最终值表示最后一步之后存在的噪声。
对于 SDXL 模型,具有 20 个步骤和 1 的降噪的正常调度程序会产生:
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 的原因输出
4.4 GUIDER
GUIDER
是去噪过程的概括,由提示或任何其他形式的条件“引导”。在 Comfy 中,引导器由可调用的 Python 对象表示,提供由样本调用的 __call__(*args, **kwargs)
方法。
__call__
方法(在 args[0]
中)获取一批噪声潜变量(张量 [B,C,H,W]
),并返回噪声的预测(相同形状的张量)。
5、模型数据类型
稳定扩散模型有许多更技术性的数据类型。最重要的是 MODEL
、 CLIP
、 VAE
和 CONDITIONING
。使用这些数据类型(当前)超出了本指南的范围!
6、附加参数
下面是官方支持的键列表,这些键可用于输入定义的“额外选项”部分。
你可以将附加键用于自己的自定义小部件,但不应将以下任何键重新用于其他目的。
键 | 描述 |
---|---|
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", ]),而不是接收求值。主要在你的节点使用节点扩展时有用。 |