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 提出,核心思想是在扩散模型中注入结构性先验:
- 输入:一张参考图像(草图、照片、线稿等)
- 预处理:提取结构信息(边缘、深度、姿态)
- 引导:在扩散过程中保持结构约束
- 输出:符合结构约束的 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 将其转化为精美的渲染图。
工作流步骤:
- 加载原始线稿/草图到
Load Image节点 - 连接
Canny Edge Preprocessor节点(低阈值 50,高阈值 200) - 连接
ControlNet Loader加载 Canny ControlNet 模型 - 连接
ControlNet Apply (DiT)节点 - 编写 prompt 描述你想要的最终效果
- 执行 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 模式:场景重构与风格迁移
使用场景:你想保持原始照片的空间布局,但改变整体风格。
工作流步骤:
- 加载原始照片到
Load Image节点 - 连接
Depth Anything Preprocessor或Zoe Depth Preprocessor - 连接 ControlNet Loader 加载 Depth ControlNet 模型
- 编写 prompt 描述目标风格
- 执行 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 模式:人物姿势控制
使用场景:你需要精确控制人物姿势,如角色重绘、姿势替换。
工作流步骤:
- 加载参考人物照片到
Load Image节点 - 连接
OpenPose Preprocessor节点 - 连接 ControlNet Loader 加载 Pose ControlNet 模型
- 编写 prompt 描述目标人物/风格
- 执行 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)以节省显存
五、最佳实践总结
- 从低 strength 开始:先设 0.3,逐步增加直到效果满意
- 控制图质量至关重要:清晰的边缘/深度/姿态图产生更好的结果
- 多模式组合是进阶技巧:Canny+Depth 或 Pose+Canny 组合可实现精细控制
- Turbo 模式兼容性:ControlNet 在 Turbo(8 步)模式下效果略有下降,建议 Standard(50 步)
- 文字与 ControlNet 分开:如需文字渲染,先用 ControlNet 生成基础构图,再用 inpainting 添加文字
本文基于 ComfyUI 社区实践和 ERNIE-Image DiT 架构特性编写。ControlNet 生态仍在快速发展中,建议定期关注 HuggingFace 和 ComfyUI 社区的最新模型更新。