游乐游手机版
首页/AI热点日报/热点详情

十分钟搞懂Stable Diffusion运行原理

类型:热点整理2026-07-14
揭秘Stable Diffusion如何利用AI魔法将文字转化为惊艳图像,10分钟掌握核心技术与原理! 核心内容: Stable Diffusion的技术背景与行业深远影响 文生图核心原理与关键模块拆解 AI绘画的典型应用场景与未来发展趋势 AIGC热潮正以迅猛之势席卷全球,Stable Diffu

揭秘Stable Diffusion如何利用AI魔法将文字转化为惊艳图像,10分钟掌握核心技术与原理!

核心内容:

  • Stable Diffusion的技术背景与行业深远影响
  • 文生图核心原理与关键模块拆解
  • AI绘画的典型应用场景与未来发展趋势

AIGC热潮正以迅猛之势席卷全球,Stable Diffusion的开源发布将AI图像生成推向了全新高度。尤其是ControlNet和T2I-Adapter等控制模块的相继问世,使生成过程更加可控,也悄然重塑着众多行业的生产模式。面对其惊艳表现,人们难免好奇背后的技术奥秘。本文整理了学习过程中记录的技术要点,重点聚焦Stable Diffusion的运行机制,旨在帮助读者知其然,更知其所以然。

一 背景介绍

AI绘画作为AIGC(人工智能创作内容)的重要分支,无疑是2022年以来AI领域最炙手可热的话题之一。凭借独特的创意与便捷的创作工具,它迅速走红,广受各界关注。举两个简单案例:左侧利用ControlNet的新魔法,将一张四位闺蜜在沙滩边的普通合影转变为唯美动漫风格;右侧是Midjourney v5最新版本解锁的惊人能力——只需输入“旧厂街风格,带着浓浓90年代氛围感”,AI即可一键生成极具真实感的图片。

Stable Diffusion是2022年发布的一款文本到图像的潜在扩散模型,由CompVis、Stability AI和LAION的研究人员共同构建。值得一提的是,Stability AI公司在2022年10月完成了1.01亿美元的融资,估值已超过10亿美元。本文将在第二部分重点介绍Stable Diffusion的技术思路,第三部分深入分析各个重要模块的运行机制,最后对AI绘画进行总结。


二 原理简介

Stable Diffusion作为Diffusion模型的改进版本,通过引入隐向量空间突破了Diffusion模型的速度瓶颈。它不仅能用于文生图任务,还能应用于图生图、特定角色刻画,甚至超分或上色任务。本文作为基础原理介绍,将重点解析最常用的“文生图”主线,梳理Stable Diffusion的计算思路,并剖析各个关键组成模块。

下图展示了一个基本的文生图流程——将中间的Stable Diffusion结构视为一个黑盒,黑盒输入为文本串“paradise(天堂)、cosmic(广阔的)、beach(海滩)”,利用该技术,输出了右侧符合输入要求的生成图片:蓝天白云和一望无际的广阔海滩。

Stable Diffusion的核心思想是:每张图片都遵循一定的规律分布,通过文本中蕴含的分布信息作为引导,将一张纯噪声图片逐步去噪,最终生成与文本信息相匹配的图片。它实际上是一个组合系统,内部包含多个模型子模块。接下来,我们将逐步拆解这个黑盒。

Stable Diffusion首要解决的问题是如何将人类输入的文字串转换为机器可理解的数字信息。这里采用了文本编码器(蓝色模块),它能够将文字转换成计算机能理解的数学表示。输入为文字串,输出是一系列包含输入文字信息的语义向量。有了这个语义向量,便可作为后续图片生成器(粉黄组合框)的控制输入,这也是Stable Diffusion技术的核心模块。图片生成器可拆分为两个子模块(粉色模块+黄色模块)进行介绍。下面介绍运行时使用的主要模块:

  • 文本编码器(蓝色模块):功能是将文字转换成计算机能理解的数学表示。第三部分将介绍其训练方式以及如何理解文字。目前只需知道它采用CLIP模型,输入文字串,输出一系列包含文字信息的语义向量。
  • 图片信息生成器(粉色模块):这是Stable Diffusion与Diffusion模型的区别所在,也是性能提升的关键。两点区别如下:
    ① 图片信息生成器的输入输出均为低维图片向量(非原始图片),对应上图中的粉色4×4方格。文本编码器的语义向量作为图片信息生成器的控制条件,生成的低维图片向量将进一步输入到后续的图片解码器(黄色)生成图片。(注:原始图片分辨率为512×512,含RGB三通道,可理解为由RGB三个元素组成;低维图片向量会降至64×64维度)
    ② Diffusion模型通常直接生成图片,没有中间生成低维向量的过程,计算量更大,在速度和资源利用上均不及Stable Diffusion。

