跳到主要内容

Stable Diffusion 进阶 — 提示之外的旋钮

这一章讲三件事: 开源图像模型把提示之外的旋钮全部交给了用户——seed、步数、CFG、权重语法、提示编辑; img2img、放大、ControlNet、SAM 怎样把「构图」这件提示管不住的事管住; 以及 DreamBooth 如何把「训一个专属模型」从 60 万美元打到一块 GPU 不到一小时。 对应原书第 9 章全章。

1. 这一章讲什么

第 12 章的手法全是「提示里写字」。但 Stable Diffusion 是开源的——模型的所有参数都对用户开放(第 11 章),这意味着提示之外还有一整层控制面:从哪团噪声出发、画多少步、跟提示跟多紧、中途换不换提示、拿不拿底图当轨道。这一章讲这层。

主走查:把一张城堡照片变成奇幻插画。 书里用 ControlNet 的分割条件,把一张现代城堡的实景照片(Unsplash 上的 Richard Clark 作品)变成奇幻风格的城堡插画1。我们拿它走全程,沿途把每个旋钮拧一遍。

2. 顶层全景:提示只是控制面的一角

文字控制(第 12 章) 参数控制(本章) 图像控制(本章)
提示词 / 负提示 seed | 步数 | CFG img2img(底图)
权重 (word:1.5) 采样器 inpainting(蒙版重绘)
提示编辑 [from:to:when] ControlNet(构图条件)
SAM(自动蒙版)

图说:三层控制面。文字管「画什么内容」,参数管「生成过程怎么走」,
图像输入管「构图往哪贴」。主走查的城堡照片走的就是最右一列。

3. 核心原理

3.1 跑起来:本地、Colab 与一个更安全的文件格式

三条路:本地 GPU(或苹果芯片)、Google Colab(云端笔记本)、或托管 API。重度用户的标配界面是 AUTOMATIC1111(念作 automatic eleven eleven)——功能全、扩展多,社区把最先进的功能都先集成进去;更灵活的 ComfyUI 被书里判为「对多数用例太复杂」2

模型文件从 Hugging Face 或 Civitai 下载,选 .safetensors 格式——它比旧的 .ckpt 安全,因为加载时不会在你机器上执行代码3。两个社区提醒:Civitai 上有 NSFW 模型,浏览时留意;模型要和主模型版本配套(v1.5 的配件不能给 SDXL 用)4

3.2 三个核心旋钮:seed、步数、CFG

代码里一次生成只有一行,但三个参数决定了一切5:

image = pipe(prompt, num_inference_steps=50, guidance_scale=7, generator=generator)

- generator 里封着 seed(随机种子):同一个种子 + 同一个模型 + 同一句提示
= 完全同一张图。可复现性是调试与评测的前提(第 07 章);
- num_inference_steps(推理步数):洗多少步。少了没洗净,多了费时间,50 是常用值;
- guidance_scale(引导强度,界面里叫 CFG):跟提示跟多紧。

CFG 有一张书里给的对照表,值得整个背下来6:

CFG行为
1基本无视提示
3自由发挥
7提示与创造力的平衡(默认)
15遵守提示
30严守提示

调高不是免费的:书里提醒,太高的 CFG 会让画面出现颗粒感、多样性下降5

还有一个常被新手忽略的旋钮,行话叫采样器(sampler:去噪过程的具体算法,管每一步怎么从噪声里取样)。

书里的速查:Euler 最简单;名字带 a 的(如 Euler a)是 ancestral 采样器——过程中会注入新噪声,同一 seed 也不收敛(每次跑出略不同的图,不定下来),复现性差;求稳用 DPM++ 2M Karras 或 UniPC(20-30 步),求质用 DPM++ SDE Karras 或 DDIM(10-15 步,慢)7

3.3 权重语法与提示编辑:中途换轨道

第 12 章学过 Midjourney 的 :: 配重;AUTOMATIC1111 用括号:(pirate) = 权重 1.1,((pirate)) = 1.21,(pirate:1.5) = 精确指定8

更狠的是提示编辑(prompt editing):利用「扩散早期定大形、后期填细节」这个事实,在生成中途换掉提示——语法 [from:to:when],例如 [Emma Watson:Amber Heard:0.5]:前半程画 Emma Watson,走到一半换成 Amber Heard 接着画,成品是两人的混合9。书里点出它的一个伦理用途:得到「好看、眼熟、但不等于任何特定名人」的脸,比直接复制名人肖像更站得住(仍建议咨询律师)9。交替语法 [A|B] 每一步换一次,混合更匀。作者自己泼了冷水:这是「dark art」(黑魔法),他们实践中用到的次数有限10

