ControlNet 28 并不是一个独立的、新的模型,而是对 ControlNet v1 范式 的一个参数化扩展和总结,它由 Lvmin Zhang 等人在论文 AIGCDetectives 中提出,旨在统一和解释 ControlNet 中不同预处理器(Preprocessor)的工作原理。

你可以把 ControlNet 28 理解为一张“说明书”或“地图”,它解释了为什么 ControlNet 的各种预处理器(如 Canny, Depth, Pose 等)能够有效控制 Stable Diffusion,它揭示了这些不同预处理器背后共享的底层机制。
ControlNet 28 的核心思想
ControlNet 的核心思想是“可控的注意力重放”,在训练时,ControlNet 学习一个“零卷积”(Zero Convolution)层,这个层在初始状态下权重为零,偏置也为零,这意味着,在训练开始时,ControlNet 的输出对原始的 U-Net 结构没有任何影响。
训练过程是这样的:
- 输入:一张图像(如一张人物照片)及其对应的控制图(如 OpenPose 骨架图)。
- 编码:原始图像通过预处理器生成控制图,然后原始图像和控制图一起被编码成特征。
- 控制:ControlNet 接收这些特征,并通过其“零卷积”层进行处理,生成额外的控制信号。
- 融合:这个控制信号被“加”到原始 U-Net 的对应层特征上,从而影响最终的图像生成过程。
- 学习:通过不断调整“零卷积”层的权重,ControlNet 学会如何根据不同的控制图(如骨架、深度、边缘等)生成相应的控制信号,以精确地引导 Stable Diffusion 生成符合预期的图像。
ControlNet 28 的贡献在于,它将这个过程参数化,并提出了一个统一的视角,即任何有效的控制信号都可以被看作是在不同“维度”上对模型注意力的调整。

ControlNet 28 的关键参数/维度
ControlNet 28 提出了四个关键的“控制维度”,这些维度共同解释了各种预处理器的工作方式,理解这四个维度,就能深刻理解 ControlNet 的强大之处。
X_s (Spatial Control - 空间控制)
这是最直观的控制维度,它直接告诉模型“在哪里。
- 作用:控制物体的位置、布局和构图。
- 典型预处理器:
- Canny / Lineart / Scribble:通过线条和边缘,精确地定义物体的轮廓和边界,模型知道线条内部应该生成内容,线条外部则不应该。
- Tile:通过平铺图,控制生成图像的纹理细节,使其具有高度一致性和重复性,非常适合生成壁纸、织物等。
- 通俗理解:就像给你一张线稿,你只需要在线稿内“填色”,画什么、怎么画由你决定,但轮廓是固定的。
X_p (Prompt Control - 提示词控制)
这个维度控制的是“是什么”以及“语义一致性”。
- 作用:确保生成的内容与输入图像的语义和类别保持一致,它不会改变物体的位置,但会决定这个位置上“长出”什么东西。
- 典型预处理器:
- IP-Adapter (Image Prompt Adapter):这是最典型的 Prompt Control,它将一张参考图像的“视觉概念”(如一个穿着特定服装的猫)注入到生成过程中,让模型理解“我要生成一个和参考图风格/内容相似的图像”,但具体构图可以由提示词(如“在公园里”)来改变。
- Inpaint / Scribble (部分区域):当你只对图像的某个区域进行重绘时,ControlNet 会保持未修改区域的语义不变,只修改你指定的区域。
- 通俗理解:就像你告诉 AI“请把我这张猫的图片,换成一只狗,但背景和姿势保持不变”,AI 知道要“换狗”(Prompt Control),但狗的“位置”还是原来猫的位置。
X_l (Layout Control - 布局控制)
这个维度介于空间和语义之间,它控制的是“物体的宏观结构和关系”。

- 作用:定义物体之间的相对位置、大小比例和整体结构,但允许物体的具体形态(如细节、颜色)发生变化。
- 典型预处理器:
- Depth / Normal / Disparity:通过深度图、法线图或视差图,控制场景的 3D 空间关系,模型知道哪个物体在前,哪个在后,但可以自由发挥物体的具体外观。
- HED / Scribble (全局):当你用粗略的涂鸦勾勒出场景的整体布局时(比如一个房间里有张床和桌子),模型会遵循这个布局,但可以填充任意的细节。
- 通俗理解:就像给你一张房子的平面图,你知道客厅在哪里,卧室在哪里,但客厅里是放沙发还是放椅子,你可以自由决定,它控制的是“结构”,不是“细节”。
X_f (Feature Control - 特征控制)
这是最底层、最抽象的控制维度,它直接作用于 U-Net 的特征层,控制图像的“风格和高级特征”。
- 作用:改变图像的艺术风格、色调、光照、纹理等非结构性的高级视觉特征。
- 典型预处理器:
- ReVision / StyleAlign:将一张参考图像的风格(如梵高的星空风格)应用到生成图像中,它不改变内容,只改变风格。
- 部分
X_p的实现:IP-Adapter 的高级版本也可以看作是一种特征控制,它提取的是参考图的全局特征和局部特征,注入到模型的多个层级。
- 通俗理解:就像给你一张照片,然后你用滤镜(如黑白、复古、赛博朋克)处理它,照片里的人和物没变,但整个“感觉”和“画风”变了。
ControlNet 28 的意义
ControlNet 28 不是一个你需要直接设置的“参数”,而是一个理论框架,它的意义在于:
- 统一解释:它为 ControlNet 的各种预处理器提供了一个统一的理论基础,让用户明白为什么 Canny 能控制轮廓,Depth 能控制空间。
- 指导选择:当你想要实现特定效果时,可以根据 ControlNet 28 的四个维度来选择最合适的预处理器。
- 想控制位置和形状?选
X_s(Canny, Lineart)。 - 想风格,改变构图?选
X_p(IP-Adapter)。 - 想控制 3D 结构和空间关系?选
X_l(Depth, Normal)。 - 想改变艺术风格和氛围?选
X_f(ReVision)。
- 想控制位置和形状?选
- 启发创新:这个框架为未来设计新的 ControlNet 预处理器提供了清晰的方向,开发者可以思考如何从这四个维度中创造新的控制信号。
ControlNet 28 是理解 ControlNet 工作原理的“钥匙”,掌握了它,你就不再只是盲目地使用各种预处理器,而是能够根据自己的创作意图,精准地选择并组合控制工具,从而更好地驾驭 Stable Diffusion 的强大生成能力。
