欢迎光临
我们一直在努力

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

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图片的生成过程。理解这些能帮助你更好地调优参数、诊断问题。

    赞(0)
    未经允许不得转载:171主机测评 » AI绘画:第一张AI图片是如何生成的
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址