3.4 img2img:denoising strength 是「离原图走多远」

img2img(图生图)在提示之外加一张底图。它独有的旋钮是 denoising strength(去噪强度):往底图里掺多少噪声再开始洗——0 = 一点噪声不加,输出和输入一模一样;1 = 底图全换成噪声,等于没给底图11。中间值就是「保留多少原图」的连续旋钮:0.2-0.4 是小改,0.8 以上接近重画11

书里的起手配置:Euler 采样、50 步、CFG 20-30(比平时高,因为要压住底图)11。调参别一格一格手点:AUTOMATIC1111 的 X/Y/Z Plot 脚本一次扫三个参数、产出一张网格——第 12 章网格搜索的内置版12

放大(upscale)也是同一台机器:SD Upscale 把图切成块,块与块之间撑开缝,再按提示把缝填上。两个反直觉的纪律:别用原提示(否则每块都把整幅图重画一遍),换个泛泛的「highly detailed」就好;推荐参数 150-200+ 步、CFG 8-15、denoising 0.1-0.2(保住底图)——M2 MacBook Air 上大约 10-30 分钟13

3.5 主走查:ControlNet 把城堡照片变成奇幻插画

提示管得住「画什么」,管不住「画在哪」——人物的姿势、场景的构图、物体的结构,纯提示下每次都不一样。ControlNet 解决的就是构图:你上传一张参考图,它先把参考图提取成某种「条件图」(边缘、深度、骨架……),生成时模型被迫贴着条件图画14。它出自 2023 年 Zhang、Rao、Agrawala 的论文《Adding Conditional Control to Text-to-Image Diffusion Models》14

铁律只有一条:预处理器和模型必须配套——Canny 预处理器配 Canny 模型(control_v11p_sd15_canny 这样的名字),混用出来的是垃圾15

书里逐个演示了六种条件,各配一张真实出图16:

条件提取什么书里的演示
Canny(边缘)高对比描边,细节最多,默认首选纽约市照片 → 吉卜力风城市
Depth(深度)深度图:越白越近、越黑越远乐队照片 → 同站位同景深的士兵
Normal(法线)类 3D 的凹凸图,纹理光影全保留弹键盘的女子 → 盖茨比年代
OpenPose(姿态)骨架:姿势、手位、表情蒙娜丽莎的姿势 → 瑞切尔·薇兹
M-LSD(直线)直线段,适合人造物现代公寓 → 广告狂人年代
SoftEdge/HED(平滑轮廓)比 Canny 柔,脸部更自由戴珍珠耳环的少女 → 斯嘉丽·约翰逊
Segmentation(分割)把图分成语义(意思)区域现代城堡照片 → 奇幻城堡插画
Scribble(涂鸦)你手画的草图,边不直都行几笔涂鸦 → 儿童书插页

主走查落在 Segmentation 这一行1:

第 1 步|上传城堡实景照片,预处理器选 Segmentation:
照片被切成「天空 / 石墙 / 草地」这类语义区域图;
第 2 步|提示只要写想变成什么:
"A beautiful magical castle viewed from the outside, texture, …"
——构图由条件图钉死,提示只管风格;
第 3 步|参数:书里本节统一用 DPM++ SDE Karras 采样器、CFG 1.5、
Control Mode 选 Balanced、30 步、SD v1.5(当时 ControlNet
模型还没配齐 SDXL)[^17];
第 4 步|出图:布局、透视、城堡位置与照片一致,风格已是奇幻插画。

ControlNet 还有三个细调旋钮,书里一并给了17:Control Weight(条件图的话语权多大)、Starting/Ending Control Steps(条件在生成过程的哪段生效——去掉尾部 20% 的步骤(Ending=0.8),细节阶段给模型留创造力)、Preprocessor Resolution(条件图的精细度)。

3.6 SAM:点一下,出蒙版

inpainting(局部重绘,第 12 章)需要蒙版,手画蒙版又慢又不准。SAM(Segment Anything Model,Meta 开源)用 1,100 万张图、11 亿个蒙版训出来,用法是在图上点一到三个点,它就猜出你想要的那块区域;也能自动把全图元素各自分割18。蒙版可以导出给 inpainting、ControlNet 或当底图——它是这台机器里的「选区工具」18

3.7 DreamBooth:平民化的定制训练

全部手法的尽头是:教模型一个它从没见过的概念(你的脸、你的产品、你的角色)。书里先把不可能说清:Stable Diffusion 初训 reportedly 花了 60 万美元、15 万 GPU 小时——从头训没戏19DreamBooth(Ruiz et al., 2022)换了个问题:不从零训,只在大模型上微调出一个新概念——一块 GPU 45 分钟到 1 小时,产出一个新的 2GB 模型文件19