那么低维空间向量是如何生成的呢?在图片信息生成器中,由一个Unet网络和一个采样器算法共同完成——Unet网络负责逐步执行生成过程,采样器算法控制图片生成速度。第三部分将详细介绍这两个模块。Stable Diffusion采样推理时,生成迭代通常重复30~50次,低维空间变量在迭代过程中从纯噪声逐渐变为富含语义信息的向量,图片信息生成器中的循环标志代表多次迭代。

  • 图片解码器(黄色模块):输入为图片信息生成器的低维空间向量(粉色4×4方格),通过升维放大得到一张完整图片。由于输入到图片信息生成器时进行了降维,因此需要这个升维模块。它仅在最后阶段进行一次推理,也是获得生成图片的最终步骤。

那么扩散过程究竟发生了什么?

  • 扩散过程发生在图片信息生成器中:将初始纯噪声隐变量输入Unet网络后,结合语义控制向量,重复30~50次以不断去除噪声,并持续向隐向量中注入语义信息,最终得到一个具有丰富语义信息的隐空间向量(右下图深粉方格)。采样器负责统筹整个去噪过程,按照设计模式在去噪的不同阶段动态调整Unet的去噪强度。
  • 更直观地看,如图3所示,将初始纯噪声向量和最终去噪后的隐向量分别输入到后面的图片解码器,观察输出图片的区别。纯噪声向量本身不含任何有效信息,解码出的图片也是纯噪声;而迭代50次去噪后的隐向量已耦合了语义信息,解码出的自然是一张包含语义信息的有效图片。

至此,我们大致介绍了Stable Diffusion是什么以及各个模块的思路,并简要梳理了扩散过程。第三部分将继续分析各个重要组成模块的运行机制,进一步深入理解Stable Diffusion的工作原理。

三 模块分析

第二部分从零基础角度介绍了Stable Diffusion的技术思路,这部分将更细致地介绍文生图技术。训练阶段和采样阶段的总体框架如图4所示,可划分为3个大模块:PART1-CLIP模型,PART2-Unet训练,PART3-采样器迭代。

训练阶段包含PART1 CLIP模型和PART2 Unet训练,分为三步:

  1. 用AutoEncoderKL自编码器将输入图片从像素空间映射到隐向量空间,将RGB图片转换为隐式向量表达。训练Unet时,自编码器参数已训练好并固定,自编码器将输入图片张量降维得到隐向量。
  2. 用FrozenCLIPEmbedder文本编码器编码输入提示词Prompt,生成向量表示context。这里需规定文本最大编码长度和向量嵌入大小。
  3. 对输入图像的隐式向量施加不同强度的噪声,将加噪后的隐向量输入UNetModel以输出预估噪声,与真实噪声标签对比计算KL散度损失,并通过反向传播更新UNetModel参数。引入文本向量context后,UNetModel在训练时将其作为condition,利用注意力机制更好地引导图像向文本向量方向生成。

采样阶段包含PART1 CLIP模型和PART3采样器迭代,同样分为三步:

  1. 用FrozenCLIPEmbedder文本编码器将输入提示词Prompt编码,生成维度为[B, K, E]的向量表示context,与训练阶段第2步一致。
  2. 利用随机种子随机生成固定维度的噪声隐空间向量,利用训练好的UNetModel模型,结合不同采样器(如DDPM/DDIM/PLMS)迭代T次不断去除噪声,得到具有文本信息的隐向量表征。
  3. 用AutoEncoderKL自编码器将上述图像隐向量解码,得到映射到像素空间的生成图像。

上面介绍了Stable Diffusion的总体架构,接下来进一步分析每个重要组成模块,分别是Unet网络、采样器和CLIP模型。

1 Unet网络

