HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • Stable Diffusion 完整实战

    • Stable Diffusion完全教程 - AI绘画从入门到精通 (2024最新)
    • 第一章: Stable Diffusion安装部署
    • 第二章: Stable Diffusion模型详解
    • 第三章: Stable Diffusion提示词技巧
    • 第四章: Stable Diffusion参数调优
    • 第五章: ControlNet精准控制
    • 第六章: Stable Diffusion实战案例

第五章: ControlNet精准控制

ControlNet简介

什么是ControlNet

ControlNet = 给SD添加"骨架约束"的插件,让AI按照你的指引生成图片

传统SD: 文字描述 → AI随机理解 → 不可控的结果
ControlNet: 文字描述 + 参考图/线稿/姿态 → AI精确执行 → 可控的结果

核心能力:

  • 🎨 姿态控制: 让角色摆出指定姿势
  • 🖼️ 线稿上色: 把简笔画变成精美插画
  • 🏞️ 场景复刻: 保持参考图的构图和景深
  • ✏️ 边缘引导: 用涂鸦控制物体轮廓

ControlNet vs 传统img2img

对比项img2imgControlNet
控制方式模糊的"参考"精确的"骨架约束"
相似度30-70%(不稳定)90%+(极高)
适用场景风格迁移姿态/构图/线稿控制
学习难度简单中等
效果随机性大精确可控

举例:

需求: 让女孩做"OK"手势
img2img: 提示词写"ok gesture",但手势随机,可能错误
ControlNet: 上传OK手势骨骼图,100%还原手势 

ControlNet安装

插件安装

方法1: WebUI内置安装(推荐)

1. Extensions > Available
2. 点击 "Load from"
3. 搜索 "ControlNet"
4. 找到 "sd-webui-controlnet"
5. 点击 Install
6. Settings > Reload UI

方法2: 手动安装

cd stable-diffusion-webui/extensions
git clone https://github.com/Mikubill/sd-webui-controlnet.git
# 重启WebUI

模型下载

必装模型(放入 models/ControlNet/ 目录):

1. OpenPose (姿态控制,最常用):

文件名: control_v11p_sd15_openpose.pth
大小: 1.45GB
下载: HuggingFace > lllyasviel/ControlNet-v1-1
用途: 人物姿态、骨骼控制

2. Canny (边缘检测):

文件名: control_v11p_sd15_canny.pth
大小: 1.45GB
用途: 保持物体轮廓、建筑线条

3. Depth (深度图):

文件名: control_v11f1p_sd15_depth.pth
大小: 1.45GB
用途: 场景构图、景深控制

4. Lineart (线稿提取):

文件名: control_v11p_sd15_lineart.pth
大小: 1.45GB
用途: 线稿上色、插画创作

5. Scribble (涂鸦):

文件名: control_v11p_sd15_scribble.pth
大小: 1.45GB
用途: 手绘草图控制

下载站点:

  • HuggingFace: https://huggingface.co/lllyasviel/ControlNet-v1-1
  • 国内镜像: https://hf-mirror.com

快速下载(推荐新手先装这3个):

  1. OpenPose (姿态,必装)
  2. Canny (边缘,必装)
  3. Depth (深度,推荐)

验证安装

1. 刷新WebUI
2. txt2img页面下方出现 "ControlNet" 折叠面板
3. 展开后看到 "Enable" 复选框
4. Preprocessor下拉菜单有 "openpose", "canny" 等选项
5. Model下拉菜单显示已下载的.pth文件

安装成功 

ControlNet界面详解

主界面布局

ControlNet面板:
┌──────────────────────────────────────┐
│ ☑ Enable (启用)                       │
│ ☐ Low VRAM (低显存模式)                │
│ ☐ Pixel Perfect (像素完美)             │
├──────────────────────────────────────┤
│ 📷 [上传图片区域]                      │
│    拖入参考图/姿态图/线稿               │
├──────────────────────────────────────┤
│ Control Type: [All ]                │  ← 控制类型
│ Preprocessor: [openpose_full ]     │  ← 预处理器
│ Model: [control_openpose ]         │  ← 模型选择
├──────────────────────────────────────┤
│ Control Weight: [1.0]                │  ← 控制强度
│ Starting Step: [0.0]                 │  ← 起始步数
│ Ending Step: [1.0]                   │  ← 结束步数
├──────────────────────────────────────┤
│ Control Mode: [Balanced ]          │  ← 控制模式
└──────────────────────────────────────┘

