一句话定义
ControlNet 把线稿、深度图、人体姿态等结构条件变成可注入扩散网络的额外分支:复制一份去噪网络作可训练副本,用零卷积把结构特征接回冻结的主干,实现「构图听控制图、内容听提示词」的分工。
为什么重要
在 ControlNet 之前,文字条件只能控制「画什么」,控制不了「怎么摆」——构图、姿态、透视全凭模型与种子心情。ControlNet 把生成从「抽卡」变成「可设计」,是开源生态从玩具走向生产力工具的分水岭;其「冻结主干 + 旁路注入」的模式也成了后续各类控制适配器(T2I-Adapter、IP-Adapter 等)的通用架构模板。
前置知识
kp-011(交叉注意力与条件机制);kp-008(三件套架构,理解「在主干之外加东西」意味着什么)。
核心概念
- 可训练副本(trainable copy):复制主干(U-Net 编码器与中间块)得到一份网络,专门学习「如何服从结构条件」。
- 冻结主干(frozen copy):原模型权重不动,保证控制分支不破坏原有生成能力。
- 零卷积(zero convolution):初始权重全为零的 1×1 卷积,训练开始时旁路输出为零、不干扰主干。
- 控制条件族:canny/线稿、深度图、姿态(openpose)、法线、分割图、涂鸦等。
- 控制强度与结束步:旁路输出的缩放系数与生效的步数区间。
原理与机制
架构一句话:y = F(x; 主干) + Z( … Z(F'(x; 副本, 条件)) … ),副本处理条件后经一串零卷积加回主干各层。三个设计要点环环相扣:
- 为什么要副本而不是直接微调主干:直接微调会破坏数十亿参数里压缩的分布知识,且每个条件都要一份全量模型;副本只在条件分支上学习(约主干参数量的一个小比例),主干不动,一个基座可挂任意多个控制分支。
- 为什么要零卷积:若旁路初始随机,训练第一步就向主干注入垃圾信号,把预训练能力打散;零卷积保证 t=0 时旁路恒为零输出,主干行为与原模型完全一致,训练从「完美起点」出发逐步学习「何时、在哪注入多少结构信息」。这是全文最巧的一步,也是「控制不毁模型」的数学保证。
- 训练信号怎么来:对训练图自动提取各种控制图(对图跑 canny 得线稿、跑深度估计得深度图),让网络学会「给定这张线稿 + 这段提示词 → 还原那张图」,从而把「结构 → 图像」的映射压进副本。
使用端的旋钮:控制强度(旁路输出缩放,0~1,kp-004 三角权衡的又一实例——强度大则构图严格但细节可能僵硬);结束控制步(只在去噪前半程生效,构图由前半程决定、细节交还提示词,是「控制构图不控制笔触」的常用技巧)。多 ControlNet 可叠加(如线稿 + 深度),权重此消彼长需实测调和。
公式与推导
零卷积的初始性质可一句话证明:卷积核权重 W=0 则对任意输入输出为 0,旁路贡献为零;训练中梯度经零卷积反向传播仍非零(乘的是输入而非权重为零的路径……准确说:对 W 的梯度等于上游梯度乘输入 x,x 非零故可学习),网络得以从全零平滑长出控制能力——「初始无扰动、最终可学习」两全。
图示
文本条件(kp-011)与控制条件并行注入:文本管内容,控制图管布局。
直观类比
像给主笔画家配了一位「构图督导」:画家(主干)手艺不变(冻结),督导(副本)把蓝图钉在画架旁(条件注入),两人之间装了一个初始关闭的阀门(零卷积)——训练就是慢慢学会拧开阀门到合适开度(控制强度)。
实例或案例
- 建筑可视化:手绘草图经 canny 转 ControlNet 输入,提示词「glass facade, dusk」,产出保持草图构图的写实渲染——草图师与 AI 的分工链。
- 角色动作复用:openpose 控制图从参考图提取骨架,新角色按同姿态重绘(kp-027 一致性的常用组件)。
- 多控制实战:深度 + 线稿双控制(各 0.6)出室内场景,比单线稿的空间立体感显著提升。
常见误区
- 误区一:控制强度越高越好。强度 1.0 常致画面死板、细节为迁就线条而变形;0.5~0.8 + 「结束步」截断通常优于满强度。
- 误区二:ControlNet 会「学会」新风格。它只学「服从结构」,风格仍来自基座、提示词与 LoRA(kp-015)。
- 误区三:控制图分辨率随意。控制图与潜码分辨率需匹配(等比缩放),比例不一致会产生结构性错位。
自测题
- 零卷积解决了什么矛盾?
答案要点:训练初期旁路不得干扰预训练主干(初始输出为 0),同时梯度可传播、权重可学习。
- 为什么用可训练副本而不是微调主干?
答案要点:保护基座通用能力、参数开销小、一个基座可挂多个条件分支。
- 「结束控制步」设为 0.5 的效果是什么?
答案要点:控制只在去噪前半程生效——构图被约束、细节阶段交还文本条件,画面更自然。
与其他知识点的关系
kp-015 是另一条「不改主干」的适配路线(低秩权重而非旁路);kp-016 的 IP-Adapter 沿用了同样的旁路注入思想但注入的是图像语义;kp-025 中「结构崩坏」的标准解法即本节。
延伸阅读
ControlNet 论文(ICCV 2023)第 3 节「 naïve 方案为何失败」的消融叙述值得精读——它解释了零卷积并非花哨技巧而是必需品。