Stable Diffusion中的UNetModel采用Encoder-Decoder结构来预估噪声,网络结构如图5所示。

模型输入包括3个部分:(1) 图像表示,隐空间向量输入的维度为[B, Z, H/8, W/8];(2) timesteps值,维度为[B, ];(3) 文本向量表示context,维度为[B, K, E]。其中[B, Z, H, W]分别表示[batch_size图片数,C隐空间通道数,height长度,weight宽度],K和E分别表示文本最大编码长度max length和向量嵌入大小。

模型使用DownSample和UpSample进行样本的下上采样,在采样模块之间还有黑色虚线框的ResBlock和SpatialTransformer,分别接收timesteps信息和提示词信息(此处仅画出一处作为参考)。ResBlock模块的输入包括①来自上一个模块的输入,②timesteps对应的嵌入向量timestep_emb(维度为[B, 4*M],M为可配置参数);SpatialTransformer模块的输入包括①来自上一个模块的输入,②提示词Prompt文本的嵌入表示context。以context作为注意力机制中的condition,学习提示词Prompt与图像的匹配程度。最后,UNetModel不改变输入和输出大小,隐空间向量的输入输出维度均为[B, Z, H/8, W/8]。

ResBlock网络

ResBlock网络有两个输入:①来自上一个模块的输入,②timesteps对应的嵌入向量timestep_emb(维度为[B, 4*M],M为可配置参数),网络结构如下。

timestep_embedding的生成方式,采用“Attention is All you Need”论文中的Transformer方法,通过sin和cos函数再经过两个Linear进行变换。

SpatialTransformer结构

SpatialTransformer包含模块较多,有两个输入:①来自上一个模块的输入,②提示词Prompt文本的嵌入表示context作为condition。两者使用cross attention进行建模。其中,SpatialTransformer内部的注意力模块CrossAttention将图像向量作为Query,文本表示context作为Key&Value,利用Cross Attention模块学习图像与文本对应内容的相关性。

注意力模块的作用是:当输入提示词生成图片时,比如输入“一匹马在吃草”,模型能够捕捉图文相关性以及文本中的重点信息——看到“马”时,注意力机制会重点突出图像中“马”的生成;看到“草”时,注意力机制会重点突出图像中“草”的生成,从而实现与文本匹配的图片生成。

Unet如何训练?

Stable Diffusion中Unet的学习目标是什么?简单来说就是去噪。为去噪任务设计训练集时,可以通过向普通照片添加噪声来获得训练样本。具体来说,对于下面这张照片,用random函数生成从强到弱的多个强度噪声,例如图8中0~3有4个强度的噪声。训练时,将噪声强度和加噪后的图片输入Unet,计算预测噪声图与真实噪声图之间的误差损失,通过反向传播更新Unet参数。

训练好Unet后,如图9所示,从加噪图片中推断出噪声,即可用加噪图减去噪声来恢复原图。重复此过程:第一步预测噪声图后减去噪声,用更新后的加噪图进行第二步去噪,最终即可得到一张清晰的生成图片。由于使用高斯分布的KL散度损失,Unet生成图片实际上接近训练集分布,与训练集具有相同的像素规律。也就是说,使用真实场景的写实训练集训练模型,结果就会呈现写实风格,尽量符合真实世界的规律。

2 采样器迭代

这部分介绍采样阶段中扩散模型如何多次迭代去除噪声,进而得到生成图片的潜在空间表示。提到采样器,要从最基础的DDPM(Denoising Diffusion Probabilistic Models)说起。DDPM的推导较为复杂,这里用朴素的大白话结合几个关键公式来理清思路。

  1. 扩散模型的思路是:训练时先在图片上不断加噪以破坏图片,推理时对加噪后的图片去噪以恢复原始图片。训练过程的T次迭代中,可以推导出一个重要特性:任意时刻的Xt可由X0和β表示,任意时刻的X0也可由Xt和噪声z求得。

其中,第一行里的a和β可描述噪声强度;第二行,X0为初始的干净图片,增加噪声z后生成加噪图片Xt,后一个公式由前一个变换而来,表示加噪图片减去一定强度的噪声,得到图片X0

  1. 问题转化为如何求逆向阶段的分布。给定一张加噪后的图片,如何才能求得前一时刻被破坏得没那么严重的略清晰图片?经过论文推导,又得出两个重要结论:①逆向过程也服从高斯分布;②在已知原始清晰图片的情况下,能通过贝叶斯公式将逆向过程转换为前向过程,进而算出逆向过程的分布。公式上体现如下:

