AI绘画:第一张AI图片是如何生成的

你好!现在你已经安装好了SD WebUI或ComfyUI,准备生成人生第一张AI图片了。但在点击"生成"之前,让我们先深入理解一下:从你输入Prompt到图片出现在屏幕上,这短短几秒钟内到底发生了什么?理解了这些,你才能更好地控制出图效果。
一、点击"Generate"之前
1.1 你准备了什么
假设你在WebUI的txt2img界面做好了以下设置:
- Checkpoint:DreamShaper(一个通用型大模型)
- 正向Prompt:
1girl, sitting in a coffee shop, reading a book, warm afternoon light, looking out the window, photorealistic, 8k, detailed - 负向Prompt:
low quality, blurry, distorted face, bad anatomy, extra fingers, watermark - 采样器:DPM++ 2M Karras
- 步数:30
- CFG Scale:7
- 分辨率:512×768
- Seed:-1(随机)
- Batch count:1,Batch size:1
当你点击"Generate",下面这些事情在一瞬间发生了。
二、生成过程的逐步拆解
2.1 第一步:文本编码(~50毫秒)
💡 你的Prompt先要变成AI能理解的数学语言。
发生了什么:
SD使用CLIP文本编码器将你的Prompt转化为一个"文本嵌入"向量。具体过程:
-
分词(Tokenization):CLIP将文字拆成Token。比如"1girl"可能被拆成[“1”, “girl”]两个Token;"sitting"是[“sitt”, “ing”]。整个Prompt变成了约75个Token(SD1.5的CLIP限制)。
-
嵌入映射(Embedding):每个Token被映射为一个768维的向量(SD1.5)。一句话变成了一个75×768的数字矩阵。
-
Transformer编码:这些向量经过CLIP的Transformer层,考虑了Token之间的上下文关系。"girl"和"sitting"的语义关联被捕捉到。
-
输出:最终输出一个或多个"文本嵌入"向量,包含了整个Prompt的语义信息。
📝 同时,负向Prompt也经历了同样的过程。正负两个文本嵌入将在后续步骤中共同引导生成方向。
2.2 第二步:潜空间初始化(~1毫秒)
发生了什么:
SD创建了一个"空画布"——但不是在像素空间,而是在潜空间(Latent Space)。
- 根据你设置的分辨率(512×768)和模型压缩比(通常1:8),计算潜空间尺寸:64×96×4(约24,576个数值)
- 用Seed值初始化随机数生成器
- 填充完全随机的噪声数值
⚠️ Seed在这里起到了关键作用:相同Seed+相同设置=完全相同的随机噪声起点→最终出图完全一样。这就是为什么固定Seed可以"复现"某张图。
2.3 第三步:迭代去噪(每步~100-200毫秒)
💡 这是最核心、最耗时的步骤。
SD要进行30次(你的步数设置)迭代,每次迭代:
第1次迭代(步数1/30):
U-Net接收:
- 当前图像(目前是完全的随机噪声)
- 时间戳(告诉U-Net"现在是第1步")
- 文本嵌入(要生成什么内容)
- CFG条件(正负Prompt的引导)
U-Net输出:预测的噪声图
然后进行"去噪操作":当前图像减去一部分预测噪声,得到稍微"干净"一点的图像。
第5次迭代(步数5/30):
此时图像已经隐约有了一些结构和色块。U-Net在CFG的引导下,开始"看到"人物轮廓、窗户形状、咖啡店的氛围。
第15次迭代(步数15/30):
图像的主要结构已经清晰:人物的姿势、咖啡店的环境、光线方向都基本确定。后续的步骤主要是细化细节。
第30次迭代(步数30/30,最后一步):
图像细节已经非常丰富。这最后一步主要是微调,让边缘更清晰、纹理更自然。
2.4 第四步:CFG引导(贯穿去噪全程)
💡 CFG Scale在每一步去噪中都扮演"方向指引"的角色。
计算过程:
- 做一次"无条件"预测(不看Prompt,自由去噪)→ 得到A
- 做一次"有条件"预测(看Prompt,按描述去噪)→ 得到B
- 最终结果 = A + CFG × (B - A)
CFG=1时:最终结果几乎等于无条件预测(AI自由发挥)
CFG=7时:有明确的Prompt引导,但保留一定自由度
CFG=15时:强行贴近Prompt,但画面可能过饱和/过曝
2.5 第五步:VAE解码(~50毫秒)
发生了什么:
VAE解码器将潜空间的"压缩图像"(64×96×4)"解压"回像素空间(512×768×3)。
这个过程类似于:
- 你有一个极其压缩的.jpg文件(潜空间图像)
- VAE将其解压为完整的图片
- 解压的同时,VAE补充了色彩信息、增强了细节
📝 VAE的质量直接影响最终图片的色彩饱和度、锐度和细节丰富度。
2.6 第六步:后处理与保存(~10毫秒)
如果启用了以下功能,此阶段会执行:
- Hires.fix:用较低的重绘幅度进行第二轮放大生成
- ADetailer:面部/手部修复
- Upscaler:使用放大算法增加分辨率
完成后,图片保存到你设置的输出目录,并显示在WebUI界面中。
三、影响出图效果的关键因素
3.1 为什么同样的Prompt会出不同的图
因为Seed=-1(随机),初始噪声每次不同。即使其他参数完全一致,不同的初始噪声会导致完全不同的出图结果。这就是为什么你可以点100次Generate得到100张不同的图。
3.2 为什么有些Prompt出图好看,有些不行
这取决于:
- Prompt质量:是否清晰、具体、使用了恰当的词汇
- 模型匹配:Prompt是否在模型"见过"的领域内(比如在一个动漫模型上用写实Prompt效果不会好)
- CFG平衡:CFG太低则方向迷失,太高则过饱和失真
- 步数充足:步数太少则细节不足
3.3 为什么多生成几次总有一次好的
AI绘画有概率性的成分。初始噪声和每一步去噪的微小差异累积起来,会产生完全不同的结果。这就是为什么专业的AI画师会大量出图然后从中挑选——用数量换质量。
四、实操:从"能出图"到"出好图"
4.1 一个简单的迭代流程
① 先用简单Prompt测试模型是否正常加载
② 逐步丰富Prompt,每次加一个维度观察变化
③ 调整CFG找到最佳引导值
④ 增加步数看细节是否改善
⑤ 用XYZ Plot对比不同参数组合
4.2 学会"阅读"出图结果
- 画面模糊→步数太少或CFG太低
- 颜色过饱和/过曝→CFG太高
- 出现多头/多手→分辨率超出模型训练范围
- 手指畸形→这是SD的常见问题,用ADetailer或负向Prompt改善
- 人物面部崩坏→可能是模型问题或分辨率问题
✅ 现在你已经完全理解了AI图片的生成过程。理解这些能帮助你更好地调优参数、诊断问题。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_43151418/article/details/164249794