核心参数解释

Enable (启用):

勾选后ControlNet才生效
可同时启用多个ControlNet(最多3个)

Preprocessor (预处理器):

作用: 从参考图提取骨架/边缘/深度信息
openpose_full: 提取完整人体骨骼(含手指、面部)
canny: 提取边缘线条
depth_midas: 提取深度信息
none: 不预处理,直接用上传的图(如已有骨骼图)

Model (模型):

对应Preprocessor选择相应模型:
openpose → control_openpose.pth
canny → control_canny.pth
depth → control_depth.pth

Control Weight (控制强度):

0.5: 轻度参考,AI有较大自由度
1.0: 标准强度,推荐 
1.5: 强力约束,严格遵循
2.0: 极度约束,可能僵硬

Control Mode (控制模式):

Balanced: 平衡提示词和ControlNet  推荐
My prompt is more important: 优先提示词
ControlNet is more important: 优先骨架约束

OpenPose姿态控制

OpenPose基础用法

场景: 让角色摆出指定姿势

步骤:

1. 找参考姿态图(如舞蹈动作照片)
2. ControlNet面板:
   - Enable: 
   - 上传姿态图
   - Preprocessor: openpose_full
   - Model: control_openpose
   - Weight: 1.0

3. 主提示词:
   Prompt: 1girl, school uniform, smile, outdoor
   Negative: bad hands, extra fingers

4. Generate

效果: AI生成的女孩会完全还原参考图的姿势,但外貌、服装、背景按提示词来。

OpenPose变体

1. openpose (仅身体):

Preprocessor: openpose
提取: 身体骨骼(不含手指、面部)
速度: 快
适合: 全身动作、不需要细节手部

2. openpose_full (完整,推荐):

Preprocessor: openpose_full
提取: 身体+手指+面部朝向
速度: 中等
适合: 需要精确手势、表情方向 

3. openpose_hand (仅手部):

Preprocessor: openpose_hand
提取: 手部骨骼(超精细)
适合: 特写手部动作

4. openpose_face (仅面部):

Preprocessor: openpose_face
提取: 面部关键点
适合: 表情控制

OpenPose实战案例

案例1: 复刻舞蹈动作

参考图: 芭蕾舞者单腿站立照片

ControlNet设置:
- Preprocessor: openpose_full
- Model: control_openpose
- Weight: 1.2 (稍微强化)

Prompt:
1girl, pink ballet dress, ballet shoes,
professional photography, stage lighting,
graceful, elegant, 8k uhd

生成结果: 不同女孩,但完美复刻芭蕾姿态
用时: 15秒

案例2: 多人合影姿态

参考图: 3个朋友合照

ControlNet:
- Preprocessor: openpose
- Weight: 1.0

Prompt:
3girls, casual wear, park background,
smiling, friendship, natural lighting

效果: 保持3人相对位置和姿态,但换成不同角色

案例3: 精确手势(OK手势)

参考图: 手做OK手势特写

ControlNet:
- Preprocessor: openpose_hand
- Weight: 1.3

Prompt:
1girl, making ok gesture, smile,
looking at viewer, close-up hand,
sharp focus on hand

效果: 手势100%正确,解决SD常见的"手残"问题 

OpenPose骨骼图编辑

使用OpenPose Editor插件:

安装: Extensions > Available > 搜索 "OpenPose Editor"

功能:
- 在浏览器中直接绘制骨骼
- 拖动关节点调整姿态
- 不需要参考图,自己设计姿势

用法:
1. ControlNet面板点击 "Edit"
2. 出现骨骼人模型
3. 拖动关节点(肩、肘、膝盖等)
4. 设计完毕点 "Send to ControlNet"
5. Preprocessor选 "none"(已有骨骼图)
6. Generate

Canny边缘控制

Canny原理

Canny = 提取图像边缘线条,保持物体轮廓

适用场景:
- 建筑物线条控制
- 物体轮廓保持
- 构图复刻
- 简笔画上色

Canny基础用法

场景: 保持建筑物的结构线条

参考图: 一张房屋照片

ControlNet:
- Preprocessor: canny
- Model: control_canny
- Weight: 1.0
- Canny Low Threshold: 100 (边缘敏感度下限)
- Canny High Threshold: 200 (边缘敏感度上限)

