# ComfyUI ControlNet教程

把已经符合 scribble 格式的控制图输入 ControlNet，核对模型家族与 conditioning 连接，比较受控构图。

本地结构与素材核验，未执行 ComfyUI 前端导入或扩散/ESRGAN 推理。图像与原 JSON 来源见 provenance.json。所有工作流为 UI 格式 0.4，与 prompt-api.json 分开。权重不打包。

## 使用

1. python check.py
2. 查看 models.csv，按模型出处准备文件。
3. 用本地 ComfyUI 打开 workflow.json，重新选择 Loader 下拉和输入。
4. 自己完成真实小样，填写 acceptance.csv。

## 1. 使用明确格式的控制图

下载 input.png，它来自官方 scribble 示例。控制模型要求特定图像格式；普通照片不能因为进入 Load Image 就自动变成姿态、深度或 Canny 图，本教程不宣称包含预处理器。

## 2. 准备同一家族模型

官方遗留样例使用 AnythingV3 与 SD1.5 scribble ControlNet；查看 models.csv 并选自己的兼容权重。SDXL 与 SD1.5 ControlNet 不可随意混接，仅换文件名不会适配。

## 3. 导入并检查控制路径

工作流中 ControlNetLoader 加载控制模型，Load Image 提供 scribble IMAGE；Apply ControlNet 的输出进入采样的 conditioning。教材保留官方旧 ControlNetApply 节点，当前版本可迁移到 Advanced。

## 4. 先做未控制基线

保存一份不接 ControlNet 的 checkpoint 基础工作流，用同一 seed 与提示词生成自己的 baseline。不要直接删连线后覆盖原文件，应另存并确保正向 conditioning 路径完整。

## 5. 加入控制强度做小样

按官方原值先运行控制版，再一次只调整 strength 观察效果。若使用 Advanced 节点，还需记录 start_percent/end_percent；本页素材的旧节点没有这两个字段，不凭空追加。

## 6. 按轮廓而不是颜色验收

实际结果对照控制图看主体位置、轮廓、比例和新增元素，允许纹理或颜色不同。若控制图格式错误或模型家族冲突，先修输入和权重，不靠堆叠提示词掩盖故障。

## 7. 归档控制图和实际版本

保存 input.png、工作流、ControlNet 与 checkpoint 文件版本、baseline 和控制输出。本站从官方 PNG 恢复了 UI 图并做结构核验，未执行扩散或姿态预处理。


queue_client.py 默认只查询；--submit 明确触发本地真实推理。batch_manifest.py 仅生成计划，未提交。故障日志、history 响应和空验收栏是教材，不是本站成功实测。

## 官方来源

- https://github.com/comfyanonymous/ComfyUI_examples/blob/master/controlnet/README.md
- https://github.com/Comfy-Org/ComfyUI