AI如何生成图片?一文读懂扩散模型核心原理

作者:JC2026.11.04 04:27浏览量:0

简介:AI 生成图片看似神奇,背后是扩散模型在完成“由噪声到图像”的逐步演化。本文系统拆解文生图的核心链路:去噪网络如何训练、噪声如何一步步被去除、文本提示词如何控制生成方向,并附训练与推理伪代码及常用调参建议,帮助开发者建立对文生图原理的完整认知。

一、引言:文生图到底在做什么

近两年,“输入一句话、输出一张图”的文生图(Text-to-Image)能力快速普及,插画、海报、产品概念图等场景都能看到它的身影。对开发者来说,比“惊叹效果”更有价值的,是理解它背后的生成机制:模型为什么能凭空“画”出一张结构合理、语义匹配的图?本文不依赖任何具体产品,从扩散模型(Diffusion Model)这一业界主流技术路线出发,把文生图原理拆解成“图像生成”与“文本控制”两条主线,逐一讲清。

任何文生图模型本质上要解决两个问题:

  1. 生成能力:如何把一张纯粹的随机噪声图,变成一张内容合理、细节丰富的正常图像;
  2. 控制能力:如何让生成结果与用户输入的文本描述(prompt)关联起来,做到“指哪画哪”。

二、整体思路:从纯噪声到图像的“雕刻”过程

目前业界主流的文生图模型基本都建立在扩散模型之上。它的核心思想可以用一个类比来理解:雕塑家拿到一块大理石,并不是“凭空捏”出雕像,而是不断凿去多余的部分,让雕像从石料中“显形”。扩散模型生成图片的方式与此类似——从一张全是噪点的图出发,一步步“去掉不该有的噪声”,让图像逐渐显形,最终得到与文字描述匹配的结果。

这里有一个容易被忽略的关键点:去噪不是一步完成的。从纯噪声到成品图之间,隔着几十到上千个中间状态,每个状态的噪声程度不同。模型的任务被拆解成“每次只去一小部分噪声”的重复小步骤,这大幅降低了学习难度,也是扩散模型效果稳定、生成质量高的根本原因。

三、去噪网络:模型到底“学”到了什么

负责执行去噪的,通常是一个基于 UNet 架构的深度神经网络(业内常称 Denoising UNet)。UNet 形如字母 U:先通过编码器把输入逐层压缩成高层特征,再通过解码器逐层还原回原尺寸,中间用跳跃连接(skip connection)保留细节信息。这种“压缩—还原”的结构天然适合图像到图像的转换任务,去噪正是其中之一。

那么训练之后,模型里存的到底是什么?

可以粗略理解为:模型在训练中“看过”海量图片,把图片的关键特征识别并压缩存储下来。它不是精确保存每一张原图(那样存储量根本不现实),而是像人脑一样形成一种“模糊的印象记忆”——记住猫有怎样的轮廓、天空通常是什么颜色、人脸五官大致的比例关系。工作时输入一张噪声图,模型依据这些特征把噪声“整理”成一幅结构完整的图像。

一个思想实验能帮助理解:如果只用一张图片反复训练,模型记住的就只有这一张图的信息,最终生成结果永远是这张图本身;如果用一万张不同图片训练,生成结果就是这一万张图内容的随机组合与重新演绎。训练语料的广度,直接决定了生成结果的多样性。

四、加噪与去噪:一条可逆的演化链

要理解“如何学会去噪”,得先看噪声是怎么加进去的。

定义一张正常图片为 X0,完全随机的噪声图为 XT。在训练数据的准备阶段(前向扩散过程),我们对 X0 分 T 个时间步逐步添加噪声:每往后一步,图片被噪声覆盖得更多一点,直到第 T 步变成几乎与纯随机噪声无异。这样每个时间步 t 都对应一个噪声程度介于两者之间的中间状态 Xt。

模型要学的,正是这条演化链的逆过程:输入一张处于某个噪声水平的图,预测出“当前这层噪声长什么样”,把噪声减掉,得到噪声更少一点的图,如此循环往复,一步步退回清晰图像。

为什么必须分步?如果要求模型一步从纯噪声跳到成品图,这个映射跨度太大、规律太复杂,网络几乎学不动;而“每次只去除一小部分噪声”是一个局部、平滑、可重复的规律,网络可以学得非常稳。步数越多,每步修正幅度越小,过程越平滑,但耗时也越长——这正是后面调参时“去噪步数”的由来。

五、噪声预测:训练目标是如何构造的

具体到单次训练,做法出人意料地简单:

  1. 从训练集取一张正常图片 A;
  2. 随机生成一张与 A 同尺寸的噪声图 X;
  3. 按某个随机时间步 t 的强度把 X 混入 A,得到带噪图片 A1(随 t 不同,混合比例不同);
  4. 把 A1 连同 t 送进模型,让模型预测“掺进来的噪声是什么”;
  5. 用预测噪声与真实噪声 X 的均方误差作为损失,反向传播更新参数。