三个关键设计,书里全在代码里演示了20:

  1. 图不用多:最少 5 张能跑,推荐 20-30 张——第 12 章的「一致角色」流程攒的 20 张图正好喂给它;
  2. 触发词用无意义词:instance prompt(实例提示)里放一个词典里不存在的词(书里用 ukjzwx)当开关——它不带任何既有含义,不会污染其他生成;
  3. 类提示保底:class prompt(类别提示,如「photo of a person」)在训练中同时生成普通样本,防止模型把「人」这个概念整个学成你的脸(prior preservation,先验保持)。

作者的经验:一次只训一个概念,多个概念混训伤性能;想合并,事后再融20。对照技术一并点名:Textual Inversion(更老:不动权重,只在词嵌入(每个词对应的那串数)里给你的概念找位置——效果差得多)和 LoRA(Hu et al., 2021:往模型里加薄薄的新层、只训新层——第 03 章在 LLM 侧见过它)及 Hypernetworks;后两者当时在 Civitai 上占比不到 10%21

4. 作者的判断与证据

  • 所有旋钮都配了可复现的设置(seed 固定)与真实出图;城堡、纽约→吉卜力、蒙娜丽莎→薇兹等对照图在书里;
  • CFG 对照表、img2img 起手配置、放大参数(150-200 步等)是作者经验值,书里明确以「we recommend」措辞给出;
  • 提示编辑被作者自己判为「dark art、实践用途有限」——照录,不夸大10;
  • DreamBooth 的成本数字($600,000 / 45 分钟)前者标注 reportedly,后者是作者实测量级19;
  • 「v2.0 过滤 NSFW 伤性能」书里措辞 it's commonly believed,第 11 章已标记为社区推测4

判断(我们的,不是书里的): 这一章和第 12 章的分工,其实是「文本能控制什么」的边界实验:内容归提示管,过程归参数管,构图归条件图管。当一个需求在提示里怎么写都不灵,正确的问题不是「提示还能怎么改」,而是「这件事归哪一层管」——姿势归 OpenPose,选区归 SAM,新概念归 DreamBooth。这也是开源的独特方法论:闭源模型你只能在一层(提示)上努力。 如果错,会错在: 如果后来的模型把构图、选区都内化为「听懂自然语言指令」(GPT-4o 一类的原生图像编辑正是这个方向),三层控制面会重新并回一层——但在自托管、可复现、可微调仍有价值的场景,分层控制不会消失。

5. 边界与局限

  • 全书图像章节的演示基于 SD v1.5 / SDXL 与 AUTOMATIC1111 的 2024 年版本;扩展生态月月在变,书自己说「以官方仓库的最新说明为准」2;
  • DreamBooth 的 Colab 教程只能在 Nvidia GPU 上跑(Mac 不行),书里明说20;
  • 采样器、CFG、denoising 的最佳值全是经验值,换模型就要重扫;
  • img2img 与 ControlNet 都治不了「内容对不对」——它们管构图与风格,内容仍归提示与模型能力;
  • 版权:DreamBooth 训真人、提示里用受保护 IP(书里的 Pixar 演示仅是好玩),商用前都要自行判断11

6. 可带走的

  1. 先固定 seed 再调别的——不可复现就没法调试;
  2. CFG 背五档:1 无视 / 3 自由 / 7 平衡 / 15 遵守 / 30 严守;太高会起颗粒;
  3. 求稳:DPM++ 2M Karras,20-30 步;名字带 a 的采样器同 seed 也不收敛;
  4. 权重用 (word:1.5);中途换提示用 [from:to:when]——但那是黑魔法,少用;
  5. img2img 的核心问题是「离原图多远」:denoising 0.2-0.4 小改,0.8 以上接近重画;
  6. 放大别用原提示——每块会把整图重画一遍;150-200+ 步、denoising 0.1-0.2;
  7. 构图别求提示:ControlNet 六种条件各管一类,预处理器和模型必须配套;
  8. 蒙版用 SAM 点出来,别手画;
  9. 专属概念:20-30 张图 + 无意义触发词 + 类提示保底,一块 GPU 一小时;
  10. 遇到「怎么写提示都不灵」,先问这件事归哪一层管:内容、过程,还是构图。

7. 原文地图

