这些是最重要的内置数据类型。您也可以定义自己的数据类型。
数据类型在客户端用于防止工作流将错误形式的数据传递给节点 - 有点像强类型。
JavaScript 客户端代码通常不允许将节点输出连接到不同数据类型的输入,
不过下面会提到一些例外情况。
Comfy 数据类型
COMBO
-
INPUT_TYPES 中不需要额外参数
-
Python 数据类型:定义为
list[str],输出值为 str
表示下拉菜单组件。
与其他数据类型不同,COMBO 在 INPUT_TYPES 中不是通过 str 指定的,而是通过 list[str] 指定,
对应下拉列表中的选项,默认选中第一个选项。
COMBO 输入通常在运行时动态生成。例如,在内置的 CheckpointLoaderSimple 节点中,您会看到
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )
or they might just be a fixed list of options,
"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 中的额外参数:
-
Python 数据类型
str
BOOLEAN
-
INPUT_TYPES 中的额外参数:
-
Python 数据类型
bool
张量数据类型
IMAGE
-
INPUT_TYPES 中不需要额外参数
-
Python 数据类型
torch.Tensor,形状为 [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 个通道(现有 stable diffusion 模型通常 C=4),高度 H,宽度 W。
高度和宽度是对应图像尺寸的 1/8(这是您在 Empty Latent Image 节点中设置的值)。
字典中的其他条目包含潜空间蒙版等内容。
MASK
-
INPUT_TYPES 中不需要额外参数
-
Python 数据类型
torch.Tensor,形状为 [H,W] 或 [B,C,H,W]
AUDIO
-
INPUT_TYPES 中不需要额外参数
-
Python 数据类型
dict,包含一个形状为 [B, C, T] 的 torch.Tensor 和采样率。
传入的 dict 包含键 waveform,这是一个形状为 [B, C, T] 的 torch.Tensor,表示
一批 B 个音频样本,具有 C 个通道(C=2 表示立体声,C=1 表示单声道),以及 T 个时间步(即音频样本的数量)。
dict 还包含另一个键 sample_rate,表示音频的采样率。
自定义采样数据类型
Noise
NOISE 数据类型表示噪声的来源(而不是噪声本身)。它可以由任何提供生成噪声方法的 Python 对象表示,
方法签名为 generate_noise(self, input_latent:Tensor) -> Tensor,以及一个属性 seed:Optional[int]。
seed 被传入 SamplerCustomAdvanced 中的 sample guider,但在任何标准 guider 中似乎都没有使用。
它是可选的,所以您通常可以将其设置为 None。
当需要添加噪声时,潜空间表示会被传入这个方法,它应该返回一个包含噪声的相同形状的 Tensor。
参见噪声混合示例
Sampler
SAMPLER 数据类型表示一个采样器,它由一个提供 sample 方法的 Python 对象表示。
Stable diffusion 采样超出了本指南的范围;如果您想深入研究这部分代码,请查看 comfy/samplers.py。
Sigmas
SIGMAS 数据类型表示由调度器产生的采样过程中每个步骤前后的 sigma 值。
它表示为一个一维张量,长度为 steps+1,其中每个元素表示对应步骤之前预期的噪声量,
最后一个值表示最终步骤之后的噪声量。
对于 SDXL 模型,一个具有 20 步和去噪值为 1 的 normal 调度器会产生:
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) 方法的可调用 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>])。主要在节点使用节点扩展时有用。 |