Back to notes
教程AI工具

ComfyUI ControlNet 控图排错

记录 OpenPose 预处理失效、ControlNet 权重读取和节点参数配置中的几个高频问题。

ControlNet“不听话”时,问题通常不在提示词,而在预处理器、模型与工作流参数没有对应上。下面保留的是 2024 年工作流中的排错经验;节点实现更新很快,修改插件源码前应先核对当前版本的 issue 和说明。

先检查这一条链路

  1. 预处理器是否真的输出了骨架、深度或边缘图;
  2. ControlNet 模型是否与控制类型匹配;
  3. 模型体系是否一致,例如 SD 1.5、SDXL 不要混用;
  4. 控制图尺寸和生成尺寸的长宽比是否接近;
  5. strength、开始步和结束步是否给了模型足够的作用区间;
  6. 节点是否正确接入正向和负向条件。

先单独预览预处理器输出,再接入采样流程。这样可以快速区分“控制图没有生成”和“控制权重没有生效”。

OpenPose 线条过细或近似空白

旧版 comfyui_controlnet_aux 曾在高分辨率画布上出现骨架线条过细的问题。相关讨论:

当时的解决思路是根据画布尺寸放大骨架圆点和肢体线宽。它属于特定版本的兼容补丁,不适合长期直接改写插件源码。更稳妥的顺序是:

  1. 更新 ComfyUI、辅助预处理插件和 ControlNet 节点;
  2. 确认预处理器分辨率;
  3. 对比插件仓库中当前的绘制实现;
  4. 仍能稳定复现时,再用最小补丁验证并向上游反馈。

[!WARNING] 直接修改 custom_nodes 中的源码会在插件升级时被覆盖。请记录修改位置,或把补丁维护在自己的分支中。

权重与作用区间

控制过弱时,不要只提高权重。先确认:

  • 控制图本身清晰且与目标构图一致;
  • start_percent 没有太晚;
  • end_percent 没有太早;
  • 多个 ControlNet 没有互相冲突;
  • 采样器和去噪强度没有让原始结构被完全重写。

控制过强、画面僵硬时,则可以逐步降低权重,缩短结束区间,或只让结构控制参与前半段采样。每次只改一个变量,保存对照图,比同时调整整套工作流更容易找到原因。