在使用 Stable Diffusion 进行 AI 绘画时,原版 SD 就像是天马行空的“凭空想象”,虽然创意无限,但难以精准落地。
ControlNet 作为 SD 最重要的扩展模块,它赋予了生成过程“参考线索”,充当了 AI 绘画的“方向盘”。通过 ControlNet,可以精确控制画面的结构、构图、光影甚至人物姿态,让生成结果不再是随机的惊喜,而是符合预期的作品。
本文将深入解析 ControlNet 的核心模型分类、应用场景,以及文生图与图生图的控制策略,助你掌握这一进阶神器。
ControlNet 模型命名与基础解析
在下载模型时,我们常看到如control_v11p_sd15_canny.pth 这样复杂的文件名,其含义如下:
- v11p:代表 Version 1.1 Production Ready(正式版)。
- sd15:代表适配 Stable Diffusion 1.5 版本底模。
- canny:代表该模型的具体名称/算法。
- .pth:模型权重文件后缀,使用时通常需搭配同名的.yml 配置文件。
核心模型分类与应用场景
ControlNet 提供了多种模型以应对不同的控制需求,以下是主流模型的详细解读:
线条与轮廓控制
- Canny(硬边缘)
- 原理:提取白底黑线轮廓图,保留精细的边缘与线条结构。
- 用途:适用于线稿上色、结构保持型重绘。
- LineArt(线条艺术)
- 原理:针对艺术化线条进行优化,比 Canny 更加细腻。
- 用途:专攻二次元、插画风格的线条还原与上色。
- SoftEdge(软边缘)
- 特点:介于 Canny 与涂鸦之间,边缘处理更加柔和。
- 用途:适合漫画、手绘风格的人物绘制,保留轮廓但不生硬。
- MLSD(直线检测)
- 原理:专注于提取建筑或室内设计中的直线条。
- 用途:是 CAD 线稿转真实渲染图的神器。
空间与结构控制
- Depth(深度图)
- 原理:生成灰阶深度图(白=近,黑=远)。
- 用途:保留物体的远近空间关系,用于强化 3D 感及场景透视控制。
- NormalMap(法线贴图)
- 原理:基于 3D 渲染原理,提取物体表面的凹凸与光影细节。
- 用途:用于石膏像、蜡像、金属质感等高立体感物体的强化。
- Tile(平铺复刻)
- 原理:精准复刻原图的结构、光影和纹理。
- 用途:仅替换材质(如将楼梯变为水滴、琥珀材质),支持无提示词的纯结构重绘,也常用于高清放大。
人物与姿态控制
- OpenPose(姿态识别)
- 原理:提取人物肢体、手部、面部关键点,支持动态迁移。
- 预处理器:
- openpose:识别全身。
- openpose_hand:仅识别肢体,忽略面部(可调节头部自由度)。
- IP-Adapter & FaceID(人脸适配)
- IP-Adapter:支持上传图像(推荐 256×256 正方形)作为提示。
- FaceID:确保生成的 IP 形象脸部一致性,支持换装、换景、换姿态。
- 组合技:需搭配 OpenPose 实现“姿态 + 面容 + 装扮”的三重控制。
创意与局部控制
- Inpaint(局部重绘)
- 特点:对涂鸦区域进行精准重绘,效果优于 SD 原生的图生图局部重绘。
- 用途:尤其适合五官修复、服饰细节修改。
- Shuffle(随机洗牌)
- 特点:打乱原图元素位置,但保留色彩与内容。
- 用途:生成自由度高、富有创意的构图变体。
- Reference(参考图)
- 特点:试图迁移原图的色彩、构图和风格。
- 注意:图生图模式下效果优于文生图,但整体还原度有限,常需配合其他 ControlNet 增强。
文生图 vs 图生图:控制策略对比
| 模式 | 核心差异 | 典型案例 |
| 文生图 (txt2img) | 无原图约束,自由度更高,更依赖提示词引导,适合创意生成。 | 汉堡案例:仅凭简单轮廓线稿 + 提示词(photographic, high-res)即可生成高细节真实汉堡。机甲案例:通过提示词(cyberpunk, mechanical armor)自由改写结构、材质与光影。 |
| 图生图 (img2img) | 以原图为基础叠加 ControlNet,结果更贴近原图,保留更多细节。 | 机甲案例:结果会更忠实于原图的轮廓与比例。莫比乌斯环:配合 Depth 图生成空间站/海洋场景,能更好保留原图的深度关系与光影逻辑。 |
特殊应用场景:
- 建筑设计案例(MLSD + 图生图): 保留建筑线稿结构,通过提示词(aluminum, glass, wood)更换材质。在文生图中,同样的提示词会导致结果差异巨大,而图生图能稳定控制结构。
- 语义分割(Segmentation)应用: 将图片按区域着色标注(如红=花海,绿=树林,蓝=雪山),支持分区域精准提示(如“薰衣草花海”、“阿尔卑斯雪山”),非常适用于游戏场景的四季切换。
进阶技巧:多重 ControlNet 协同工作
当单一模型无法满足需求时,可以开启多个 ControlNet 单元协同工作:
- OpenPose + Depth 组合
- 场景:复杂的人物环境交互。
- 作用:OpenPose 固定肢体动态,Depth 确保前后空间关系正确(例如窗台坐姿中,大腿与手部的遮挡关系)。
- IP-Adapter + OpenPose 组合
- 场景:固定角色的特定动作生成。
- 作用:FaceID 锁定面容,OpenPose 迁移姿态,提示词定义装扮,实现 IP 角色全维度的可控生成。
- 权重与平衡调节
- 技巧:在使用多重 ControlNet 时,建议适当降低单个模型的权重,并选择 “Balanced” 模式,以避免过度干预导致画面失真或崩坏。