Prompt:
modern architecture, sunset lighting,
professional photography, vibrant colors

效果: 保持房屋轮廓和结构,但材质、光线、风格按提示词变化

Canny阈值调节

Low/High Threshold 含义:

Low: 100, High: 200 (标准)
- 提取主要轮廓,忽略细节  推荐

Low: 50, High: 150 (低阈值)
- 提取更多细节边缘
- 适合: 精细线稿

Low: 150, High: 250 (高阈值)
- 只提取主要轮廓
- 适合: 简化构图

调节技巧:

1. 先用默认值(100/200)生成一次
2. 在ControlNet预览窗口查看提取的边缘图
3. 边缘太多太细 → 提高阈值
4. 边缘太少太粗 → 降低阈值

Canny实战案例

案例1: 建筑风格迁移

参考图: 欧式城堡照片

ControlNet:
- Preprocessor: canny
- Threshold: 100/200

Prompt:
(cyberpunk:1.3), neon lights, futuristic architecture,
night scene, holographic signs

效果: 城堡轮廓不变,变成赛博朋克风格
应用: 建筑设计方案探索

案例2: 简笔画上色

参考图: 手绘女孩线稿(黑白)

ControlNet:
- Preprocessor: canny 或 lineart
- Weight: 1.0

Prompt:
1girl, colorful illustration, anime style,
vibrant colors, detailed shading

效果: 线稿变成彩色精美插画
用时: 12秒

案例3: 照片转插画(保持构图)

参考图: 街道照片

ControlNet:
- Preprocessor: canny
- Weight: 0.8 (稍微宽松,保留艺术自由)

Prompt:
watercolor painting, artistic, impressionism,
soft brush strokes, pastel colors

效果: 照片构图不变,变成水彩画风格

Depth深度控制

Depth原理

Depth = 提取图像的前后景深信息,保持空间层次

深度图: 白色=近景,黑色=远景,灰色=中景

适用场景:
- 场景构图复刻
- 室内设计
- 风景层次保持
- 人物与背景关系

Depth预处理器选择

1. depth_midas (通用,推荐):

Preprocessor: depth_midas
精度: 高
速度: 快
适合: 大部分场景 

2. depth_leres (超精细):

Preprocessor: depth_leres
精度: 极高(细节最好)
速度: 慢
适合: 复杂场景、多层次景深

3. depth_zoe (新算法):

Preprocessor: depth_zoe
精度: 高
速度: 中等
适合: 人物+场景组合

Depth实战案例

案例1: 室内设计方案

参考图: 现代客厅照片

ControlNet:
- Preprocessor: depth_midas
- Model: control_depth
- Weight: 1.0

Prompt:
luxury interior design, chinese style,
wooden furniture, warm lighting,
4k architectural photography

效果: 保持房间空间布局,家具位置,但风格变成中式
应用: 室内设计风格探索

案例2: 风景构图复刻

参考图: 山脉+湖泊+前景树木

ControlNet:
- Preprocessor: depth_leres (多层次)
- Weight: 0.9

Prompt:
fantasy landscape, magical forest,
glowing plants, aurora sky,
epic scenery, cinematic

效果: 保持山、湖、树的空间关系,变成奇幻风景

案例3: 人物景深关系

参考图: 人物在前,城市背景虚化

ControlNet:
- Preprocessor: depth_zoe
- Weight: 1.0

Prompt:
1girl, fashion photography, bokeh background,
shallow depth of field, professional

效果: 保持人物在前、背景在后的景深关系

Lineart线稿控制

Lineart vs Canny

对比LineartCanny
提取内容艺术线稿(柔和)硬边缘(锐利)
适合插画、动漫建筑、物体
风格手绘感技术图纸感

Lineart预处理器

1. lineart (标准):

Preprocessor: lineart
提取: 干净线稿
适合: 动漫角色、插画

2. lineart_anime (动漫专用):

Preprocessor: lineart_anime
提取: 动漫风格线稿
适合: 二次元创作 

3. lineart_realistic (写实):

Preprocessor: lineart_realistic
提取: 写实素描线条
适合: 写实素描上色

Lineart实战案例

案例1: 草稿变插画

参考图: 铅笔手绘草稿

ControlNet:
- Preprocessor: lineart_anime
- Model: control_lineart
- Weight: 1.1

Prompt:
1girl, anime style, colorful illustration,
cel shading, vibrant colors, detailed eyes

