ERNIE-Image ControlNet 实战指南:用 Canny、Depth、Pose 精准控制画面构图

مايو ١٠، ٢٠٢٦

ERNIE-Image ControlNet 实战指南:用 Canny、Depth、Pose 精准控制画面构图

发布日期:2026-05-10
关键词:ernie-image controlnet、ernie-image canny、ernie-image depth、ernie-image pose、ComfyUI controlnet


引言

ERNIE-Image 的文字渲染和结构化布局能力已经让它在开源文生图领域脱颖而出。但对于专业创作者来说,还有一个核心需求:精准控制画面构图

ControlNet 正是为此而生——它让你通过边缘图、深度图或姿态图来引导 AI 生成,保持构图结构的同时自由变换风格。然而,截至 2026 年 5 月,ERNIE-Image 的 ControlNet 支持仍处于社区发展阶段,缺乏官方文档。

本文将填补这一空白,手把手教你在 ComfyUI 中搭建 ERNIE-Image 的 ControlNet 工作流,覆盖 Canny(边缘)、Depth(深度)、Pose(姿态)三种核心模式,并提供参数调优和故障排查指南。


一、ControlNet 是什么?为什么你需要它?

1.1 核心概念

ControlNet 由斯坦福大学 researchers 提出,核心思想是在扩散模型中注入结构性先验

  1. 输入:一张参考图像(草图、照片、线稿等)
  2. 预处理:提取结构信息(边缘、深度、姿态)
  3. 引导:在扩散过程中保持结构约束
  4. 输出:符合结构约束的 AI 生成图像

1.2 三种核心模式

模式 输入 控制什么 典型场景
Canny Canny 边缘图 轮廓、线条、结构边界 线稿上色、草图渲染、建筑还原
Depth 深度图 空间布局、远近关系 场景重构、风格迁移保持构图
Pose 姿态图(骨架) 人物姿势、关节位置 人物姿势控制、角色重绘

二、ComfyUI 工作流搭建

2.1 环境准备

# 安装 ComfyUI
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt

下载 ERNIE-Image 模型

从 HuggingFace baidu/ERNIE-Image 下载 diffusion_model.safetensors

放到 ComfyUI/models/diffusion_models/

下载 VAE

从 HuggingFace 下载 VAE 文件

放到 ComfyUI/models/vae/

下载 ControlNet 模型

推荐 DiffSynth ControlNet Patch 或 InstantX ControlNet Union

放到 ComfyUI/models/controlnet/

2.2 核心节点连接

一个标准的 ERNIE-Image ControlNet 工作流包含以下节点链:

[Checkpoint Loader] → [CLIP Text Encode (Positive)]
                     → [CLIP Text Encode (Negative)]
                     → [ControlNet Loader] ← [Load Image (控制图)]
                     → [ControlNet Apply (DiT)]
                     → [KSampler] → [VAE Decode] → [Save Image]

各节点配置说明

节点 关键参数 推荐值
Checkpoint Loader model_name baidu_ERNIE-Image
ControlNet Loader control_net_name ernie_image_canny / ernie_image_depth / ernie_image_pose
ControlNet Apply (DiT) strength 0.3 ~ 0.8(根据模式调整)
KSampler steps 50(Standard)/ 8(Turbo)
KSampler cfg 4.0 ~ 7.0
KSampler denoise 0.7 ~ 1.0

2.3 Canny 模式:线稿上色与草图渲染

使用场景:你有草图或线稿,想让 ERNIE-Image 将其转化为精美的渲染图。

工作流步骤

  1. 加载原始线稿/草图到 Load Image 节点
  2. 连接 Canny Edge Preprocessor 节点(低阈值 50,高阈值 200)
  3. 连接 ControlNet Loader 加载 Canny ControlNet 模型
  4. 连接 ControlNet Apply (DiT) 节点
  5. 编写 prompt 描述你想要的最终效果
  6. 执行 KSampler

推荐 Prompt

# 建筑线稿 → 照片级渲染
"A photorealistic rendering of a modern glass skyscraper at sunset, 
golden hour lighting, reflections on glass facade, urban environment, 
architectural photography, 8K quality"

动漫线稿 → 上色

"Colorful anime style character illustration, vibrant colors,
detailed shading, cel-shaded, studio-quality anime art"

Strength 调优

  • 0.3~0.5:保持大致轮廓,AI 有较大创作空间
  • 0.5~0.7:紧密跟随线稿结构
  • 0.7~0.8:严格跟随,但可能限制 AI 创造力

2.4 Depth 模式:场景重构与风格迁移

使用场景:你想保持原始照片的空间布局,但改变整体风格。

工作流步骤

  1. 加载原始照片到 Load Image 节点
  2. 连接 Depth Anything PreprocessorZoe Depth Preprocessor
  3. 连接 ControlNet Loader 加载 Depth ControlNet 模型
  4. 编写 prompt 描述目标风格
  5. 执行 KSampler

