第 05 次课:AI 绘图原理
一、上节课回顾
- 上节课三个要点:
- 强化学习用状态、动作、奖励和策略更新构成反馈闭环。
- RLHF 先用 SFT 建立指令行为,再用人类排序训练奖励模型,最后用强化学习优化对齐。
- R1-Zero 才是跳过初始 SFT 的纯 RL 推理示例;R1 采用多阶段训练,结合 rejection sampling、RL、SFT。
- 已经留下的基础:你能区分训练信号来源,解释 CoT、GRPO、蒸馏和关键效率技术的边界。
- 今天要接上的问题:语言模型用 token 学「接着说什么」,绘图模型怎样从随机噪声中学出有结构的图像?
- 开场检查:两名同学分别回答「R1-Zero 和 R1 的训练路径差别是什么?为什么不能把两者都叫纯强化学习?」
二、本节课主要内容和目标
这 80 分钟讲完,你该拿到的东西很具体:用 AI 生图时遇到「不像、糊、手指崩」能定位到是哪个环节的问题,调参数时知道自己在调什么。
本节课结束时,你能:
- 用加噪和去噪解释扩散模型的前向训练与反向生成过程。
- 说明 VAE、潜在空间与像素空间的关系,并判断压缩带来的效率收益和细节损失。
- 解释 CLIP 文本编码器如何把提示词转成可引导生图的向量。
- 说明 U-Net 预测噪声、skip connection 和采样步数对生成质量与耗时的影响。
- 判断 CFG 强度、正向提示词和负面提示词如何改变图像与提示的关系。
- 区分 LoRA 与 ControlNet 的作用,并选择合适的风格化或构图控制方法。
| 顺序 | 知识点 | 你能做到 | 课堂练习 | 时间 |
|---|---|---|---|---|
| M1 | 扩散模型 | 解释加噪训练与去噪生成 | 【M1-01】【M1-02】 | 10分钟 |
| M2 | 潜在空间与 VAE | 说明压缩、还原与效率边界 | 【M2-01】【M2-02】【M2-03】 | 12分钟 |
| M3 | CLIP 文本编码器 | 解释文字如何引导绘图 | 【M3-01】【M3-02】 | 12分钟 |
| M4 | U-Net 与采样步数 | 解释去噪网络和步数权衡 | 【M4-01】【M4-02】【M4-03】 | 15分钟 |
| M5 | CFG 与负面提示词 | 调整文本引导强度和排除目标 | 【M5-01】【M5-02】【M5-03】【M5-04】 | 16分钟 |
| M6 | LoRA 与 ControlNet | 区分风格微调和构图控制 | 【M6-01】【M6-02】【M6-03】【M6-04】 | 15分钟 |
课堂总时长 80 分钟,另留 10 分钟机动。
延伸视频
课前或课后看:从去噪视角讲解 Stable Diffusion 如何一步步从噪点画出图,对应 M1 与 M4。
三、本节课知识内容
M1:扩散模型(10分钟)
语言模型能根据上文预测下一个词,可图像不是一条线性句子——一张图里有轮廓、纹理、光影、空间关系。你可能以为绘图模型是「从库里找图再拼贴」——这么猜很自然,早年的图像生成确实走过拼素材的路。恰恰相反:如果真是拼贴,它画不出训练集里没有的新构图。生成的新图从哪来?
扩散模型,说白了是修一张被霜花盖住的玻璃画:训练时给真实图片逐步加噪声,直到接近纯噪声——模型反复看「加了噪的图」和「干净原图」的差别,学会判断哪里是霜、哪里是画;生成时反过来,从一张随机噪声开始,每步预测并去掉一点噪声,一步步走出一张新图。它学的不是某张具体的图,而是图像的分布——所以能生成没见过的新组合。2020 年 DDPM 论文用「预测噪声」这个目标把扩散模型的质量和稳定性推到实用水平。
三个边界:扩散不是把脏图还原成原始照片,它生成的是分布里的新样本;它学训练分布,训练数据里的偏差也会被学走;步数少会粗糙,步数多不一定持续变好,可能只是更耗时。「能生成」也不等于「可发布」,还要过提示词、权重和安全过滤器的关。
一句心法:扩散模型先学会给图加噪,再学会从噪声中一步步去噪生成图。
课堂练习:现在去学习通完成【M1-01】【M1-02】。
M2:潜在空间与 VAE(12分钟)
一张 512×512 的 RGB 图有近 79 万个像素值,扩散每步都要在上面算,普通电脑跑不动。你可能觉得直接降分辨率就行——直觉上确实该省:像素少了,计算量就小了。恰恰相反:直接缩小会丢掉轮廓和纹理的细节,而且扩散要的不是「小图」而是「可还原的紧凑表示」。
VAE(变分自编码器),说白了是整理行李箱:大房间里的衣物对应像素图,按规则折叠装箱对应编码到潜在空间,到达目的地取出复原对应解码。Latent Diffusion 把扩散搬进这个小空间:512×512 的图先被编码器压成约 64×64 的 latent,加噪、去噪都在这里反复迭代,算完再由解码器还原成像素图——把最贵的循环计算从近 80 万个值搬到十几万维度上做,显存和耗时大幅下降。2022 年 Rombach 等人的 Latent Diffusion 论文给出了这条路线,Stable Diffusion 就是它的开源产物。这条流水线的分工是:VAE 供给压缩,扩散供给生成,解码器供给还原。
两个边界:潜在空间不是「模糊的小图」,它是模型表示结构的特征空间,人眼读不懂;压缩不是无损的——细小纹理、手部、文字和复杂边缘可能出现误差。不同模型家族的 VAE 不通用,混用基础模型、VAE 和 LoRA 会出现颜色偏移或结构崩坏。
一句心法:VAE 先把图压进潜在空间,扩散在那里算完,再解码成像素图。
课堂练习:现在去学习通完成【M2-01】【M2-02】【M2-03】。
M3:CLIP 文本编码器(12分钟)
你输入「a dog running in the park」,计算机看不见公园也看不见狗。你可能以为模型在做关键词匹配——这么猜有来处:很多检索系统就是这么工作的。恰恰相反:关键词匹配只能判断字符串是否相同,处理不了「红色雨衣」「赛博朋克灯光」「水彩笔触」这种组合。文字怎么变成模型能算、又能和图像对上的信号?
CLIP,说白了是图文翻译官:它用图像编码器和文本编码器把 4 亿个图文对映射到同一个向量空间,训练时让语义相近的图文向量靠近、无关的拉远——「狗在公园跑」的照片和这句话的向量最终被推到一起。生图时,你的提示词先切成 token,经文本编码器变成一组带语义的向量(主体、属性、风格、场景),再通过交叉注意力注入 U-Net,让去噪过程知道「画什么、强调什么」。它传递的是语义方向,不是事实真伪——提示词写「真实照片」不代表内容真实。
两个边界:CLIP 不是全知语义解析器,长句里的数量、空间关系、否定和代词经常不稳定;提示词超过编码器上下文长度会被截断,写在后面的内容可能失去影响。权重、括号、负面词都影响结果,但它们不是魔法咒语,最终仍依赖训练分布。
一句心法:CLIP 把提示词转成图文对齐的向量,供 U-Net 在去噪时理解画什么。
课堂练习:现在去学习通完成【M3-01】【M3-02】。
M4:U-Net 与采样步数(15分钟)
潜在空间里有一张噪声,模型要判断哪里是噪声、哪里保留狗的轮廓。一次预测所有细节很难,每次生成都重复几十轮又耗时。你可能以为「步数越多质量一定越好」——直觉没全错:前段的步数确实在攒结构。恰恰相反:更多步有机会补细节,但收益递减,某些模型还会过度锐化、颜色偏重。
U-Net,说白了是修图台上的主笔师:先看整体污损程度定大形,再回头补边缘和纹理。它的形状是编码器—解码器:下采样路径提取大尺度结构,上采样路径恢复分辨率,skip connection 像把原稿草图像素递给后期——浅层细节直达重建路径,去噪时不必重新猜。每个采样步不是重新画一张图,而是在上一张 latent 上估计噪声、小幅更新;时间步告诉模型当前噪声程度——高噪声步定构图大色块,低噪声步修边缘纹理。2015 年 U-Net 论文为生物医学分割设计了这个结构,DDPM 把它用作噪声预测网络,成了现代扩散模型的骨架。
两个边界:U-Net 不是 Stable Diffusion 独有,也不是唯一的去噪结构——新模型已有 DiT 等路线;步数应按模型和 sampler 实测,没有「50 一定最好」。采样器、CFG、种子、模型版本共同影响结果,只改步数救不了混乱的提示词。
一句心法:U-Net 根据时间步预测噪声,skip connection 帮它边去噪边保细节。
课堂练习:现在去学习通完成【M4-01】【M4-02】【M4-03】。
M5:CFG 与负面提示词(16分钟)
同一个提示词对应无数张可能的图。CFG 调高后图更贴描述,可调太猛又出现颜色过饱、人物变形、画面僵硬。你可能觉得「调高就更听话」——低档到中档确实如此,你的经验全来自这段区间,所以这个直觉最容易被带偏。这个旋钮到底在调什么?
CFG(Classifier-Free Guidance),说白了是给画师下修改指令的音量旋钮:模型在同一时间步分别算一次「听提示词的方向」和「不听提示词的方向」,把两者的差值放大——音量越大,图越往提示词的方向走。常见形式可理解为:最终方向 = 弱条件方向 + 强度 ×(正向方向 − 弱条件方向)。低 CFG 更自由、变化多但可能不听话;适中时主体、风格、构图容易贴住描述;过高时文本方向被过度放大,出现高饱和、硬边、肢体错误。负面提示词是排除清单——「不要水印、不要模糊、不要多手指」,让图远离这些方向。实际 CFG 常见范围 5–8,必须结合模型和 sampler 实测。2022 年 Ho 与 Salimans 的论文提出这条路:训练时随机丢弃条件,采样时用预测差值放大条件影响。
三个边界:CFG 不是越高越准,过高牺牲自然度和多样性;负面提示词不是安全过滤器,替代不了版权和平台审核;不同基础模型、LoRA 和 sampler 对 CFG 敏感度不同,把「masterpiece」当高质量保证、把负面词写成互相冲突的长串,都只会让结果更难解释。
一句心法:CFG 放大正向方向,负面提示词推开不想要的方向,强度都要适中。
课堂练习:现在去学习通完成【M5-01】【M5-02】【M5-03】【M5-04】。
M6:LoRA 与 ControlNet(15分钟)
基础模型什么都能画一点,但项目常要求固定角色、统一画风、严格线稿构图。全量微调很贵,改提示词又不够稳。你可能以为「提示词写得越长越能锁住风格」——单张图确实有用,这个直觉是被单张经验喂出来的。恰恰相反:长 prompt 跨图一致性差,角色细节难复现。
两个工具各管一头。LoRA,说白了是给主厨配一本风格手册:在预训练模型旁边训练低秩适配层,只保存新增的小矩阵、不动原模型权重——文件小、好切换,教会主厨「用某种画风、画某个角色」,但主厨仍是基础模型。ControlNet 像给画师一张骨架稿:从参考图提取线稿、边缘、深度、姿态等控制信号,注入扩散过程,让生成图在构图和空间关系上跟随控制图。一句话分工:LoRA 管「长得像谁、什么画风」,ControlNet 管「在哪里、什么姿势、什么轮廓」。LoRA 论文(2021)证明低秩适配能在 GPT-3 175B 上大幅减少可训练参数;ControlNet 论文(2023)实现了线稿、深度、姿态的可控生成。
三个边界:LoRA 不能脱离匹配的基础模型单独生图,换底模要重新测试——低权重可能无效,高权重可能毁画面;ControlNet 的控制强度和预处理阈值也要调,不是上传参考图就一定复刻好;人像、版权素材和真人风格有法律与伦理风险,商用前确认授权和平台规则。
一句心法:LoRA 小成本学风格和角色,ControlNet 用线稿、姿态和深度控制构图。
课堂练习:现在去学习通完成【M6-01】【M6-02】【M6-03】【M6-04】。
课后作业
- 【作业-01】在 LiblibAI(哩布哩布AI)用同一提示词完成 CFG、负面提示词、采样步数三组对照实验,记录参数、截图、变化结论和使用心得,截止下节课前一天 22:00;操作见《课前准备_第5次课_LiblibAI生图实验指南.md》。
- 实验抓手:每组只动一个参数,提示词、种子、模型、尺寸全部固定,画面变化才能归因到这个参数;负面提示词组保持正向提示词不变,只做「填负面词 / 不填」的对照。
- 最小示例——固定提示词「a cat sitting on a windowsill, watercolor style」、种子不变:第 1 组 CFG 取 3 / 7 / 15 各生成一张;第 2 组在负面词填「lowres, blurry, extra fingers, watermark」前后各生成一张;第 3 组采样步数取 10 / 30 / 50 各生成一张,逐组记录三张图的差异。