NTE-011经验笔记CLASS · PUBLIC
升级图像工作流:保留能力,不搬回整包依赖
同一份 Krea2 请求只改了负面条件这一个节点,出图就从满屏彩色噪点变回正常画面。本文从这组对照讲起:我在自己的 ComfyUI 上怎么接 Krea2、Anima 和 Qwen-Image 2.1,普通图生图、遮罩重绘、指令编辑各走哪条路,社区整包里的好思路怎么用原生节点重搭。文中附模型和工作流的获取入口,本例的 API 工作流也可以下载。
- DATE
- 2026.10.23
- UPDATED
- 2026.10.23
- READ
- 6 MIN
- LENGTH
- 2,308 字
CONTENTS · 目录(6)
先看一组对照。两张图来自同一份 Krea2 Raw 文生图请求:1024×1024,seed 42,52 步,CFG 3.5,采样器 Euler,调度器 simple。两次请求的差别只有一个节点,就是负面条件。
实际输出 · 修改前:负面条件接的是 ConditioningZeroOut 节点。天文台、旅人和橙色机器人的场景整个被彩色噪点盖住。
实际输出 · 修改后:负面条件换成 CLIPTextEncode,文本留空。其余节点和参数都与上图相同,同一个场景清晰出图。
两张图用的是同一个模型、同一份权重,所以这不是新旧模型谁更好的比较。它说明的只有一点:在这组参数下,负面条件怎么接,直接决定了图能不能用。CFG 3.5 是我这次在 ComfyUI 上实测用的值,不是通用推荐,换个模型或者换个 CFG,都得自己重新看结果。
我从中得到的教训是:别人的工作流可以借来用,但不能只把模型名一换,就当成一个新预设。条件怎么接、采样怎么设,都要跟着模型重新检查一遍。如果你也从现成的工作流里沿用了 ConditioningZeroOut,后来又调高了 CFG,遇到类似的噪点时,可以先查这个节点。
本例工作流下载
上面修正后的请求可以直接下载:krea-raw-example-api.json。
- 这是 ComfyUI 的 API prompt 格式,供脚本或程序提交用:把内容放进请求的
prompt字段,再 POST 到 ComfyUI 的/prompt接口。它不是 UI 工作流文件,拖进界面不一定能打开。 - 文件里只有节点图和通用的模型文件名,模型要自己下载,放进 ComfyUI 的对应目录。如果文件名对不上,改加载节点里的名字就行。
- 想在界面里从头搭,建议从官方模板开始:ComfyUI 官方工作流模板库可以按模型查找。Qwen-Image 2.1 另有一篇官方教程,页面里有权重和工作流的下载。
用到的模型和工具
| 资源 | 获取入口 | 我怎么用 |
|---|---|---|
| ComfyUI | Comfy-Org/ComfyUI | 在本机 GPU 上跑,当前版本 0.39.0 |
| Krea2 | 官方代码 · ComfyUI 权重 | 文生图和图生图的主力,有 Raw 和 Turbo 两类预设 |
| Anima | 作者的模型页 | 模型卡里写了提示词的写法,值得先读一遍 |
| Qwen-Image 2.1 | ComfyUI 官方教程 | 后来加的,教程页里有权重和工作流 |
| Z-Image-Turbo | 模型页 | 只列入了候选名单,还没下载,也没跑过 |
| 官方工作流模板 | workflow_templates | 搭 UI 工作流时的起点 |
每个模型的许可不一样,有的限制商用,有的带附加条款。用之前请看模型卡上当前版本的许可,不要因为能下载、能在本地跑,就默认可以商用。
客户端负责组织,推理留在 GPU 机器
我的分工是:客户端管提示词、预设和参数,负责提交任务、取回结果;推理继续交给 GPU 机器上已经在跑的 ComfyUI。这样每台客户端都不用再放一份权重,也不用再配一套 CUDA 环境。
客户端:提示词 / 预设 / 参数 ──提交──▶ GPU 机器上的 ComfyUI
▲ │
└──── 结果 PNG + 实际参数 + 版本 ◀──取回───┘每个任务我都会留下请求本身、返回结果、PNG 里实际写入的参数,以及当时的版本。开头那组对照能说清楚,也是靠这些记录:把两份请求 JSON 放在一起 diff,就能确认确实只差一个节点,而不是凭记忆说“好像只改了这里”。
超时的处理也是同一个思路。窗口迟迟没有回音时,先拿原来的任务去查状态,不要再点一次提交。重复提交既浪费 GPU,又会让两张图的来历混在一起。
三条改图路线
想改一张已有的图,常见的有三条路。它们用到原图的方式不同,参数也没法互相照搬。
示意图 · 三条路线的数据走向,用来说明原理,不是实验结果。
普通图生图:原图经 VAE 编码成为采样起点,加噪以后重新采样,最后解码出整张图。denoise 越高,结果离原图越远,而且整张图都会重算,哪怕你只想改一个角落。
遮罩重绘:原图和遮罩一起输入,只重画遮罩里的白色区域,再按遮罩把生成结果贴回原图。基本原理可以看 ComfyUI 官方的局部重绘教程,我借用的是它讲的机制,并不拿它来证明我的流程没问题。
我加了两套遮罩流程,做法相同:生成的区域按原尺寸贴回,遮罩黑区保留 ComfyUI 读入原图后解码出的 RGB。这里的“保留”有明确的范围:保住的是解码后的像素,不是 JPEG 原文件的压缩字节,也不包括 alpha 通道和 16 位色深。为了不让错误的输入混进来,尺寸和原图对不上的遮罩、空遮罩、透明遮罩和 JPEG 遮罩,在输入阶段一律拒绝。两组样本里,遮罩外的像素差异为零。遮罩边缘画得太硬时能看到接缝,这个靠回贴解决不了,要靠遮罩本身画好。
指令编辑:原图和一句文字指令一起编码成参考条件,模型照着指令改图。我加的是一套 Qwen-Image 2.1 指令编辑流程。原图在这里是条件,不是一张等着被加噪的底图,所以低 denoise 图生图那套参数搬过来不适用,要重新调。
还有一套上色流程,可以选择把原线稿覆盖到结果上。覆线的做法是先把生成图和线稿对齐,再合成上去,所以线条看起来很干净,但模型其实已经把整张图重画了一遍。实际看下来,灰网点会变暗,对不齐的地方还会出现错位的双线。所以我会把没覆线的原始结果也留着,一张张对照着挑。
社区整包:学思路,用原生节点重搭
社区里有不少好用的整包。我的做法是按功能拆开:看懂需要的那一块,再用原生节点自己搭,不把整包装进环境。这次参考过的几处:
- Goohai 工具集:遮罩、裁剪回贴和前后对比的思路主要参考它。整包我没有装,上面两套遮罩流程是用原生节点重新搭出来的。
- T8 的 Qwen-Image 2.1 BlockCache:读过说明和代码,也评估过,但没有实际跑,所以没法告诉你它能快多少。
- RunningHub:一个云端运行和分享工作流的平台,用来看别人怎么搭很方便。我最终用的是自托管的原生流程,没有调用它的云端 API。
真要装第三方节点,我会先看几件事:会不会对输入做表达式求值,会不会读写工作目录以外的路径,安装脚本和依赖脚本到底执行了什么。这是一般性的检查习惯,不针对任何具体项目。
这次测到了哪里
- 升级到当前版本后,八个 Krea2 / Anima 预设都过了 API 调用,也检查了 UI 和 API 之间的参数往返,没有丢参数,也没有被悄悄改值。
- Anima Turbo、Krea2 Turbo、Krea2 图生图这三组用固定种子,在同一台机器上升级前后各出一张,像素一致。其余五个预设没有重新出图对照。
- 新加的四套原生流程(两套遮罩、一套指令编辑、一套上色)都做过真实采样,十二个预设都做了 UI/API 检查。
- 视频、多卡、批量出图、跨硬件的一致性,还有 T8 加速,都没有测。
比起再多装几个插件,一组固定的回归样例更让人放心:固定图、遮罩、种子和预期结果,每次升级都照着跑一遍。开头那组 Krea2 对照就很适合放进去,请求可以 diff,结果一眼就能看出对不对。