模型只看到 A1,看不到 X,却要推理出 X——一旦学会这件事,去噪就水到渠成:A1 减去预测出的噪声 ≈ A,一张更清晰的图就被“反解”出来了。对应的示意伪代码如下:

  1. # 训练阶段(示意伪代码)
  2. image = sample_from_dataset() # 1. 取真实图片
  3. noise = randn_like(image) # 2. 采样高斯噪声
  4. t = randint(1, T) # 3. 随机选一个时间步
  5. noisy = add_noise(image, noise, t) # 按 t 的强度混合得到带噪图
  6. pred = unet(noisy, t) # 4. 模型预测噪声
  7. loss = mse_loss(pred, noise) # 5. 让预测噪声逼近真实噪声

在数以亿计的“加噪—预测”重复中,模型把海量图像的统计规律内化进了参数。所谓“凭空作画”,本质是对训练分布的采样与重组。

六、文本控制:prompt 是如何生效的

解决了“能生成”,还差“听指挥”。文本控制主要靠三层机制配合完成。

第一层:语义编码。 一段文字先经过文本编码器(通常是基于注意力机制的文本理解网络),被转换成一串携带语义信息的向量。比如“戴墨镜的猫”会被映射为特征空间中的一组数值,“猫”“墨镜”“戴”这些语义要素都以向量形式参与计算。

第二层:条件注入。 去噪网络的每一层中都设计了交叉注意力结构,让图像特征在去噪的每个时间步、每个网络层级上都能“查询”文本语义向量,把文本约束持续不断地注入生成过程。可以这样想象:模型每去掉一层噪声,都要回头“看一眼”文字要求,确保演化方向不跑偏。

第三层:引导强度。 推理时普遍采用无分类器引导技术:同一时刻并行计算“有文本条件”与“无文本条件”两组预测,再按引导系数放大两者差值。系数越高,结果越贴合 prompt,但过高也可能画面过饱和、细节失真。这解释了一个常见现象:提示词写得很重,画面却变得浓艳僵硬——往往是引导强度开太大了。

七、潜在空间:让生成又快又省的秘密

直接在像素空间做扩散开销巨大:一张 512×512 的彩色图片就有约 78 万个数值维度,逐时间步去噪成本惊人。主流方案是引入变分自编码器(VAE)做两级转换:

  • 编码:把图像压缩成尺寸仅为原来几十分之一的潜在表示,同时最大限度保留视觉信息;
  • 去噪:整个扩散过程都在潜在空间完成,数据维度大幅降低;
  • 解码:得到最终潜在表示后,再由解码器还原为像素级图片。

这相当于把“雕刻”拆成粗雕与精修两段:粗雕在低维空间快速完成,最后细节由解码器补齐。实践中显存占用与生成速度的显著改善,大多源于这一设计。

八、完整推理链路拆解

把前面的模块串起来,一次文生图推理的完整流程是:

  1. 文本编码:prompt 送入文本编码器,得到语义向量;
  2. 初始化:在潜在空间随机采样一个噪声张量(随机种子决定其初始状态);
  3. 循环去噪:从第 T 步到第 0 步,去噪网络结合文本向量逐步预测并去除噪声,期间由采样器决定每步的步长策略;
  4. 解码输出:把最终的潜在表示送入解码器,得到像素图像。
  1. # 推理阶段(示意伪代码)
  2. text_emb = text_encoder(prompt) # 文本 -> 语义向量
  3. latent = randn(seed=seed) # 初始化随机潜在噪声
  4. for t in reversed(range(T)): # 从高噪声到低噪声
  5. cond = unet(latent, t, text_emb) # 有条件预测
  6. uncond = unet(latent, t, null) # 无条件预测
  7. pred = uncond + s * (cond - uncond) # 按引导系数 s 合成
  8. latent = sampler.step(latent, pred, t) # 单步去噪
  9. image = vae_decode(latent) # 潜在表示 -> 像素图像

九、常用参数与调优建议

理解原理之后,常用参数的含义便一目了然:

  • 去噪步数:决定噪声被切分成多少步去除。太少则每步跨度大,画面粗糙、结构崩坏;太多则边际收益递减,白白拉长耗时。通常存在一个“够用区间”,超过之后提升有限。
  • 引导强度:即上文系数。偏低时模型“自由发挥”,与 prompt 贴合度不足;偏高时语义贴合但画面浓艳僵硬,需要按素材类型权衡。
  • 随机种子:固定种子可复现同一结果,适合调试提示词;换种子则相当于换一次“抽卡”。
  • 生成分辨率:应尽量贴近模型训练时的分辨率分布,过大或过小都容易出现构图异常。

十、工程落地:自建还是上云

原理之外,工程选型同样重要。自建模型意味着要准备训练或微调算力、推理显存、模型版本管理与内容审核链路,适合对生成风格有深度定制需求的团队。而对多数业务团队而言,把精力放在提示词工程、业务工作流编排与结果筛选上,直接通过云上通用文生图能力以 API 方式接入是更务实的选择——例如借助百度智能云提供的生成类能力,可省去底层模型运维,快速验证业务闭环。无论走哪条路,都建议同步建设内容安全与合规策略,包括输入提示词过滤与输出图像审核,这对面向公众的产品尤为重要。

十一、小结

回看全文,AI 生成图片并不神秘,它由四块积木搭成:以 UNet 为骨架的去噪网络负责“会画”;前向加噪、反向去噪的链条负责“怎么练”;文本编码与交叉注意力负责“听懂要求”;潜在空间优化负责“画得又快又省”。理解了这套机制,再去面对步数、引导强度、种子这些参数时,就不再是玄学调参,而是有的放矢的工程决策。