模型与参数

ControlNet:锁住构图,把风格留给提示词

又称 what is controlnet, ip adapter, 控制网, openpose, 深度图控制

ControlNet 是挂在扩散模型上的一个附加网络,它用从参考图里提取出的结构图(骨架、深度图、边缘线等)作为额外条件。风格和内容仍由提示词决定,但画面的布局被你给的那张结构图钉死。

它给扩散模型补了什么

一条纯文字提示词对布局几乎没有控制力。你写「低角度、人物举起一只手」,每跑一次构图都不一样。ControlNet 补的就是这块:训练一份模型编码器的副本去接收第二路输入,也就是那张结构图,并在每一个去噪步骤里注入它。

结构图是预处理器从你给的图里提取的。openpose 预处理器把照片压成一个火柴人;深度预处理器把它变成一张灰度距离场;canny 预处理器把它变成黑底白线。活下来的部分就是会被强制执行的部分,整个设计思路就在这里:把你希望模型重新发挥的东西全部扔掉,只留下你要它守住的那一部分。

预处理器怎么挑

预处理器保住什么适合
openpose关节位置改姿势、留住一个手势
depth 深度空间布局、体积室内、镜头几何、产品摆位
canny / lineart精确轮廓logo、包装、机械形体
scribble / softedge粗形状用自己的草图定布局
tile局部细节放大时不让它乱加内容

这一步最常见的错误是默认就选 canny。canny 会把轮廓照抄,源图如果是某个真人的照片,生成出来的人就继承了那个人的体型和发型。你要的是姿势、不是这个身体时,正确的工具是 openpose。

真正要调的三个数

control weight(控制权重) 决定结构图说话有多大声,一般范围 0 到 2,真正好用的区间是 0.5 到 0.9。调高不等于更准,只是更僵。

引导开始步数 是从去噪进度的哪个比例开始施加条件,通常留在 0。布局就该留 0,因为构图是在最早那几步定下来的。

引导结束步数 是什么时候停,这是最被浪费的一个旋钮。把它设到 0.6 或 0.7,等于把最后三分之一的过程还给模型,而明暗、材质、颗粒感恰好是在那里加上去的。绝大多数「出图像描线稿」的抱怨,改这一个数就好了。

什么时候用它是白费劲

它补不了知识。权重本身画不出一匹像样的马,那么再完美的马的深度图,只会得到一匹形状正确的烂马。它也救不了自相矛盾的提示词:提示词写「坐着」,喂进去的却是站姿骨架,出来的就是一个从髋部折断的折中产物。

在托管平台上你通常看不到 ControlNet 这个开关,对应的入口是一个参考图槽位,标签可能叫「结构参考」或「风格参考」,预处理器已经替你选好了。调的直觉是通用的:出来的东西像照抄,就削弱参考或缩短它的作用时长;出来的东西像没看参考,那大概是这张结构图本身太含糊。

这个效果的提示词

一条能稳定出效果的起点。主体和场景可以换,技术性的那几句留着。

A samurai in weathered lacquer armour standing in falling snow, dusk backlight, shallow depth of field, 85mm portrait

试一下:ControlNet

打开生成器,参数已经预填好。

常见问题

ControlNet 和 IP-Adapter 有什么区别?
ControlNet 管结构:东西在哪、身体是什么姿势、空间有多深。IP-Adapter 管观感:从参考图里拿风格、色调,一定程度上还能拿身份特征。两者解决的是问题的相反两半,实际用法常常是叠起来,一个管布局一个管长相。
预处理器该选哪个?
按「你要保住什么」来选。要保四肢位置、其余全换,用 openpose;空间关系和镜头几何重要,用深度图;轮廓必须一模一样(产品、logo),用 canny 或 lineart;布局是你自己手画的,用 scribble。
control weight 设多少合适?
从 0.7 起调。低于 0.4 左右,这份引导就只是个建议,模型可以推翻;高于 1.0 左右,画面开始像描出来的:光变平、边缘发硬、提示词说不上话。结果一旦发僵,第一个该降的就是它。
为什么出来的图又平又塑料?
几乎都是权重太高且管得太久。把 weight 降到 0.6,并把引导结束步数设到 0.7 左右,让最后几步自由去加明暗和材质。另外一定看一眼预处理预览图,边缘图上的噪点会被原样烤进成品。
可以同时挂两个 ControlNet 吗?
可以,室内人物常用「深度 + openpose」这一对。但两者的权重加起来要压住,大约 1.0 到 1.2,否则两张图会互相打架,在它们意见不一致的地方出现扭曲的解剖结构。

相关术语