主题原书章原文位置
AUTOMATIC1111 与 ComfyUICh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:200(搜「AUTOMATIC1111」)
safetensors 更安全Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:218(搜「does not execute code」)
seed 可复现Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:79(搜「manual_seed」)
步数与 guidance_scaleCh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:83(搜「num_inference_steps」)
CFG 五档对照Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:260(搜「CFG Scale」)
采样器速查Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:258(搜「Euler」)
括号权重语法Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:274(搜「pirate」)
提示编辑 [from:to:when]Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:295(搜「Emma Watson」)
dark art 自评Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:311(搜「dark art」)
denoising strengthCh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:319(搜「denoising strength」)
img2img 起手配置Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:315(搜「Euler sampling」)
X/Y/Z PlotCh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:331(搜「X/Y/Z Plot」)
放大纪律Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:351(搜「R-ESRGAN」) · text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:359(搜「150–200」)
ControlNet 与论文Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:413(搜「Adding Conditional Control」)
预处理与模型配套Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:542(搜「must match」)
六种条件演示Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:453(搜「Studio Ghibli」) · text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:459(搜「depth map」) · text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:480(搜「OpenPose」)
城堡主走查Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:514(搜「fantasy-style castle」) · text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:518(搜「magical castle」)
本节统一参数Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:447(搜「DPM++ SDE Karras」)
Control 细调旋钮Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:443(搜「Ending Control Step」)
SAMCh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:550(搜「1.1 billion masks」)
DreamBooth 成本对比Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:590(搜「600,000」)
5-30 张与触发词Ch.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:675(搜「20–30 images」) · text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:652(搜「zwx」)
Textual Inversion 与 LoRACh.9 SD 进阶text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:799(搜「Textual Inversion」)

Footnotes

  1. 出处:「Ch.9 SD 进阶」第 514 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:514,搜「fantasy-style castle」)与第 518 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:518,搜「magical castle」)。 2

  2. 出处:「Ch.9 SD 进阶」第 200 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:200,搜「AUTOMATIC1111」)与第 7 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:7,搜「up-to-date instructions」)。 2

  3. 出处:「Ch.9 SD 进阶」第 218 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:218,搜「does not execute code」)。

  4. 出处:「Ch.9 SD 进阶」第 206 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:206,搜「NSFW」)与第 216 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:216,搜「version 1.5」)。 2

  5. 出处:「Ch.9 SD 进阶」第 79 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:79,搜「manual_seed」)与第 83 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:83,搜「num_inference_steps」)。 2

  6. 出处:「Ch.9 SD 进阶」第 260-272 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:260,搜「CFG Scale」)。

  7. 出处:「Ch.9 SD 进阶」第 258 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:258,搜「Euler」)。

  8. 出处:「Ch.9 SD 进阶」第 274 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:274,搜「pirate」)。

  9. 出处:「Ch.9 SD 进阶」第 295 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:295,搜「Emma Watson」)。 2

  10. 出处:「Ch.9 SD 进阶」第 311 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:311,搜「dark art」)。「limited use」是作者原话。 2

  11. 出处:「Ch.9 SD 进阶」第 319 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:319,搜「denoising strength」)与第 315 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:315,搜「Euler sampling」)。0.2-0.4 小改、0.8 换元素的区间见 inpainting 一节第 379 段附近。 2 3 4

  12. 出处:「Ch.9 SD 进阶」第 331 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:331,搜「X/Y/Z Plot」)。

  13. 出处:「Ch.9 SD 进阶」第 351 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:351,搜「R-ESRGAN」)与第 359 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:359,搜「150–200」)。

  14. 出处:「Ch.9 SD 进阶」第 409 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:409,搜「ControlNet」)与第 413 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:413,搜「Adding Conditional Control」)。 2

  15. 出处:「Ch.9 SD 进阶」第 542 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:542,搜「must match」)。

  16. 出处:「Ch.9 SD 进阶」第 447 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:447,搜「Canny」)、第 453 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:453,搜「Studio Ghibli」)、第 459 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:459,搜「depth map」)、第 469 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:469,搜「Normal」)、第 480 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:480,搜「OpenPose」)、第 490 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:490,搜「M-LSD」)、第 500 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:500,搜「SoftEdge」)、第 528 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:528,搜「scribble」)。

  17. 出处:「Ch.9 SD 进阶」第 447 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:447,搜「DPM++ SDE Karras」)与第 443 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:443,搜「Ending Control Step」)。

  18. 出处:「Ch.9 SD 进阶」第 550 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:550,搜「1.1 billion masks」)。 2

  19. 出处:「Ch.9 SD 进阶」第 590 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:590,搜「600,000」)。 2 3

  20. 出处:「Ch.9 SD 进阶」第 675 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:675,搜「20–30 images」)与第 652 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:652,搜「zwx」)。「一次只训一个概念」也在第 652 段。 2 3

  21. 出处:「Ch.9 SD 进阶」第 799 段(text/63-ch09-chapter-9-advanced-techniques-for-image-generati.txt:799,搜「Textual Inversion」)。