Checkpoint: Anything V5

效果: 草稿变成精美动漫插画
用时: 15秒

案例2: 照片转线稿再上色

参考图: 人物照片

Step 1: 提取线稿
- Preprocessor: lineart_realistic
- 保存提取的线稿图

Step 2: 用线稿生成
- 上传保存的线稿
- Preprocessor: none (已是线稿)
- Prompt: oil painting, classical art, detailed shading

效果: 照片→素描线稿→油画风格

Scribble涂鸦控制

Scribble用法

Scribble = 手绘涂鸦草图控制生成

适用场景:
- 快速草图创意
- 不需要精确线稿
- 3分钟从想法到成图

步骤:

1. 在画图软件(如Windows画图)随便画草图
2. 上传到ControlNet
3. Preprocessor: scribble_hed 或 scribble_pidinet
4. Prompt描述想要的效果
5. Generate

效果: 草图变精美作品

Scribble案例

案例: 5分钟从涂鸦到插画

1. 画图软件画草图(3分钟):
   - 圆圈(头)+ 线条(身体)+ 三角(裙子)
   - 背景画几条横线(天空地面)

2. ControlNet:
   - Preprocessor: scribble_pidinet
   - Weight: 0.9

3. Prompt:
   1girl, beautiful, long dress, standing in field,
   sunset, wind, anime style, detailed

4. Generate

效果: 粗糙涂鸦变成精美风中少女插画
适合: 快速可视化创意想法

多ControlNet组合

同时使用多个ControlNet

WebUI支持: 最多同时启用3个ControlNet

常见组合:

组合1: OpenPose + Canny (姿态+轮廓)

ControlNet 0:
- Type: OpenPose
- 参考图: 人物姿态
- Weight: 1.0

ControlNet 1:
- Type: Canny
- 参考图: 服装轮廓
- Weight: 0.8

效果: 精确控制姿态+服装细节

组合2: Depth + Canny (景深+线条)

ControlNet 0:
- Type: Depth
- 参考图: 场景深度
- Weight: 1.0

ControlNet 1:
- Type: Canny
- 参考图: 建筑线条
- Weight: 0.9

效果: 保持空间层次和建筑结构
用途: 建筑渲染、室内设计

组合3: OpenPose + Depth (人物姿态+场景深度)

ControlNet 0:
- Type: OpenPose
- Weight: 1.2

ControlNet 1:
- Type: Depth
- Weight: 0.7

效果: 人物姿态精确,场景层次自然
用途: 人物+环境合成

多ControlNet权重平衡

权重分配原则:

主控制: Weight 1.0-1.2 (如姿态)
辅助控制: Weight 0.6-0.8 (如背景深度)
微调控制: Weight 0.3-0.5 (如光影)

总和建议不超过2.5,否则过度约束

ControlNet高级技巧

技巧1: 分阶段控制

Starting/Ending Step:

起始步: 0.0 (从第0步开始)
结束步: 1.0 (到最后一步)

技巧: 调整控制的时间段
- 0.0 - 0.5: 仅前半段控制(构图),后半段自由发挥(细节)
- 0.3 - 1.0: 前期自由,中后期控制(保持创意+修正错误)

应用: 平衡控制和创造力

案例:

需求: 保持姿态,但允许AI自由创作细节

ControlNet:
- OpenPose
- Weight: 1.0
- Starting: 0.0
- Ending: 0.6 (前60%步数控制,后40%自由)

效果: 姿态正确,但服装、发型、背景更有创意

技巧2: 参考图预处理

手动调整预处理结果:

1. ControlNet面板启用 "Allow Preview"
2. 上传图后,点击 "💥" 预处理
3. 查看提取的骨骼/边缘图
4. 右键保存
5. 在PS/SAI中编辑(如删除多余线条)
6. 重新上传编辑后的图
7. Preprocessor选 "none"
8. Generate

用途: 精细调整控制信息

技巧3: 低权重叠加

创意探索模式:

ControlNet Weight: 0.3-0.5 (低权重)

效果: 轻度参考,AI有较大自由度
适合: 在保持大致构图下探索不同风格

vs

高权重(1.0+): 严格执行,适合精确复刻

技巧4: Pixel Perfect模式

Pixel Perfect (像素完美):

勾选后: 自动匹配参考图和生成图分辨率
作用: 避免缩放导致的变形
推荐: 始终开启 