第一行指的是给定X0时,逆向过程也服从高斯分布,并且利用贝叶斯公式将逆向过程转换为前向过程——前向过程是不断加噪的过程,可被计算;第二行指的是,Xt和X0由于可以相互转换,从公式上看,均值也可从Xt减去不同噪声得到。

  1. 算出逆向过程分布后,即可训练一个模型尽量拟合该分布,且模型预估结果也应服从高斯分布:

其中,求均值的公式里仅包含Xt和噪声。由于Xt在训练时已知,只需得到模型输出的预估噪声,该值可用模型以Xt和t为输入预估得到。

  1. 将逆向过程分布(即Label值)与模型的预估分布进行比较。由于①KL散度可用于描述两个分布之间的差异,②多元高斯分布的KL散度有闭式解,经过推导发现损失函数变为计算两个高斯分布的KL散度

其中,q分布是逆向过程分布,p是模型预估分布,训练损失是求两个高斯分布的KL散度,即两个分布之间的差距。

  1. DDPM的训练过程和采样过程的伪代码如下图所示。由于DDPM的高质量生成依赖于较大的T(通常为1000以上),导致Diffusion前向过程非常缓慢,因此后续又出现了DDIM、PLMS和Euler A等优化版采样器。

其中,训练阶段实际上是求真实噪声与模型预估噪声的MSE误差,再对Loss求导反向传播以训练模型;采样阶段,求得均值和方差后,采用重参数技巧来生成样本。

总结一下,扩散模型采样阶段是对加噪后的图片去噪以恢复原始图片。基于①任意时刻的图片均可由原始图片和噪声表示,②逆向过程的图片参数符合高斯分布,优化目标转化为计算逆向分布与预估分布的KL散度差异,并在采样阶段使用重参数技巧来生成图片。

3 CLIP模型

前面提到,提示词Prompt文本利用文本模型转换为嵌入表示context,作为Unet网络的condition条件。问题来了:语义信息和图片信息属于两种模态,如何用attention耦合到一起呢?这里介绍用于提取语义信息的CLIP模型。

语义信息的好坏直接影响最终生成图片的多样性和可控性。像CLIP这样的语言模型是如何训练出来的?又是如何结合文本串与计算机视觉的呢?首先,需要一个具有文本串和计算机视觉配对的数据集。CLIP模型使用的训练集达到了4亿张,通过从网络上爬取图片及相应的标签或注释。

CLIP模型结构包含一个图片encoder和一个文字encoder,类似于推荐场景中常用的经典双塔模型。

  • 训练时,从训练集随机取出一些样本(图片和标签配对即为正样本,不匹配则为负样本),CLIP的训练目标是预测图文是否匹配。
  • 取出文字和图片后,用图片encoder和文字encoder分别转换为两个embedding向量,称为图片embedding和文字embedding。
  • 用余弦相似度比较两个embedding向量的相似性,并根据标签与预测结果的匹配程度计算损失函数,用于反向更新两个encoder参数。
  • CLIP模型完成训练后,输入配对的图片和文字,这两个encoder即可输出相似的embedding向量;输入不匹配的图片和文字,输出向量的余弦相似度就会接近于0。

推理时,输入文字可通过text encoder转换为text embedding,也可将图片用image encoder转换为image embedding,两者相互作用。在生成图片的采样阶段,将文字输入用text encoder转换为text embedding,作为Unet网络的condition条件。

四 本文小结

AI绘画的各种应用不断涌现,目前关于Stable Diffusion的文章主要偏向应用介绍,对其技术逻辑的阐述还相对较少。本文主要介绍了Stable Diffusion的技术结构以及各个重要组成模块的基本原理,希望能帮助读者了解Stable Diffusion如何运行,从而更好地控制AI绘画生成。AI绘画虽然仍面临一些技术挑战,但随着技术持续迭代与发展,相信AI能在更多领域展现出令人惊喜的生产力。

来源:https://www.53ai.com/news/LargeLanguageModel/2025062449271.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。