推荐 Prompt

# 照片 → 油画风格
"Oil painting of a mountain landscape, Van Gogh style, 
thick brushstrokes, vibrant colors, dramatic sky, 
Impressionist masterpiece"

室内照片 → 赛博朋克风格

"Cyberpunk interior scene, neon lights, rain-streaked windows,
holographic displays, dark atmosphere, futuristic city view,
blade runner style"

Strength 调优

  • 0.4~0.6:保持空间布局,允许风格大幅变化
  • 0.6~0.8:紧密跟随原始构图

2.5 Pose 模式:人物姿势控制

使用场景:你需要精确控制人物姿势,如角色重绘、姿势替换。

工作流步骤

  1. 加载参考人物照片到 Load Image 节点
  2. 连接 OpenPose Preprocessor 节点
  3. 连接 ControlNet Loader 加载 Pose ControlNet 模型
  4. 编写 prompt 描述目标人物/风格
  5. 执行 KSampler

推荐 Prompt

# 姿势替换(换服装/风格)
"A female warrior in elaborate fantasy armor, 
dynamic battle pose, fantasy art style, 
detailed metallic textures, dramatic lighting, 
epic composition"

角色设计

"A cyberpunk street samurai, neon-lit rain-soaked alley,
detailed futuristic clothing, katana at side,
cinematic composition, movie poster style"

Strength 调优

  • 0.3~0.5:大致跟随姿势,AI 可调整细节
  • 0.5~0.7:精确跟随关节位置

三、多 ControlNet 叠加

进阶玩法:同时使用多个 ControlNet 模式,实现更精细的控制。

3.1 Canny + Depth 组合

场景:既保持边缘结构,又控制空间深度。

[Load Image] → [Canny Preprocessor] → [ControlNet Apply (Canny)]
[Load Image] → [Depth Preprocessor] → [ControlNet Apply (Depth)]
                                                     ↓
                                            [ControlNet Merge] → [KSampler]

参数建议

  • Canny strength: 0.4
  • Depth strength: 0.5

3.2 Pose + Canny 组合

场景:精确控制人物姿势和服装轮廓。

[Load Image (姿势参考)] → [OpenPose Preprocessor] → [ControlNet Apply (Pose)]
[Load Image (线稿)] → [Canny Preprocessor] → [ControlNet Apply (Canny)]
                                                                  ↓
                                                         [ControlNet Merge] → [KSampler]

四、常见问题排查

Q1: ControlNet 效果不明显

原因:strength 参数太低或 ControlNet 模型与基础模型不兼容。
解决

  • 逐步增加 strength(从 0.3 到 0.8 测试)
  • 确认 ControlNet 模型是为 ERNIE-Image 架构设计的
  • 尝试 DiffSynth ControlNet Patch 而非 InstantX Union

Q2: 生成图像出现伪影或扭曲

原因:strength 过高或控制图质量差。
解决

  • 降低 strength 到 0.5 以下
  • 使用高质量的控制图(清晰、高分辨率)
  • 增加 CFG 值到 6.0~7.0

Q3: 文字渲染在 ControlNet 下失效

原因:ControlNet 的结构约束与文字渲染存在竞争。
解决

  • 使用较低 strength(0.3~0.4)
  • 在 prompt 中用引号明确标注文字内容
  • 考虑先生成无文字的 ControlNet 图像,再用 inpainting 添加文字

Q4: 显存不足

原因:ControlNet 模型 + 基础模型同时加载,显存需求翻倍。
解决

  • 使用 INT8 量化的 ERNIE-Image 模型(~10GB VRAM)
  • 使用 NVFP4 量化(~5GB VRAM)
  • 关闭 PE(Prompt Enhancer)以节省显存

五、最佳实践总结

  1. 从低 strength 开始:先设 0.3,逐步增加直到效果满意
  2. 控制图质量至关重要:清晰的边缘/深度/姿态图产生更好的结果
  3. 多模式组合是进阶技巧:Canny+Depth 或 Pose+Canny 组合可实现精细控制
  4. Turbo 模式兼容性:ControlNet 在 Turbo(8 步)模式下效果略有下降,建议 Standard(50 步)
  5. 文字与 ControlNet 分开:如需文字渲染,先用 ControlNet 生成基础构图,再用 inpainting 添加文字

本文基于 ComfyUI 社区实践和 ERNIE-Image DiT 架构特性编写。ControlNet 生态仍在快速发展中,建议定期关注 HuggingFace 和 ComfyUI 社区的最新模型更新。

ERNIE-Image Team

ERNIE-Image ControlNet 实战指南:用 Canny、Depth、Pose 精准控制画面构图 | Blog