技巧5: ControlNet + img2img

组合使用:

1. img2img标签页
2. 上传参考图
3. Denoising: 0.5-0.7
4. 启用ControlNet (OpenPose/Depth)
5. Generate

效果: 既参考原图颜色,又控制骨架/深度
用途: 风格迁移+结构保持

ControlNet模型推荐优先级

新手必装(前3个)

1.  OpenPose
   用途: 姿态控制,使用频率最高
   必装理由: 解决手部、姿态问题

2.  Canny
   用途: 轮廓控制,通用性强
   必装理由: 简笔画上色、构图复刻

3.  Depth
   用途: 景深控制
   必装理由: 场景创作必备

进阶选装

4.  Lineart
   用途: 线稿上色(插画向)
   适合: 经常画插画的用户

5.  Scribble
   用途: 涂鸦草图
   适合: 快速创意可视化

6.  Tile (图片高清放大)
   用途: 配合Hires.fix超级放大
   适合: 需要生成4K+图片

7.  Shuffle (色彩迁移)
   用途: 保持颜色,改变内容
   适合: 特殊创作需求

特殊用途

8. Seg (语义分割)
   用途: 精确控制每个区域内容
   难度: 高,需手动绘制分割图

9. Normal (法线贴图)
   用途: 3D建模、材质设计
   适合: 游戏美术、3D设计师

10. IP-Adapter (人物一致性)
    用途: 保持角色外貌一致
    难度: 高,需额外配置

常见问题

问题1: ControlNet不生效

排查:

1. 是否勾选 "Enable"
2. 是否上传了参考图
3. Preprocessor和Model是否匹配
4. Weight是否为0
5. 检查模型文件是否在正确目录

问题2: 生成速度变慢

原因: ControlNet增加计算量

优化:

1. 勾选 "Low VRAM" (低显存模式)
2. 减少同时启用的ControlNet数量
3. 降低参考图分辨率到512x512
4. 使用轻量化Preprocessor

问题3: 控制过度,画面僵硬

解决:

1. 降低Weight: 1.0 → 0.7
2. 调整Ending Step: 1.0 → 0.7
3. Control Mode: ControlNet is more important → Balanced

问题4: 控制不足,没效果

解决:

1. 提高Weight: 1.0 → 1.3
2. 检查Preprocessor是否正确提取(查看预览)
3. Control Mode: My prompt is more important → Balanced
4. 提示词是否与控制冲突(如OpenPose站立,提示词写sitting)

ControlNet实战项目

项目1: 动漫角色设计稿(30分钟)

需求: 从草图到成品角色设定

流程:

Step 1: 画草图(10分钟)
- 画图软件绘制角色草图
- 标注姿态、服装

Step 2: 线稿提取(5分钟)
- ControlNet: lineart_anime
- 生成干净线稿

Step 3: 上色版本(10分钟)
- 用生成的线稿
- Preprocessor: none
- Prompt: 详细描述配色、风格
- 批量生成5个配色方案

Step 4: 精修(5分钟)
- 选最佳,Hires.fix放大
- 微调提示词权重

产出: 高质量角色设定图×5

项目2: 建筑设计方案对比(20分钟)

需求: 同一建筑的多种风格方案

流程:

Step 1: 准备建筑照片
- 现代办公楼照片

Step 2: 提取结构
- ControlNet: Canny + Depth
- Canny Weight: 1.0 (保持线条)
- Depth Weight: 0.7 (保持空间)

Step 3: 批量生成风格
- Prompt 1: classical european architecture
- Prompt 2: futuristic cyberpunk building
- Prompt 3: traditional chinese architecture
- Prompt 4: eco-friendly green building
- Batch Count: 4

产出: 4种风格建筑方案,构图一致
用途: 设计提案、客户演示

项目3: 照片转多风格插画(15分钟)

流程:

原图: 女孩照片

ControlNet组合:
- OpenPose: 提取姿态
- Canny (Weight 0.5): 轻度参考轮廓

批量Prompt:
1. watercolor painting, soft pastel colors
2. oil painting, classical portrait, renaissance
3. anime style, cell shading, vibrant colors
4. pixel art, 16bit retro game style
5. vector illustration, flat design, minimalist

产出: 5种风格插画,姿态一致
用时: 每张12秒,共1分钟
Prev
第四章: Stable Diffusion参数调优
Next
第六章: Stable Diffusion实战案例