ComfyUI-ConDelta 插件完全教程
1. 插件简介
插件地址: https://github.com/envy-ai/ComfyUI-ConDelta
ComfyUI-ConDelta 是一个超级厉害的插件,它能让你创建和使用"风格差值"(ConDelta)。简单来说,就像你有两个不同风格的图片描述,这个插件能帮你提取出它们之间的"风格差异",然后把这个差异保存起来,以后可以应用到其他图片上。
比如说,你有"艺术装饰风格的城市"和"普通城市"两个描述,插件能提取出"艺术装饰风格"这个特征,然后你可以把这个特征应用到任何其他描述上,让它们都带上艺术装饰的风格。
主要功能:
- 创建风格差值文件(像 LoRA 一样小巧,但更快)
- 应用风格差值到任何提示词
- 支持 Flux、SDXL、SD1.5 等多种模型
- 文件很小(Flux 约 4MB,SDXL 约 0.6MB)
- 对生成速度没有影响
2. 如何安装
方法一:通过 ComfyUI Manager 安装
- 打开 ComfyUI Manager
- 搜索 "ConDelta"
- 点击安装
方法二:手动安装
- 进入 ComfyUI 的
custom_nodes文件夹 - 运行命令:
git clone https://github.com/envy-ai/ComfyUI-ConDelta.git - 重启 ComfyUI
安装后设置
- 在 ComfyUI 的
models文件夹里创建一个名为ConDelta的文件夹(注意大小写) - 把插件自带的示例文件从
custom_nodes/ComfyUI-ConDelta/sample_models复制到刚创建的ConDelta文件夹
3. 节点详细解析
3.1 QuickConDelta 节点
这个节点就像一个"快速风格添加器",你给它一个基础的图片描述和一个风格描述,它就能快速把风格加到基础描述上。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 基础的图片描述信息 | 输入的条件编码向量 | 连接从CLIP文本编码器来的线 |
| clip | clip | CLIP类型 | - | 文字理解器,把文字变成电脑能懂的数字 | CLIP模型用于文本编码 | 连接模型加载器的CLIP输出 |
| prompt | prompt | 文本 | - | 你想要添加的风格描述 | 要编码的风格提示文本 | 输入"油画风格"、"赛博朋克"等 |
| strength | strength | 浮点数 | 0.6 | 风格强度,就像调音量大小 | 风格应用的强度系数 | 0.6表示60%的风格强度 |
3.2 CFGlessNegativePrompt 节点
这个节点就像一个"负面描述去除器",不用设置CFG参数就能去掉你不想要的元素。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 基础的图片描述信息 | 输入的条件编码向量 | 连接从CLIP文本编码器来的线 |
| clip | clip | CLIP类型 | - | 文字理解器 | CLIP模型用于文本编码 | 连接模型加载器的CLIP输出 |
| negative_prompt | negative_prompt | 文本 | - | 你不想要的东西的描述 | 负面提示文本 | 输入"模糊"、"低质量"等 |
| negative_prompt_strength | negative_prompt_strength | 浮点数 | 0.6 | 负面描述的去除强度 | 负面提示的应用强度 | 0.6表示60%的去除强度 |
3.3 GetConDeltaFromPrompt 节点
这个节点就像一个"风格提取器",能从一个描述中提取出特定的风格特征。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| prompt | prompt | 文本 | - | 包含风格的描述文字 | 要提取风格的提示文本 | 输入"艺术装饰风格的建筑" |
| clip | clip | CLIP类型 | - | 文字理解器 | CLIP模型用于文本编码 | 连接模型加载器的CLIP输出 |
| prompt_type | prompt_type | 选择列表 | misc | 预设的测试描述类型 | 用于生成风格差值的提示类型 | 选择"misc"或"anime"等 |
| custom_prompts | custom_prompts | 文本 | - | 自定义的测试描述,一行一个 | 自定义提示文本,每行一个 | 输入多行测试用的描述 |
3.4 ConditioningGetNoise 节点
这个节点就像一个"噪音生成器",能根据现有的描述信息生成相应的随机变化。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 基础的图片描述信息 | 输入的条件编码向量 | 连接其他节点的conditioning输出 |
| strength | strength | 浮点数 | 1.0 | 噪音强度,像调节干扰程度 | 噪音生成的强度系数 | 1.0表示标准强度 |
| type | type | 选择列表 | type1 | 噪音类型,不同的随机方式 | 噪音生成的算法类型 | type1-4有不同的随机特性 |
| seed | seed | 整数 | 0 | 随机种子,控制随机结果 | 随机数生成器的种子值 | 相同种子产生相同随机结果 |
3.5 ConditioningGetRandom 节点
这个节点就像一个"纯随机生成器",生成完全随机的描述信息。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 用来确定随机信息的形状大小 | 输入的条件编码向量作为模板 | 连接其他节点的conditioning输出 |
| strength | strength | 浮点数 | 1.0 | 随机强度 | 高斯噪音的强度系数 | 1.0表示标准强度 |
| seed | seed | 整数 | 0 | 随机种子 | 随机数生成器的种子值 | 控制随机结果的可重复性 |
3.6 MaskConDelta 节点
这个节点就像一个"遮罩器",用一个描述信息来限制另一个描述信息的范围。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_delta | conditioning_delta | CONDITIONING类型 | - | 要被限制的风格差值 | 要被遮罩的条件编码向量 | 连接风格差值节点的输出 |
| mask | mask | CONDITIONING类型 | - | 用来限制的遮罩信息 | 用作遮罩的条件编码向量 | 连接另一个conditioning输出 |
3.7 SaveConditioningDelta 节点
这个节点就像一个"风格保存器",把提取出的风格差值保存成文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_delta | conditioning_delta | CONDITIONING类型 | - | 要保存的风格差值 | 要保存的条件编码差值 | 连接创建的ConDelta输出 |
| file_name | file_name | 文本 | - | 保存的文件名 | 保存文件的名称 | 输入"我的风格"或"art_deco" |
| overwrite | overwrite | 布尔值 | False | 是否覆盖同名文件 | 是否覆盖已存在的文件 | True表示覆盖,False表示不覆盖 |
3.8 LoadConditioningDelta 节点
这个节点就像一个"风格加载器",从文件中读取之前保存的风格差值。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| condelta | condelta | 选择列表 | - | 要加载的风格差值文件 | ConDelta文件的选择 | 从下拉列表选择已保存的文件 |
3.9 ApplyConDelta 节点
这个节点就像一个"风格应用器",把保存的风格差值应用到新的描述上。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要应用风格的基础描述 | 输入的条件编码向量 | 连接CLIP文本编码器输出 |
| condelta | condelta | 选择列表 | - | 要应用的风格差值文件 | ConDelta文件的选择 | 选择之前保存的风格文件 |
| strength | strength | 浮点数 | 1.0 | 风格应用强度 | 风格应用的强度系数 | 1.0表示100%强度 |
3.10 ApplyConDeltaAutoScale 节点
这个节点就像一个"智能风格应用器",会自动调整风格强度来匹配基础描述。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要应用风格的基础描述 | 输入的条件编码向量 | 连接CLIP文本编码器输出 |
| condelta | condelta | 选择列表 | - | 要应用的风格差值文件 | ConDelta文件的选择 | 选择之前保存的风格文件 |
| ratio_type | ratio_type | 选择列表 | median | 自动调整的计算方式 | 比例计算的统计方法 | median最稳定,mean平均,max最大 |
| strength | strength | 浮点数 | 1.0 | 基础风格强度 | 风格应用的基础强度系数 | 在自动调整基础上的倍数 |
| clamp | clamp | 布尔值 | False | 是否限制数值范围 | 是否对数值进行截断 | True表示限制,False表示不限制 |
| clamp_value | clamp_value | 浮点数 | 3.0 | 限制的最大数值 | 截断的阈值 | 超过此值的会被截断 |
3.11 ConditioningScale 节点
这个节点就像一个"强度调节器",能把描述信息整体放大或缩小。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要调节的描述信息 | 输入的条件编码向量 | 连接任何conditioning输出 |
| scalar | scalar | 浮点数 | 1.0 | 缩放倍数 | 乘法系数 | 2.0表示放大2倍,0.5表示缩小一半 |
3.12 ConditioningSubtract 节点
这个节点就像一个"差值计算器",计算两个描述之间的差异来创建风格差值。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_a | conditioning_a | CONDITIONING类型 | - | 第一个描述(被减数) | 第一个条件编码向量 | 连接"艺术装饰城市"的编码 |
| conditioning_b | conditioning_b | CONDITIONING类型 | - | 第二个描述(减数) | 第二个条件编码向量 | 连接"普通城市"的编码 |
3.13 ThresholdConditioning 节点
这个节点就像一个"噪音过滤器",去掉太小的数值,只保留重要的特征。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要过滤的描述信息 | 输入的条件编码向量 | 连接任何conditioning输出 |
| threshold | threshold | 浮点数 | 1.0 | 过滤阈值 | 阈值,小于此值的会被设为0 | 1.0表示小于1的数值会被清零 |
3.14 ClampConDelta 节点
这个节点就像一个"柔和限制器",把数值柔和地限制在-1到1之间。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要限制的描述信息 | 输入的条件编码向量 | 连接任何conditioning输出 |
3.15 HardClampConDelta 节点
这个节点就像一个"硬性限制器",强制把数值限制在指定范围内。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING类型 | - | 要限制的描述信息 | 输入的条件编码向量 | 连接任何conditioning输出 |
| strength | strength | 浮点数 | 1.0 | 限制范围 | 截断的最大绝对值 | 1.0表示限制在-1到1之间 |
3.16 ConditioningAddConDelta 节点
这个节点就像一个"风格混合器",把风格差值加到基础描述上。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_base | conditioning_base | CONDITIONING类型 | - | 基础描述信息 | 基础条件编码向量 | 连接原始的文本编码 |
| conditioning_delta | conditioning_delta | CONDITIONING类型 | - | 要添加的风格差值 | 风格差值的条件编码 | 连接ConDelta节点输出 |
| conditioning_delta_strength | conditioning_delta_strength | 浮点数 | 1.0 | 风格差值的应用强度 | 风格差值的强度系数 | 1.0表示100%强度 |
3.17 ConditioningAddConDeltaAutoScale 节点
这个节点就像一个"智能风格混合器",会自动调整风格差值的强度。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_base | conditioning_base | CONDITIONING类型 | - | 基础描述信息 | 基础条件编码向量 | 连接原始的文本编码 |
| conditioning_delta | conditioning_delta | CONDITIONING类型 | - | 要添加的风格差值 | 风格差值的条件编码 | 连接ConDelta节点输出 |
| ratio_type | ratio_type | 选择列表 | median | 自动调整的计算方式 | 比例计算的统计方法 | median最稳定 |
| conditioning_delta_strength | conditioning_delta_strength | 浮点数 | 1.0 | 基础强度 | 风格差值的基础强度系数 | 在自动调整基础上的倍数 |
| clamp | clamp | 布尔值 | False | 是否限制数值范围 | 是否对数值进行截断 | True表示限制 |
| clamp_value | clamp_value | 浮点数 | 3.0 | 限制的最大数值 | 截断的阈值 | 超过此值的会被截断 |
3.18 ConditioningAverageMultiple 节点
这个节点就像一个"多重平均器",能把最多10个描述信息平均混合。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning0 | conditioning0 | CONDITIONING类型 | - | 第1个描述信息(必需) | 第一个条件编码向量 | 连接第一个conditioning输出 |
| conditioning1 | conditioning1 | CONDITIONING类型 | 可选 | 第2个描述信息(可选) | 第二个条件编码向量 | 连接第二个conditioning输出 |
| conditioning2 | conditioning2 | CONDITIONING类型 | 可选 | 第3个描述信息(可选) | 第三个条件编码向量 | 连接第三个conditioning输出 |
| conditioning3 | conditioning3 | CONDITIONING类型 | 可选 | 第4个描述信息(可选) | 第四个条件编码向量 | 连接第四个conditioning输出 |
| conditioning4 | conditioning4 | CONDITIONING类型 | 可选 | 第5个描述信息(可选) | 第五个条件编码向量 | 连接第五个conditioning输出 |
| conditioning5 | conditioning5 | CONDITIONING类型 | 可选 | 第6个描述信息(可选) | 第六个条件编码向量 | 连接第六个conditioning输出 |
| conditioning6 | conditioning6 | CONDITIONING类型 | 可选 | 第7个描述信息(可选) | 第七个条件编码向量 | 连接第七个conditioning输出 |
| conditioning7 | conditioning7 | CONDITIONING类型 | 可选 | 第8个描述信息(可选) | 第八个条件编码向量 | 连接第八个conditioning输出 |
| conditioning8 | conditioning8 | CONDITIONING类型 | 可选 | 第9个描述信息(可选) | 第九个条件编码向量 | 连接第九个conditioning输出 |
| conditioning9 | conditioning9 | CONDITIONING类型 | 可选 | 第10个描述信息(可选) | 第十个条件编码向量 | 连接第十个conditioning输出 |
3.19 ExtendedConditioningAverage 节点
这个节点就像一个"增强版混合器",能更灵活地混合两个描述信息。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning_to | conditioning_to | CONDITIONING类型 | - | 主要的描述信息 | 目标条件编码向量 | 连接主要的文本编码 |
| conditioning_from | conditioning_from | CONDITIONING类型 | - | 要混合进来的描述信息 | 源条件编码向量 | 连接要混合的文本编码 |
| conditioning_to_strength | conditioning_to_strength | 浮点数 | 1.0 | 主要描述的权重 | 目标条件的权重系数 | 1.0表示100%,0.5表示50% |
4. 使用技巧和建议
4.1 创建风格差值的最佳实践
- 选择对比明显的描述:比如"油画风格的猫"和"猫",差异越明显效果越好
- 使用简洁的风格描述:避免太复杂的描述,专注于单一风格特征
- 测试不同强度:从0.3开始测试,逐步调整到1.5找到最佳效果
4.2 应用风格差值的技巧
- AutoScale版本更稳定:对于不同类型的图片,AutoScale版本能自动调整强度
- 组合多个风格:可以同时应用多个ConDelta文件创造独特效果
- 负数强度的妙用:使用负数强度可以"去除"某种风格
4.3 文件管理建议
- 有意义的文件名:使用描述性的文件名,如"cyberpunk_style"、"watercolor_effect"
- 分类存储:为不同类型的风格创建子文件夹
- 备份重要文件:好用的ConDelta文件要及时备份
5. 常见问题解答
Q1:ConDelta文件和LoRA有什么区别?
A: ConDelta文件更小、加载更快,但只影响文本编码部分,不会改变模型权重。LoRA会修改整个模型,影响更全面但文件更大。
Q2:为什么我的ConDelta效果不明显?
A: 可能原因:
- 强度设置太低,试试调高到1.5-2.0
- 原始描述对比不够明显
- 使用AutoScale版本可能效果更好
Q3:可以在一个工作流中使用多个ConDelta吗?
A: 可以!你可以串联多个ApplyConDelta节点,或者使用ConditioningAverageMultiple节点混合多个效果。
Q4:ConDelta文件可以在不同模型间通用吗?
A: 部分通用。同系列模型(如SDXL系列)间通常可以通用,但Flux和SDXL之间不能通用。
Q5:如何判断ConDelta的质量?
A: 好的ConDelta应该:
- 在不同描述上都能产生一致的风格效果
- 强度在0.5-1.5范围内效果明显
- 不会产生奇怪的伪影或扭曲
6. 实用工作流示例
6.1 创建风格差值的基础工作流
- 加载模型和CLIP
- 创建两个CLIP文本编码节点
- 一个输入"油画风格的风景",另一个输入"风景"
- 连接到ConditioningSubtract节点
- 连接到SaveConditioningDelta节点保存
6.2 应用风格差值的工作流
- 加载模型和CLIP
- 创建CLIP文本编码节点,输入你的基础描述
- 添加ApplyConDelta节点
- 选择之前保存的ConDelta文件
- 调整强度参数
- 连接到采样器生成图片
6.3 多风格混合工作流
- 使用多个ApplyConDelta节点串联
- 或者使用ConditioningAverageMultiple节点
- 每个风格使用不同的强度
- 最终连接到采样器
7. 总结
ComfyUI-ConDelta插件是一个功能强大且易用的风格控制工具。通过19个不同功能的节点,你可以:
- 提取和保存任何风格特征
- 灵活应用风格到新的描述
- 混合多种风格创造独特效果
- 精确控制风格的强度和表现
掌握这个插件,你就能在ComfyUI中实现更精确、更灵活的风格控制,让你的AI绘画作品更加出色!
所有节点都已详细解析完毕,你现在可以开始使用这个强大的插件了!