先聊点实在的:玩Stable Diffusion有一阵子的人,多少都体会过那种“提示词写到词穷,抽卡抽到手软,但还是控制不住画面构图”的无力感。想画一只猫,它偏给你背景里长出三条尾巴;想保持人物的姿势,稍微换个seed整个人就扭成了麻花。如果你正好卡在这个阶段,那ControlNet就是你绕不开的那个台阶。这篇文章我打算从原理到实战,一步步带你把ControlNet装好、看懂、用起来,不绕弯子,不堆术语,尽量让你看完就能上手出图。
这套东西适合谁?刚装好Stable Diffusion但总觉得出图靠运气的朋友,也适合已经会用提示词但想让构图、姿势、线稿、深度关系都“听自己话”的进阶玩家。下文会覆盖ControlNet的环境搭建、核心参数拆解、线稿上色和姿态控制等实际案例,还会附上我踩过的坑和排查思路,尽量让你少走几周弯路。
1. 先搞清楚ControlNet到底解决了什么问题
1.1 从“抽卡”到“定向生成”
Stable Diffusion刚上手的时候,你多半会经历一个阶段:把提示词写得越来越长,"masterpiece, best quality, 1girl, blue eyes, white dress, standing...",然后点生成,看运气。运气好出一张好图,运气不好就反复抽。问题不在于提示词写得不够多,而在于文本描述对空间关系和构图细节的表达能力非常有限。
打个比方:你让一个没见过猫的画家画一只“坐在窗台上的猫”,他可能画得挺好看,但猫的朝向、窗台的高度、光影方向完全是自由发挥。ControlNet的角色就是给这个画家递上一张参考草图,告诉他:“猫在这里,窗台在这里,轮廓照着这个来。”它不是另起炉灶,而是在原有生成能力之上加了一层“约束”。
ControlNet的全称是Control Net,直译就是“控制网络”。它通过引入额外的输入图像(比如线稿、深度图、姿态骨架、边缘图等),把这些信息作为条件注入到Stable Diffusion的生成过程中,从而实现对画面构图、结构、姿势、景深等属性的精准约束。简单说,它让“可控”成了可能,你不再只能靠文字猜,而是可以给模型画个框、打个底、摆个骨架,然后让它在这个框架内自由发挥风格和色彩。
1.2 控制网络的基本原理,用大白话讲清楚
ControlNet在2023年2月由张吕敏团队提出,论文一出来基本就是平地一声雷。它厉害在哪儿呢?不是发明了一个全新的模型,而是给已有的大模型加上了一个“外挂控制模块”,而且加得特别聪明。
我尽量不用太多数学来描述。Stable Diffusion本身是一个已经训练好的大模型,你给它文本条件,它生成图像。ControlNet的做法是:把Stable Diffusion里某个关键模块(通常是UNet的编码器部分)复制一份,然后把你的“额外条件图”(比如线稿)和原始输入叠在一起,一起喂给这个复制出来的分支。接着用zero convolution(零卷积)把这些控制信息逐步融入到原模型里去。
zero convolution这个词听着吓人,其实思想很朴素:初始状态下,控制分支输出全零,相当于“什么都没做”,原模型该怎么跑还怎么跑。随着训练一步步进行,控制分支才慢慢“学会”施加影响。这样做的好处一是不会破坏预训练模型已经学到的能力,二是训练成本大幅降低,因为我们只训练这个控制分支,不需要重新训练整个Stable Diffusion。原文用了1块NVIDIA A100 GPU,训练了大约几天就搞定了多个控制任务,这在当时是非常高效的方案。
你现在在网上下载到的controlnet模型,比如control_v11p_sd15_canny、control_v11p_sd15_openpose这些,其实都是训练好的控制分支权重。它们体积不大(SD1.5版通常在1.4GB到2.5GB左右),配合对应版本的Stable Diffusion主模型一起工作。这也是为什么你换了SDXL的大模型之后,得另外下载SDXL版的ControlNet模型,不能拿SD1.5的权重通用。
1.3 常用控制类型一览,先混个脸熟
ControlNet支持的控制方式非常多,但日常创作真正高频使用的,其实就那么几种。我按使用频率和实用程度挨个说一下:
| 控制类型 | 输入要求 | 典型用途 | 直观感受 |
|---|---|---|---|
| Canny(边缘检测) | 黑白边缘图 | 保持物体轮廓、线稿上色 | 画面结构被死死框住 |
| Depth(深度图) | 灰度深度图 | 控制前后关系、场景层次 | 近大远小安排得明明白白 |
| OpenPose(姿态骨架) | 骨骼关键点图 | 控制人物姿势、手部大致动作 | 人的姿势完全由你摆 |
| Scribble(涂鸦/草图) | 手绘草图 | 快速创意起稿、粗略构图 | 画得再乱模型也能“脑补” |
| Lineart(线稿) | 精细线稿 | 漫画线稿上色、线稿细化 | 最适合二次元线稿上色 |
| MLSD(直线检测) | 直线结构图 | 室内设计、建筑外观、透视控制 | 横平竖直,透视不乱 |
| Segmentation(语义分割) | 色块分区图 | 按区域指定内容 | 天空是天空,地面是地面 |
这些控制类型各有各的适用场景,不需要全装,但建议把Canny、Depth、OpenPose这三个列为必装,别的遇到了再补。初期宁缺毋滥,因为每多一个模型就多占一份磁盘空间和显存负担。
2. 动手前准备:环境安装与模型获取
2.1 Stable Diffusion本体怎么部署
ControlNet不是独立软件,它是在Stable Diffusion WebUI里跑的一个扩展插件。所以你首先得有一个能正常出图的WebUI环境。目前最常见的有两种路线:一是官方stable-diffusion-webui手动部署,二是大佬打包的整合包(比如大家常说的“秋叶整合包”)。
如果你是从零开始,我建议直接用整合包起步。原因很简单:官方部署要配Python环境、Git、依赖库、模型路径,还得处理各种CUDA版本兼容问题,对刚入门的朋友来说,每一步都可能是劝退点。整合包把Python、Git、依赖、常用模型都打包好了,解压即用,把力气留到后面真正创作上。
不过整合包也有个问题:版本更新滞后。ControlNet插件更新很频繁,整合包自带的版本可能偏老。所以装好整合包之后,建议立刻把WebUI和扩展插件都更新到最新版。在WebUI的“扩展”标签页里,点一下“检查更新”,把A1111本体也更新好,再重启界面。这一步能省掉后面很多莫名其妙的bug。
如果你有动手能力,愿意自己配官方环境,那我敬你是条汉子,过程我就不赘述了,但有个提醒:Python版本建议用3.10.x,torch用CUDA对应的版本,别图省事装CPU版,不然出图速度会让你怀疑人生。
2.2 安装ControlNet扩展
WebUI环境搞定后,接下来安装ControlNet扩展。打开WebUI,依次进入“扩展”(Extensions)→“可用”(Available)→“从网址安装”(Install from URL)。在输入框里填ControlNet的官方仓库地址:
https://github.com/Mikubill/sd-webui-controlnet.git点“安装”,等待几十秒。安装完成后,重启WebUI,在“设置”里如果能看到ControlNet的配置项,或者在文生图/图生图界面底部出现一个“ControlNet”的可折叠面板,就说明装成功了。
打不开GitHub、或者网络安装老失败的话,还有一个离线安装法:去网上下载别人打包好的sd-webui-controlnet文件夹,把它整个丢进WebUI目录下的“extensions”文件夹里,重启WebUI同样生效。整合包用户一般都能在配套的扩展文件夹里找到现成安装包。
2.3 控制模型下载与放置路径
扩展装好只是壳,真正干活的是控制模型权重。打开你下载控制模型的页面(HuggingFace是主要来源,也可以找国内镜像),你会看到一堆文件名,别慌,认准几个关键标识就行:
- 文件后缀名必须是.safetensors,pytorch_model.bin那种旧格式直接无视
- 名称里带“v11”的表示版本较新,优先选
- 带“sd15”的对应SD1.5主模型,带“sdxl”的对应SDXL主模型,千万别下错
- 带“fp16”的表示半精度,文件小一点,对显存更友好,新手优先选fp16版本
下载好的模型放进这个目录(整合包和官方部署路径一致):
你的WebUI目录/models/ControlNet/放好之后,回到WebUI的ControlNet面板,如果模型下拉框里能看到你放进去的名字,就说明读取成功了。如果没读到,先点面板右侧的“刷新”按钮,还不行就重启WebUI。
这里有个小知识点:旧版ControlNet插件要求模型必须放在extensions/sd-webui-controlnet/models目录下,新版改成了WebUI根目录的models/ControlNet。如果你下载的模型读不出来,看看是不是放错位置了,有的整合包同时存在这两个目录,优先放新的位置。
2.4 版本匹配:最容易踩的坑
ControlNet对版本匹配非常敏感,我在新手期被这个问题坑得够呛。简单说三句口诀:
- SD1.5主模型配SD1.5版ControlNet模型,不要混
- SDXL主模型配SDXL版ControlNet模型,不要混
- 预处理器(Preprocessor)类型和模型类型要对应,Canny模型配Canny预处理器,OpenPose模型配OpenPose预处理器,不能乱配
这里解释一下“预处理器”。ControlNet需要把普通图片(比如一张彩色照片)转换成它能理解的条件图(比如边缘图、深度图、骨架图)。这个转换过程由预处理器完成。有的ControlNet模型可以不搭配预处理器——比如你手里已经有一张现成的线稿,那直接上传线稿,预处理器选“none”,选中对应的Lineart模型就行。但如果你上传的是一张彩色照片,想让模型提取出线稿再控制生成,那你就得在预处理器里选“lineart_realistic”,让它先完成转换。
版本不匹配和预处理器选错,后果不是报错,而是“生成出来的图完全不受控制,跟没挂ControlNet一样”。出这种问题不要慌,先回来看这一节,多半就是哪里对应关系搞错了。
3. 界面与核心参数逐项拆解
3.1 ControlNet面板里每一个按钮都是干嘛的
新版本的ControlNet界面比早期版本清爽了不少,但第一次打开还是会有点懵。我按从上到下的顺序,把每个功能按钮的用途说一遍:
- 启用:总开关。不勾选的话,下面所有设置都不生效。多张ControlNet可以同时开,但新手先学会单张再说。
- 低显存模式:如果你的显卡显存低于8GB,建议勾上。它会牺牲一点点速度来降低显存占用,实测对6GB显存的用户非常友好。
- 完美像素模式:推荐开。它会自动帮你处理分辨率对齐问题,避免条件图尺寸和生成尺寸不一致时出现奇怪的拉伸或错位。
- 允许预览:方便调试用的。勾选后,预处理器跑完会生成一张“中间结果图”,让你确认网络提取到的信息是不是符合预期。强烈建议前期一直开着。
- 预处理器:选择用什么算法把你上传的图转换成条件图。选“none”表示不转换,直接用原图。
- 模型:选择用什么控制模型来施加约束。选好后,预处理器和模型会有默认组合建议,通常保持默认即可。
- 权重:控制强度,0到2之间调整。1表示标准强度,数值越大约束越强,生成结果越贴近条件图;数值越小模型自由发挥空间越大。
- 引导起始/终止时机:控制约束从哪一步开始生效、到哪一步结束。默认0和1表示整个生成过程都生效。进阶玩法里可以调成0.4开始,让前期构图先自由生成,后期再服从约束。
- 控制模式:有三个选项,分别是“均衡”、“更偏向提示词”、“更偏向ControlNet”。简单理解就是当提示词和控制条件发生冲突时,优先听谁的。
- 缩放模式:其实应该叫“图像缩放模式”,指上传条件图和最终生成图分辨率不一致时,如何调整条件图。新手用“缩放并适配”就行,其他选项不需要太纠结。
看到这一堆按钮不用害怕,日常使用里真正需要频繁调整的其实只有五个:启用、上传图、预处理器、模型、权重。其他参数保持默认值,你的图就已经能出效果了。
3.2 权重和引导时机的灵活运用
权重是ControlNet里最值得仔细体会的参数。它决定了“控制”和“自由”之间的天平往哪偏。我拿线稿上色举例:如果你想让生成结果完全贴着线稿走,权重就拉到1.2到1.5,这时候色彩和细节可以自由发挥,但轮廓必须死死咬住线稿。如果你只是想让线稿给个大致方向,细节想让它自己发挥,权重降到0.5到0.8就行。跌到0.3以下基本就是聊胜于无了。
引导起始和终止时机在特定场景下非常好用。比如你生成一张人物全身像,想让动作严格符合你的要求,但面部特征想靠提示词自己长,可以把引导起始时0改成0.3,意思是前30%的生成步骤里ControlNet不干预,让模型先自由生成大致内容,后面70%再用姿态骨架把动作掰回来。反之,如果条件图本身很重要,希望从一开始就死死控制住,就保持0和1不变。
我在实际使用中发现一个规律:控制松一点(权重在0.6到0.9区间)出来的图往往比权重拉到1.2以上更有灵气。高权重虽然稳定,但画面容易显得僵硬,尤其是人物姿态,杆得太死反而失去自然感。这个度需要你根据自己的主模型和出图风格慢慢摸索。
3.3 控制模式与缩放模式怎么选
控制模式很多人容易忽略,但它对你的出图逻辑有直接影响。举个典型场景:你用OpenPose控制人物姿势,提示词写着“wearing a red dress”。如果选的是“更偏向ControlNet”,那模型会优先保证姿势骨架完全一致,哪怕是裙子的细节和姿势打架了,也先保姿势。如果选“更偏向提示词”,那姿势可能在细节上做出微调来迁就服装的表现。
这个参数没有绝对的对错,取决于你的创作意图。前期我建议保持“均衡”不动,等你对出图效果有了明确判断标准之后,再根据具体情况做调整。
缩放模式多说一句:日常使用“缩放并适配”就够了,但如果你上传的条件图比例和生成图比例差异特别大(比如条件图是方的,生成图是长条的),建议先把条件图自己处理成目标比例再上传,而不是完全依赖缩放模式去硬拉。硬拉会导致条件图里的物体比例变形,比如圆脸被拉成鹅蛋脸,这种问题靠后期参数很难完全救回来。
4. 从零跑通一个完整案例:线稿上色
4.1 准备工作:确认你的底料
理论说再多都不如实操一次。我挑一个最经典、最容易出成就感的场景来做示例:给一张线稿上色。这个场景也是很多人入坑ControlNet的第一个目标,因为线稿资源网上特别多,不需要你有多好的画功,模型能帮你完成从线稿到成图的飞跃。
你需要准备三样东西:
- 一张干净的线稿图。最好是白底黑线,线条清晰,人物或物体轮廓完整。如果你用的是二次元动漫线稿,效果会非常惊艳。这里提醒一下,线稿如果是网上别人画的,注意版权问题,自己练习无所谓,商用一定要确认授权。
- 一个SD1.5主模型。推荐二次元风格的模型(比如Anything系列、Counterfeit系列),上色效果更符合动漫线稿的调性。
- ControlNet的Lineart模型。也就是control_v11p_sd15_lineart,后缀是.safetensors,放进前面说的models/ControlNet目录。
4.2 文生图界面参数怎么填
打开WebUI的“文生图”(txt2img)页面,先把提示词和反向提示词写好。这里有一个基本策略:线稿已经确定了轮廓,所以提示词只需要描述内容要素和画风,不需要描述构图。比如你的线稿是一个站着的女孩,提示词可以写:
提示词: masterpiece, best quality, 1girl, long hair, school uniform, looking at viewer, cherry blossoms background 反向提示词: lowres, bad anatomy, bad hands, extra fingers, missing fingers, blurry, jpeg artifacts采样器推荐用DPM++ 2M Karras,步数设25到30。CFG Scale建议5到7,太高容易画面发闷。分辨率先用512x768,这比较符合一般人物线稿的比例,出图速度也快。这些参数不用太纠结,先用起来再慢慢调。
然后往下找到ControlNet面板,点击“上传图片”按钮,把线稿图放进去。预处理器选择“lineart_realistic”,模型选择“control_v11p_sd15_lineart”,启用、完美像素、允许预览都打开,权重先设1.0。
4.3 从预览图判断预处理是否成功
点击预处理器旁边的“预览”按钮(或者直接去“允许预览”勾选状态下生成),系统会自动运行预处理并把提取结果展示出来。这一步特别关键,你要检查两件事:
第一,提取出来的线条是否清晰完整,人物轮廓有没有断开或者缺胳膊少腿。如果线条中间有大面积断裂,说明线稿本身质量不高,或者预处理器参数不对。第二,线条是否符合预期,有没有把背景里不该有的纹理也提取出来。如果提取出来一堆杂乱线条,生成结果大概率会很脏。
我自己的经验是,干净的线稿配合默认预处理器设置通常就能得到理想结果。如果提取结果不理想,先考虑换一张更干净的线稿,而不是死磕参数,因为预处理器能补充的细节有限,源头质量永远是第一位的。
4.4 生成并微调,直到线稿“活过来”
点击生成按钮,等上十几秒到几十秒,一张彩色成图就应该出来了。第一次跑通时你多半会有点小激动——素描线稿在你眼前变成了上色完成、有光影、有质感的成品图。但你可能会发现一些小瑕疵:脸部细节不像、手指画崩、颜色和预期有偏差。
这时候不要急着改提示词,先检查权重。如果画面结构偏离线稿,比如姿态变了、衣服轮廓跑了,权重往上调,试1.2到1.5。如果画面结构很准但颜色和风格不对,那问题在提示词和主模型,跟ControlNet关系不大。指头画崩是SD老毛病,建议把反向提示词里加“bad hands, extra fingers, missing fingers”,或者干脆找一张手指结构清楚的线稿,再配合inpainting局部重绘来修。
线稿上色这一步,我的建议是不要太贪心,先跑通全流程,再逐步加深对权重的理解和运用。你拿一张线稿,调整3到4次权重,观察画面变化,会比你盲调20次参数更有收获。
5. 进阶玩法:OpenPose姿态控制与Depth深度控制
5.1 用一张照片锁住人物的姿态骨架
线稿上色只是ControlNet的入门餐,真正让人觉得“这工具能改变工作流”的,是姿态控制。想象一个场景:你看到一张好看的真人照片,喜欢照片里人物的姿势,但想把人物换成二次元角色,背景也全部换掉。这时候用OpenPose,你只需要提取照片里的骨骼关键点,让生成结果完全复刻照片姿势即可。
操作流程也很简单。上传一张带人物的参考图到ControlNet,预处理器选“openpose_full”或“openpose”,模型选“control_v11p_sd15_openpose”。openpose_full会额外提取手部和脸部关键点,对细节要求高时用;openpose只提取身体关键点,容错率更高。
权重我这里建议从0.8开始试。因为人物姿态骨架对构图影响极大,权重低了姿势可能会跑偏,但权重太高又容易让身体变得板直、不自然,像木头人一样。0.8到1.0是个不错的起步区间。
预处理结束后,预览图里应显示由火柴人式的骨架线覆盖在人物轮廓上。确认骨架四肢齐全、关节位置正确后,就能正常生成了。这时候你会发现提示词里写“standing with hand on hip”这种描述姿态的语句都可以省掉了,因为骨架已经替你说了。
5.2 Depth深度控制:让场景看起来有模有样
深度图可能听起来比姿态骨架抽象一些,但你其实每天都在间接感受它的作用。离得近的物体看起来大而清晰,离得远的物体看起来小而模糊,这就是深度信息。Depth控制就是把你上传图中这种空间关系提取出来,让生成结果保持类似的空间层次。
适合用Depth的场景有几类:一是你有一张喜欢的室内场景图,想换风格但空间布局保持不变;二是你想复制某张风景照的构图层次,但把整体画风改成赛博朋克或者水墨风;三是复杂场景中要让人物和背景之间有着正确的前后遮挡关系,避免人飘在空中或者背景物体“穿模”。
用起来也不复杂。上传图后预处理器选“depth_midas”或“depth_zoe”,模型选“control_v11f1p_sd15_depth”。预览时你看到的应该是一张黑白灰图,越白表示越靠近镜头,越黑表示越远。这张灰度图就是模型参考的空间结构。
新手容易犯的错是把Depth权重也拉到1.0以上。严格说,Deep约束过强时,画面会变得很死板,光影和整体调性都被原图锁住,缺少创造性发挥的空间。我个人习惯用0.5到0.8,让深度图提供“空间框架感”,但不压制画风和光影的自由变化。
5.3 一张图同时挂多个ControlNet,效率翻倍
ControlNet从1.1版本开始支持同时启用多个ControlNet单元,也就是一张生成图里可以同时引入多个控制条件。比如你可以在单元0里放OpenPose控制人物姿态,单元1里放Depth控制场景空间,单元2放Canny控制构图轮廓。三个通道互不干扰,共同作用在最终生成结果上。
多ControlNet的开启方式很简单:在ControlNet面板里点击“添加ControlNet”(Add ControlNet)按钮,就会出现第二个、第三个控制单元,每个单元独立设置模型、参数。需要注意显存,开启多个ControlNet会明显增加显存占用,8GB以下显卡建议同时最多开两个。
多个控制条件叠加时,权重策略要以“主次分明”为原则。你想要姿势精确,OpenPose权重就0.9到1.2;场景只要大致空间布局,Depth权重就0.4到0.6;轮廓只是一个辅助参考,Canny权重更低。如果所有权重都拉得一样高,各个条件互相“打架”,生成结果很可能是什么都保住了,但画面杂乱无比。
6. 常见问题与排查技巧实录
6.1 生成图完全不受控,ControlNet像没装一样
这是新手遇到最多的问题,没有之一。排查顺序我建议是:先确认“启用”有没有勾选,千万别笑,我见过好多人都栽在这个低级失误上;再看预处理器和模型是否对应,Canny模型配了OpenPose预处理器这种错误非常隐蔽;最后看模型版本是否和主模型匹配,SD1.5主模型配了SDXL的ControlNet模型,系统不会报错但控制效果为零。
6.2 预处理器报错,或者预览图一片黑
预览图全黑通常意味着预处理器对图片的内容不敏感。比如你用一张纯色图片做OpenPose,当然提取不出骨架。这时候检查一下上传的图片本身是否包含预处理器需要的信息。另外有些预处理器对图片分辨率敏感,太小(比如低于512)的图容易提取失败,先尝试把图片放大再试。
如果你看到的是“RuntimeError”或者“module not found”之类的报错,多半是扩展插件依赖没装全。在WebUI的终端里看报错信息,根据提示pip install缺的依赖,或者更省事的方法是直接换个整合包,因为整合包通常已经把依赖补全了。
6.3 生成速度明显变慢,显存不够用
ControlNet本身需要额外的前向推理计算,速度变慢是正常的。但如果你直接爆显存(OOM),首先要确认是否勾选了低显存模式;其次确认上传的图片分辨率别太大,上万像素的图对显存是灾难;最后就是减少同时启用的ControlNet数量,先用一个跑通再叠加多个。
这里分享一个我自己的偏好:如果不是高强度批量出图,单纯为了效果,可以把生成分辨率控制在1024x1024以内。ControlNet在这个分辨率下表现已经足够好,显存压力也小得多。
6.4 常见问题速查表
| 症状 | 可能原因 | 解决思路 |
|---|---|---|
| ControlNet面板不显示 | 扩展未安装成功或未重启 | 重装扩展,重启WebUI |
| 勾选启用后没效果 | 模型版本和主模型不匹配 | 换成对应版本的控制模型 |
| 预览图全黑/全白 | 预处理器与图片内容不匹配 | 换用正确的预处理器,或更换素材 |
| 生成结果模糊脏乱 | 线稿提取出过多杂乱线条 | 换干净线稿,调低权重 |
| 手臂断掉或变形 | OpenPose骨架关键点缺失 | 换高质量素材图,或手动调整骨架 |
| 显存不足(OOM) | 同时控制条件太多 | 关掉部分ControlNet,开低显存模式 |
| 模型下拉框读不到文件 | 放置路径不对 | 放到models/ControlNet目录并刷新 |
6.5 我踩过的一些坑,提前帮你们避开
ControlNet的模型非常多,名字相似度也高,很容易下错。我一开始就下错过几个模型,放进目录里也不报错,生成结果就是不对劲。后来养成一个习惯:每次下载模型,文件名里标明版本和用途,用Notion建了一个表格记录模型名称、对应版本、下载来源、测试效果。后期整理起来,脑子清醒多了。
另外,很多预处理器本身也有对应的模型文件名,新手容易混淆“预处理器”和“模型”的概念。简单区分一下:预处理器是算法,负责把图片变成条件图;模型是权重,负责把条件图变成生成约束。两者需要组合使用,但不是一个东西。界面上“预处理器”下拉框里的是前者,“模型”下拉框里的是后者,千万别选错地方。
最后想特别提一嘴:网上很多教程让你一步到位装齐所有模型,其实没必要。ControlNet真正常用就那几个,其他大多数模型你可能装完放半年都用不上一次,还白白占空间。按需下载,才是效率最高的方式。
我第一次跑通ControlNet线稿上色的时候,盯着屏幕里的成图看了好一会儿。从“靠天吃饭”的抽卡模式切换到“指哪打哪”的受控生成,这种体验转变带来的惊讶和满足感,可能只有经历过那个阶段的人才能懂。它不会替你做创意决策,但它能把你脑子里的画面,稳稳地搬到画布上。踩坑之后把工具用熟,剩下的就是放开了去玩,去试,去把你以前想画但因为控制力不够而放弃的想法,一张张画出来。