一、技术解读:Stable Diffusion XL(SDXL)核心技术
前文我们详细拆解了潜在扩散模型(LDMs)的核心架构,包括感知图像压缩、潜在扩散生成和通用条件机制,这三大模块构成了 Stable Diffusion 系列模型的技术基础。
Stable Diffusion XL(SDXL) 是 Stable Diffusion 1.x 的重大改进版本,仍然基于 LDMs 的核心框架,通过精细优化、架构升级和创新条件设计,重点解决了前代模型在高分辨率生成、细节保真度和场景灵活性上的不足,从而实现了与最先进图像生成器相竞争的性能。
SDXL 的核心技术目标是:在保留 LDMs "潜在空间高效计算" 优势的基础上,通过架构缩放、条件增强、自编码器优化和多阶段生成,突破高分辨率图像合成的细节瓶颈,同时提升模型的可控性和场景适应能力。
1.1 SDXL的技术根基:未脱离LDMs核心,聚焦"细节与分辨率"优化
SDXL本质上是LDMs的工业级优化版本 ,其核心生成逻辑仍遵循LDMs的潜在扩散损失函数,仅在原有基础上增加多维度条件约束,核心公式延续LDMs并做扩展:
L L D M − S D X L = E E ( x ) , y , c , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) , c ) ∥ 2 2 ] L_{LDM-SDXL} = \mathbb{E}{\mathcal{E}(x), y, c, \epsilon \sim \mathcal{N}(0,1), t} \left[ \| \epsilon - \epsilon{\theta}(z_t, t, \tau_{\theta}(y), c) \|_2^2 \right] LLDM−SDXL=EE(x),y,c,ϵ∼N(0,1),t[∥ϵ−ϵθ(zt,t,τθ(y),c)∥22]
其中 z t = E ( x t ) z_t=\mathcal{E}(x_t) zt=E(xt)为加噪图像的潜在表示, y y y为文本条件,c c c为SDXL新增的微条件(含大小、裁剪、宽高比) , ϵ θ \epsilon_\theta ϵθ为升级后的大尺度UNet去噪模型。
SDXL未改变LDMs"将扩散过程转移至潜在空间"的核心设计,这也是其能继续保持"消费级GPU友好"的根本原因。与SD1.x相比,SDXL的核心改进思路是:不改变LDMs的整体范式,而是对构成LDMs的三大核心模块进行"纵向深化" ,同时相比传统自回归模型 (如VQGAN+Transformer),SDXL依托扩散模型的非自回归生成特性实现并行计算,解决了自回归模型顺序生成的效率瓶颈,这也是SDXL能兼顾高分辨率和生成效率的关键。
1.2 SDXL核心技术改进详解
1.2.1 架构与规模优化:3倍UNet+双文本编码器,强化语义与细节建模
潜在扩散生成模块(UNet)是LDMs生成图像的核心,SD1.x的UNet因规模有限,在高分辨率生成时易出现细节模糊、语义偏差等问题。SDXL的首要改进是扩大UNet架构规模、优化Transformer块分布,并引入双文本编码器,从根本上提升模型的语义理解和细节生成能力------这也是SDXL最核心的架构革新。
改进1:UNet架构缩放与Transformer块异构分布
SDXL的UNet主干网络规模是SD1.x的3倍,参数达到26亿 (SD1.x约8.6亿),参数增加的核心是更多的注意力块和更大的交叉注意力上下文。
Transformer块异构分布:不同于SD1.x在UNet各层级均匀分布Transformer块,SDXL在UNet的特征层级中采用非均匀分布策略,公式化表示为UNet的特征提取与重建过程:
z t l = DownSample ( z t l − 1 ) + ConvBlock ( z t l − 1 ) + n l ⋅ TransformerBlock ( z t l − 1 , τ ( y ) , c ) z ^ t l − 1 = UpSample ( z ^ t l ) + ConvBlock ( z ^ t l ) + n l ⋅ TransformerBlock ( z ^ t l , τ ( y ) , c ) + z t l − 1 \begin{align*} z_t^l &= \text{DownSample}(z_t^{l-1}) + \text{ConvBlock}(z_t^{l-1}) + n_l \cdot \text{TransformerBlock}(z_t^{l-1}, \tau(y), c) \\ \hat{z}_{t}^{l-1} &= \text{UpSample}(\hat{z}_t^l) + \text{ConvBlock}(\hat{z}_t^l) + n_l \cdot \text{TransformerBlock}(\hat{z}_t^l, \tau(y), c) + z_t^{l-1} \end{align*} ztlz^tl−1=DownSample(ztl−1)+ConvBlock(ztl−1)+nl⋅TransformerBlock(ztl−1,τ(y),c)=UpSample(z^tl)+ConvBlock(z^tl)+nl⋅TransformerBlock(z^tl,τ(y),c)+ztl−1
其中 l l l为UNet的特征层级, n l n_l nl为第 l l l层的Transformer块数量(SDXL中 n l n_l nl取0、2、10,SD1.x为固定值), DownSample/UpSample \text{DownSample/UpSample} DownSample/UpSample为下/上采样操作, ConvBlock \text{ConvBlock} ConvBlock为卷积块,保留卷积对图像空间结构的归纳偏置。
核心优化:省略最高特征层的Transformer块( n l = 0 n_l=0 nl=0)、移除8倍下采样的最低特征层,减少冗余计算,同时在中低特征层增加Transformer块,强化细节特征的注意力建模。
改进2:双文本编码器融合,提升提示词遵循度
SDXL摒弃SD1.x单一CLIP编码器,采用双文本编码器融合 策略,将文本特征编码为更丰富的表示,公式化表示为:
τ θ ( y ) = Concat ( τ CLIP-L ( y ) − 2 , τ OpenCLIP-BigG ( y ) − 2 ) ⊕ GlobalPool ( τ OpenCLIP-BigG ( y ) ) \tau_{\theta}(y) = \text{Concat}(\tau_{\text{CLIP-L}}(y){-2}, \tau{\text{OpenCLIP-BigG}}(y){-2}) \oplus \text{GlobalPool}(\tau{\text{OpenCLIP-BigG}}(y)) τθ(y)=Concat(τCLIP-L(y)−2,τOpenCLIP-BigG(y)−2)⊕GlobalPool(τOpenCLIP-BigG(y))
其中:
- τ CLIP-L ( y ) \tau_{\text{CLIP-L}}(y) τCLIP-L(y)、 τ OpenCLIP-BigG ( y ) \tau_{\text{OpenCLIP-BigG}}(y) τOpenCLIP-BigG(y)分别为CLIP ViT-L和OpenCLIP ViT-bigG对文本 y y y的编码输出;
- − 2 _{-2} −2表示取编码器倒数第二层输出,避免最后一层的过度压缩;
- Concat ( ⋅ ) \text{Concat}(\cdot) Concat(⋅)为通道维度拼接, GlobalPool ( ⋅ ) \text{GlobalPool}(\cdot) GlobalPool(⋅)为全局池化, ⊕ \oplus ⊕为特征拼接;
- 最终融合后的文本特征 τ θ ( y ) \tau_{\theta}(y) τθ(y)维度远大于SD1.x的单一文本特征,作为交叉注意力的K/V向量,提升文本与图像的匹配度。
1.2.2 微条件化技术:无需额外监督,解决训练与生成痛点
SDXL引入大小条件 和裁剪条件 两种微条件化技术,将训练过程中的数据属性转化为模型输入条件,无需额外标注,公式化表示为统一的微条件嵌入 c c c,解决SD1.x训练数据浪费、生成裁剪伪影的问题。论文中明确提及,该条件增强策略也被用于自回归模型 ,此处补充自回归图像生成的核心公式,并对比SDXL的非自回归扩散生成的优势。
改进1:以图像大小为条件,提升训练效率与生成灵活性
针对SD1.x因最小图像尺寸要求导致的训练数据丢失问题,SDXL将原始图像分辨率 作为条件输入,嵌入过程公式化表示为:
c size = FourierEmbedding ( h original ) ⊕ FourierEmbedding ( w original ) c_{\text{size}} = \text{FourierEmbedding}(h_{\text{original}}) \oplus \text{FourierEmbedding}(w_{\text{original}}) csize=FourierEmbedding(horiginal)⊕FourierEmbedding(woriginal)
其中:
- h original h_{\text{original}} horiginal、 w original w_{\text{original}} woriginal为图像未缩放前的原始高度和宽度;
- FourierEmbedding ( ⋅ ) \text{FourierEmbedding}(\cdot) FourierEmbedding(⋅)为傅里叶特征编码,将数值型的分辨率转化为高维特征向量,避免数值大小带来的特征偏差,公式为:
FourierEmbedding ( x ) = [ sin ( x 10 2 k / d ) , cos ( x 10 2 k / d ) ] k = 0 d / 2 − 1 \text{FourierEmbedding}(x) = \left[ \sin\left(\frac{x}{10^{2k/d}}\right), \cos\left(\frac{x}{10^{2k/d}}\right) \right]_{k=0}^{d/2-1} FourierEmbedding(x)=[sin(102k/dx),cos(102k/dx)]k=0d/2−1
d d d为嵌入维度; - ⊕ \oplus ⊕为通道维度拼接,最终 c size c_{\text{size}} csize添加到UNet的时间步嵌入 中,与扩散时间步特征融合:
t emb ′ = TimeEmbedding ( t ) + c size t_{\text{emb}}' = \text{TimeEmbedding}(t) + c_{\text{size}} temb′=TimeEmbedding(t)+csize
改进2:以裁剪参数为条件,解决生成图像裁剪伪影
针对SD1.x随机裁剪导致的生成伪影问题,SDXL将裁剪坐标参数 作为条件输入,与大小条件融合为统一微条件,公式化表示为:
c = c size ⊕ c crop , c crop = FourierEmbedding ( c top ) ⊕ FourierEmbedding ( c left ) c = c_{\text{size}} \oplus c_{\text{crop}}, \quad c_{\text{crop}} = \text{FourierEmbedding}(c_{\text{top}}) \oplus \text{FourierEmbedding}(c_{\text{left}}) c=csize⊕ccrop,ccrop=FourierEmbedding(ctop)⊕FourierEmbedding(cleft)
其中 c top c_{\text{top}} ctop、 c left c_{\text{left}} cleft为训练时从图像左上角裁剪的像素数,推理时设置 c crop = ( 0 , 0 ) c_{\text{crop}}=(0,0) ccrop=(0,0),即可生成对象居中 的图像,避免裁剪伪影;同时可通过调整 c crop c_{\text{crop}} ccrop值,模拟不同裁剪效果,实现布局微调。
1.2.3 多宽高比训练:适配真实场景,打破方形图像局限
SD1.x仅支持固定宽高比的方形图像生成,SDXL通过多宽高比训练 突破该限制,将目标宽高比 作为附加条件融入模型,公式化表示为:
c ar = FourierEmbedding ( h tgt ) ⊕ FourierEmbedding ( w tgt ) , c total = c ⊕ c ar c_{\text{ar}} = \text{FourierEmbedding}(h_{\text{tgt}}) \oplus \text{FourierEmbedding}(w_{\text{tgt}}), \quad c_{\text{total}} = c \oplus c_{\text{ar}} car=FourierEmbedding(htgt)⊕FourierEmbedding(wtgt),ctotal=c⊕car
其中 h tgt h_{\text{tgt}} htgt、 w tgt w_{\text{tgt}} wtgt为目标宽高比对应的高度和宽度(像素数接近 1024 2 1024^2 10242,且为64的倍数,适配自编码器下采样因子 f = 8 f=8 f=8), c total c_{\text{total}} ctotal为包含大小、裁剪、宽高比的总条件向量,最终输入到UNet的各层Transformer块中,实现多宽高比的自适应生成。
训练时,将数据按宽高比划分为多个桶,同一批次采用相同宽高比的图像,批次间交替不同桶,保证模型对各宽高比的泛化能力。相比之下,自回归模型因序列长度与图像宽高比强绑定,适配多宽高比需重新训练不同的序列建模模型,工程化成本极高,而SDXL仅通过条件嵌入即可实现多宽高比适配,灵活性远高于自回归模型。
1.2.4 改进的自编码器:强化感知压缩,提升细节保留能力
LDMs的自编码器是感知压缩的核心,SDXL未改变自编码器"编码器 E \mathcal{E} E+解码器 D \mathcal{D} D"的架构,而是通过优化训练策略 提升重建质量,其损失函数在LDMs原有基础上优化为:
L Autoencoder-SDXL = L 1 ( D ( E ( x ) ) , x ) + λ GAN L PatchGAN ( D ( E ( x ) ) , x ) + λ LPIPS L LPIPS ( D ( E ( x ) ) , x ) L_{\text{Autoencoder-SDXL}} = L_1(\mathcal{D}(\mathcal{E}(x)), x) + \lambda_{\text{GAN}} L_{\text{PatchGAN}}(\mathcal{D}(\mathcal{E}(x)), x) + \lambda_{\text{LPIPS}} L_{\text{LPIPS}}(\mathcal{D}(\mathcal{E}(x)), x) LAutoencoder-SDXL=L1(D(E(x)),x)+λGANLPatchGAN(D(E(x)),x)+λLPIPSLLPIPS(D(E(x)),x)
同时引入指数移动平均(EMA) 优化权重更新:
θ ema = α ⋅ θ ema + ( 1 − α ) ⋅ θ current \theta_{\text{ema}} = \alpha \cdot \theta_{\text{ema}} + (1-\alpha) \cdot \theta_{\text{current}} θema=α⋅θema+(1−α)⋅θcurrent
其中 θ ema \theta_{\text{ema}} θema为EMA权重, θ current \theta_{\text{current}} θcurrent为当前训练权重, α = 0.9999 \alpha=0.9999 α=0.9999为衰减系数;训练批大小从SD1.x的9提升至256,让模型学习到更丰富的图像特征,最终改进后的自编码器在PSNR、SSIM、LPIPS等重建指标上全面超越SD1.x,为潜在扩散生成提供更高质量的"数字底片"。
与自回归模型的VQ-VAE对比 :自回归模型通常采用向量量化自编码器(VQ-VAE) 构建离散潜在空间,其量化损失会导致潜在表示丢失细节,而SDXL的自编码器采用连续潜在空间,无量化损失,结合感知损失+PatchGAN损失,重建细节远优于VQ-VAE,这也是SDXL生成图像细节更丰富的重要原因。
1.2.5 整体整合与细化阶段:多阶段生成,突破细节瓶颈
SDXL通过多阶段训练 逐步提升模型分辨率适配能力,再引入独立细化模型 进行潜在空间二次去噪,实现"全局构图+局部细节"的双重优化,核心流程通过公式化表示为两阶段生成过程,相比自回归模型的"单阶段顺序生成",SDXL的多阶段生成在不损失效率的前提下,实现了细节的二次优化。
1. 多阶段训练:分分辨率逐步优化
SDXL的训练分为三个阶段,均基于LDMs的潜在扩散损失,逐步提升分辨率和条件适配能力:
S t a g e 1 : L 1 = E E ( x ) , y , c size , c crop , ϵ , t [ ∥ ϵ − ϵ θ 1 ( z t , t , τ ( y ) , c size , c crop ) ∥ 2 2 ] ( x : 256 × 256 ) S t a g e 2 : L 2 = E E ( x ) , y , c size , c crop , ϵ , t [ ∥ ϵ − ϵ θ 2 ( z t , t , τ ( y ) , c size , c crop ) ∥ 2 2 ] ( x : 512 × 512 ) S t a g e 3 : L 3 = E E ( x ) , y , c total , ϵ , t [ ∥ ϵ − ϵ θ 3 ( z t + σ ⋅ ϵ shift , t , τ ( y ) , c total ) ∥ 2 2 ] ( x : 多宽高比 ) \begin{align*} &Stage1: L_1 = \mathbb{E}{\mathcal{E}(x), y, c{\text{size}}, c_{\text{crop}}, \epsilon, t} \left[ \| \epsilon - \epsilon_{\theta_1}(z_t, t, \tau(y), c_{\text{size}}, c_{\text{crop}}) \|2^2 \right] \quad (x:256\times256) \\ &Stage2: L_2 = \mathbb{E}{\mathcal{E}(x), y, c_{\text{size}}, c_{\text{crop}}, \epsilon, t} \left[ \| \epsilon - \epsilon_{\theta_2}(z_t, t, \tau(y), c_{\text{size}}, c_{\text{crop}}) \|2^2 \right] \quad (x:512\times512) \\ &Stage3: L_3 = \mathbb{E}{\mathcal{E}(x), y, c_{\text{total}}, \epsilon, t} \left[ \| \epsilon - \epsilon_{\theta_3}(z_t+\sigma \cdot \epsilon_{\text{shift}}, t, \tau(y), c_{\text{total}}) \|_2^2 \right] \quad (x:\text{多宽高比}) \end{align*} Stage1:L1=EE(x),y,csize,ccrop,ϵ,t[∥ϵ−ϵθ1(zt,t,τ(y),csize,ccrop)∥22](x:256×256)Stage2:L2=EE(x),y,csize,ccrop,ϵ,t[∥ϵ−ϵθ2(zt,t,τ(y),csize,ccrop)∥22](x:512×512)Stage3:L3=EE(x),y,ctotal,ϵ,t[∥ϵ−ϵθ3(zt+σ⋅ϵshift,t,τ(y),ctotal)∥22](x:多宽高比)
其中 θ 1 → θ 2 → θ 3 \theta_1 \rightarrow \theta_2 \rightarrow \theta_3 θ1→θ2→θ3为模型权重的逐步微调, σ = 0.05 \sigma=0.05 σ=0.05为偏移噪声系数,提升模型对高分辨率的泛化能力。
2. 细化阶段:潜在空间二次去噪,提升细节保真度
针对基础模型局部细节不足的问题,SDXL训练独立的细化模型 ϵ θ refine \epsilon_{\theta_{\text{refine}}} ϵθrefine,在基础模型生成的潜在表示 z 0 base z_0^{\text{base}} z0base上应用SDEdit加噪-去噪过程 ,公式化表示为:
z s noisy = z 0 base + 1 − α ˉ s ⋅ ϵ , ϵ ∼ N ( 0 , 1 ) z ^ 0 refine = DDIM-Sample ( ϵ θ refine , z s noisy , s , τ ( y ) ) , s ∈ [ 1 , 200 ] \begin{align*} &z_s^{\text{noisy}} = z_0^{\text{base}} + \sqrt{1-\bar{\alpha}s} \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0,1) \\ &\hat{z}0^{\text{refine}} = \text{DDIM-Sample}(\epsilon{\theta{\text{refine}}}, z_s^{\text{noisy}}, s, \tau(y)), \quad s \in [1,200] \end{align*} zsnoisy=z0base+1−αˉs ⋅ϵ,ϵ∼N(0,1)z^0refine=DDIM-Sample(ϵθrefine,zsnoisy,s,τ(y)),s∈[1,200]
其中:
- z 0 base = SDXL-Base ( y ) z_0^{\text{base}} = \text{SDXL-Base}(y) z0base=SDXL-Base(y)为基础模型生成的干净潜在表示;
- z s noisy z_s^{\text{noisy}} zsnoisy为对 z 0 base z_0^{\text{base}} z0base添加 s s s步噪声后的带噪潜在表示,SDXL限定 s ∈ [ 1 , 200 ] s \in [1,200] s∈[1,200](仅针对前200个噪声尺度训练,聚焦细节修复);
- DDIM-Sample ( ⋅ ) \text{DDIM-Sample}(\cdot) DDIM-Sample(⋅)为DDIM采样算法,通过细化模型 ϵ θ refine \epsilon_{\theta_{\text{refine}}} ϵθrefine逐步去噪得到更精细的潜在表示 z ^ 0 refine \hat{z}_0^{\text{refine}} z^0refine;
- 最终高分辨率图像为 x ^ = D ( z ^ 0 refine ) \hat{x} = \mathcal{D}(\hat{z}_0^{\text{refine}}) x^=D(z^0refine),细节保真度远高于基础模型生成的 D ( z 0 base ) \mathcal{D}(z_0^{\text{base}}) D(z0base)。
用户研究验证,加入细化阶段后,SDXL的用户偏好胜率从36.93%提升至48.44%,尤其在人脸、纹理、背景细节上提升显著。而自回归模型若要实现细节优化,需增加序列建模的层数和参数,会进一步降低生成效率,难以兼顾质量和速度。
1.3 SDXL技术改进总结
| 技术维度 | Stable Diffusion 1.x | Stable Diffusion XL(SDXL) | 自回归模型(VQGAN+Transformer) | 核心公式/表示 |
|---|---|---|---|---|
| 生成方式 | 非自回归(扩散) | 非自回归(扩散) | 自回归(序列建模) | p ( z ) ∝ N ( z ; μ , σ 2 ) p(z)∝\mathcal{N}(z;\mu,\sigma^2) p(z)∝N(z;μ,σ2)/$p(z)=\prod p(z_i |
| UNet架构 | 8.6亿参数,固定Transformer块数 | 26亿参数,异构Transformer块分布 | 无UNet,采用Transformer序列建模 | n l n_l nl固定/ n l ∈ { 0 , 2 , 10 } n_l \in \{0,2,10\} nl∈{0,2,10}/$p(z_i |
| 文本编码 | 单一CLIP编码器, τ ( y ) ∈ R d 1 \tau(y) \in \mathbb{R}^{d_1} τ(y)∈Rd1 | 双编码器融合, τ θ ( y ) ∈ R d 2 , d 2 ≫ d 1 \tau_{\theta}(y) \in \mathbb{R}^{d_2}, d_2 \gg d_1 τθ(y)∈Rd2,d2≫d1 | 单一文本编码器, τ ( y ) ∈ R d 3 \tau(y) \in \mathbb{R}^{d_3} τ(y)∈Rd3 | τ ( y ) = CLIP ( y ) \tau(y)=\text{CLIP}(y) τ(y)=CLIP(y)/ τ θ ( y ) = Concat(CLIP-L, OpenCLIP) \tau_{\theta}(y)=\text{Concat(CLIP-L, OpenCLIP)} τθ(y)=Concat(CLIP-L, OpenCLIP)/ τ ( y ) = CLIP ( y ) \tau(y)=\text{CLIP}(y) τ(y)=CLIP(y) |
| 条件机制 | 无,仅文本条件 | 大小+裁剪+宽高比条件,傅里叶嵌入 | 仅文本条件,无微条件化 | c = ∅ c=\emptyset c=∅/ c = FourierEmbedding ( h , w , t o p , l e f t ) c=\text{FourierEmbedding}(h,w,top,left) c=FourierEmbedding(h,w,top,left)/ c = ∅ c=\emptyset c=∅ |
| 自编码器 | L AE = L 1 + L P I P S L_{\text{AE}}=L1+LPIPS LAE=L1+LPIPS,批大小9 | L AE L_{\text{AE}} LAE+EMA,批大小256 | VQ-VAE(含量化损失) | θ ema = ∅ \theta_{\text{ema}}=\emptyset θema=∅/ θ ema = α θ ema + ( 1 − α ) θ current \theta_{\text{ema}}=\alpha\theta_{\text{ema}}+(1-\alpha)\theta_{\text{current}} θema=αθema+(1−α)θcurrent/$L_{\text{VQ}}= |
| 生成流程 | 单阶段: x ^ = D ( SD1.x ( y ) ) \hat{x}=\mathcal{D}(\text{SD1.x}(y)) x^=D(SD1.x(y)) | 两阶段: x ^ = D ( Refine ( SDXL-Base ( y ) ) ) \hat{x}=\mathcal{D}(\text{Refine}(\text{SDXL-Base}(y))) x^=D(Refine(SDXL-Base(y))) | 单阶段: x ^ = D ( AutoReg ( y ) ) \hat{x}=\mathcal{D}(\text{AutoReg}(y)) x^=D(AutoReg(y)) | z ^ 0 = Base \hat{z}_0=\text{Base} z^0=Base/ z ^ 0 = Refine ( Base ) \hat{z}_0=\text{Refine}(\text{Base}) z^0=Refine(Base)/ z ^ = AutoRegSeq \hat{z}=\text{AutoRegSeq} z^=AutoRegSeq |
| 推理效率 | 中等(512×512) | 高(1024×1024,并行生成) | 低(512×512,顺序生成) | 512×512需20步/1024×1024需20步/512×512需 512 × 512 512×512 512×512步 |
1.4 SDXL的局限性与未来方向
尽管SDXL实现了显著的技术进步,但仍存在一些固有局限性,这些局限性也为后续SD3的架构革新指明了方向,同时反映了潜在扩散模型对比自回归模型的当前技术边界:
- 两阶段生成的效率损耗:细化模型需加载两个大模型,显存占用提升,采样速度下降,未来需探索单阶段高细节生成模型 ,让 ϵ θ \epsilon_\theta ϵθ直接生成高质量 z ^ 0 \hat{z}_0 z^0,无需二次去噪;
- 文本合成能力不足:生成清晰可读长文本仍有困难,公式中双文本编码器仍基于词级分词,未来可引入字符级自回归文本编码器 τ char ( y ) \tau_{\text{char}}(y) τchar(y),让文本特征更精细;
- 复杂结构生成困难:对人手、人体解剖结构的生成仍有偏差,源于潜在空间中3D结构特征建模不足,未来可引入3D条件 c 3D c_{\text{3D}} c3D(如深度、姿态)扩展条件向量;
- 推理成本提升:26亿参数UNet导致推理VRAM占用增加,未来可通过知识蒸馏 得到轻量模型 ϵ θ distill \epsilon_{\theta_{\text{distill}}} ϵθdistill,满足低算力设备需求,蒸馏损失为:
L distill = E z t , t , y , c [ ∥ ϵ θ ( z t , t , y , c ) − ϵ θ distill ( z t , t , y , c ) ∥ 2 2 ] L_{\text{distill}} = \mathbb{E}{z_t,t,y,c} \left[ \| \epsilon{\theta}(z_t,t,y,c) - \epsilon_{\theta_{\text{distill}}}(z_t,t,y,c) \|_2^2 \right] Ldistill=Ezt,t,y,c[∥ϵθ(zt,t,y,c)−ϵθdistill(zt,t,y,c)∥22] - 概念混淆与偏见:多物体属性混淆(如红帽子→蓝帽子)、训练数据集引入社会偏见,未来需优化文本-图像特征的语义绑定,让交叉注意力的Q-K匹配更精准,同时可结合自回归模型的序列语义建模优势,提升特征匹配的准确性。
二、论文翻译:SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis (SDXL:改进潜在扩散模型以实现高分辨率图像合成)
0 摘要
我们提出了SDXL,一种用于文本到图像合成的潜在扩散模型。与之前版本的Stable Diffusion相比,SDXL利用了三倍大的UNet主干网络:模型参数的增加主要源于更多的注意力块和更大的交叉注意力上下文,因为SDXL使用了第二个文本编码器。我们设计了多种新颖的条件方案,并在多种宽高比上训练了SDXL。我们还引入了一个细化模型,该模型用于通过后处理的图像到图像技术来提高SDXL生成样本的视觉保真度。我们证明,与之前版本的Stable Diffusion相比,SDXL显示出显著改进的性能,并实现了与黑盒最先进图像生成器相竞争的结果。本着促进开放研究和增强大模型训练与评估透明度的精神,我们提供了代码和模型权重的访问权限。
1 引言
过去一年,深度学习生成模型在多种数据领域取得了巨大飞跃,例如自然语言[50]、音频[17]和视觉媒体[38,37,40,44,15,3,7]。在本报告中,我们聚焦于后者,并发布SDXL------Stable Diffusion的一个显著改进版本。Stable Diffusion是一个潜在的文生图扩散模型(DM),它作为一系列最新进展的基础,例如在3D分类[43]、可控图像编辑[54]、图像个性化[10]、合成数据增强[48]、图形用户界面原型设计[51]等方面。值得注意的是,其应用范围异常广泛,涵盖了从音乐生成[9]到从fMRI脑扫描重建图像[49]等众多不同领域。

用户研究表明,SDXL consistently以显著优势超越所有先前版本的Stable Diffusion(见图1)。在本报告中,我们介绍了导致此性能提升的设计选择,包括:i) 与先前Stable Diffusion模型相比,UNet骨干网络扩大了3倍(第2.1节);ii) 两种简单而有效的附加条件技术(第2.2节),这些技术不需要任何形式的额外监督;以及 iii) 一个独立的基于扩散的细化模型,该模型对SDXL产生的潜在表示应用加噪-去噪过程[28],以提升其样本的视觉质量(第2.5节)。
视觉媒体创作领域的一个主要担忧是,虽然黑盒模型通常被认为是先进的,但其架构的不透明性阻碍了对其性能进行忠实评估和验证。这种透明度的缺乏阻碍了可重复性,抑制了创新,并阻止了社区在此类模型的基础上进一步发展科学和艺术。此外,这些闭源策略使得以公正客观的方式评估这些模型的偏见和局限性变得困难,而这对于其负责任和符合伦理的部署至关重要。通过SDXL,我们发布了一个开源模型,其性能与黑盒图像生成模型相竞争(见图10和图11)。
2 改进Stable Diffusion
在本节中,我们介绍了对Stable Diffusion架构的改进。这些改进是模块化的,可以单独或组合使用以扩展任何模型。尽管以下策略是作为潜在扩散模型(LDMs)[38]的扩展实现的,但其中大多数也适用于其像素空间对应物。
图1:左图:比较SDXL与Stable Diffusion 1.5和2.1的用户偏好。虽然SDXL已经明显优于Stable Diffusion 1.5和2.1,但添加额外的细化阶段进一步提升了性能。右图:两阶段流程的可视化:我们使用SDXL生成大小为128 x 128的初始潜在表示。然后,我们利用一个专门的高分辨率细化模型,并在第一步生成的潜在表示上应用SDEdit\[28\],使用相同的提示。SDXL和细化模型使用相同的自编码器。
2.1 架构与规模
从Ho等人[14]和Song等人[47]的开创性工作开始,这些工作证明了DMs是图像合成的强大生成模型,卷积UNet[39]架构一直是基于扩散的图像合成的主导架构。然而,随着基础DMs[40, 37, 38]的发展,底层架构不断演进:从添加自注意力和改进的上采样层[5],到用于文本到图像合成的交叉注意力[38],再到纯粹的基于变换器的架构[33]。
我们遵循这一趋势,并遵循Hoogeboom等人[16]的做法,将变换器计算的主要部分转移到UNet中的较低层级特征。特别是,与原始Stable Diffusion架构相比,我们在UNet内部使用了异构的变换器块分布:出于效率原因,我们省略了最高特征级别的变换器块,在较低级别使用2和10个块,并完全移除了UNet中的最低级别(8倍下采样)------参见表1对Stable Diffusion 1.x和2.x与SDXL架构的比较。
我们选择使用一个更强大的预训练文本编码器用于文本条件。具体来说,我们结合使用OpenCLIP ViT-bigG[19]和CLIP ViT-L[34],其中我们沿通道轴连接倒数第二个文本编码器输出[1]。除了使用交叉注意力层以文本输入为条件外,我们遵循[30]并额外以OpenCLIP模型汇集后的文本嵌入为条件。这些更改导致UNet中的模型大小达到26亿参数,参见表1。文本编码器总大小为8.17亿参数。

2.2 微条件化

以图像大小为条件模型
LDM范式[38]的一个众所周知的缺点是,由于其两阶段架构,训练模型需要最小图像尺寸。解决此问题的两种主要方法是:要么丢弃所有低于某个最小分辨率的训练图像(例如,Stable Diffusion 1.4/1.5丢弃了任何尺寸低于512像素的图像),要么对过小的图像进行上采样。然而,根据所需的图像分辨率,前一种方法可能导致丢弃大部分训练数据,这可能会造成性能损失,并在图2中可视化了SDXL预训练数据集上的此类影响。对于此特定数据选择,丢弃所有低于我们预训练分辨率 256 2 256^2 2562像素的样本将导致显著丢弃39%的数据。另一方面,第二种方法通常会引入上采样伪影,这些伪影可能会泄漏到最终模型输出中,例如导致模糊样本。

相反,我们提出以原始图像分辨率作为UNet模型的条件,这在训练期间是琐碎可用的。特别是,我们将图像的原始(即,在任何重新缩放之前)高度和宽度作为附加条件提供给模型 c size = ( h original , w original ) c_{\text{size}} = (h_{\text{original}}, w_{\text{original}}) csize=(horiginal,woriginal)。每个分量使用傅里叶特征编码独立嵌入,并将这些编码连接成一个单一向量,通过将其添加到时间步长嵌入[5]中馈送到模型。

在推理时,用户可以通过此大小条件设置所需的图像表观分辨率。显然(参见图3),模型已学会将条件 c size c_{\text{size}} csize与分辨率相关的图像特征相关联,这可用于修改对应于给定提示的输出外观。注意,对于图3所示的可视化,我们可视化由512 x 512模型生成的样本(详见第2.5节),因为在随后的用于我们最终SDXL模型的多宽高比微调之后,大小条件的效果不太明显。
我们通过训练和评估三个在空间尺寸 512 2 512^2 5122的类条件ImageNet[4]上的LDM,定量评估此简单但有效的条件技术的效果:对于第一个模型(CIN-512-only),我们丢弃所有至少有一条边小于512像素的训练示例,这导致训练数据集仅包含70k图像。对于CIN-nocond,我们使用所有训练示例但没有大小条件。此附加条件仅用于CIN-size-cond。训练后,我们使用50个DDIM步骤[46]和(无分类器)引导尺度5[13]为每个模型生成5k样本,并计算IS[42]和FID[12](针对完整验证集)。对于CIN-size-cond,我们生成样本时始终以 c size = ( 512 , 512 ) c_{\text{size}} = (512, 512) csize=(512,512)为条件。表2总结了结果,并验证了CIN-size-cond在两个指标上均优于基线模型。我们将CIN-512-only的性能下降归因于由于在小训练数据集上过拟合而导致的泛化能力差,而CIN-nocond样本分布中模糊样本模式的影响导致FID分数降低。注意,虽然我们发现这些经典定量分数不适用于评估基础(文本到图像)DMs的性能[40, 37, 38](见附录F),但它们仍然是ImageNet上的合理指标,因为FID和IS的神经主干是在ImageNet本身上训练的。

以裁剪参数为条件模型

图4的前两行说明了先前SD模型的典型失败模式:合成对象可能被裁剪,例如左例中SD 1-5和SD 2-1中猫的头部被切断。对此行为的直观解释是在模型训练期间使用随机裁剪:由于在PyTorch[32]等DL框架中整理批次需要相同大小的张量,典型的处理流程是(i)调整图像大小使得最短尺寸匹配所需目标大小,接着(ii)沿较长轴随机裁剪图像。虽然随机裁剪是一种自然的数据增强形式,但它可能泄漏到生成的样本中,导致上述恶意效果。
为了解决此问题,我们提出了另一种简单而有效的条件方法:在数据加载期间,我们均匀采样裁剪坐标 c top c_{\text{top}} ctop和 c left c_{\text{left}} cleft(整数,指定分别从左上角沿高度和宽度轴裁剪的像素量),并通过傅里叶特征嵌入将它们作为条件参数馈送到模型,类似于上述大小条件。连接后的嵌入 c crop c_{\text{crop}} ccrop然后用作附加条件参数。我们强调此技术不限于LDM,可用于任何DM。注意,裁剪和大小条件可以轻松组合。在这种情况下,我们在将特征嵌入添加到UNet中的时间步长嵌入之前,沿通道维度连接特征嵌入。算法1说明了如果应用此类组合,我们在训练期间如何采样 c crop c_{\text{crop}} ccrop和 c size c_{\text{size}} csize。
鉴于我们的经验表明大规模数据集平均上是面向对象的,我们在推理期间设置 ( c top , c left ) = ( 0 , 0 ) (c_{\text{top}}, c_{\text{left}}) = (0, 0) (ctop,cleft)=(0,0),从而从训练模型中获取以对象为中心的样本。参见图5进行说明:通过调整 ( c top , c left ) (c_{\text{top}}, c_{\text{left}}) (ctop,cleft),我们可以在推理期间成功模拟裁剪量。这是一种条件增强形式,已以各种形式与自回归[20]模型一起使用,最近与扩散模型[21]一起使用。

虽然像数据分桶[31]这样的其他方法成功解决了相同的任务,我们仍然受益于裁剪 induced 的数据增强,同时确保它不泄漏到生成过程中------我们实际上利用它来获得对图像合成过程的更多控制。此外,它易于实现,并且可以在训练期间以在线方式应用,无需额外数据预处理。
2.3 多宽高比训练
真实世界数据集包括各种尺寸和宽高比的图像(参见图2)。虽然文本到图像模型的常见输出分辨率是512 x 512或1024 x 1024像素的方形图像,但我们认为这是一个相当不自然的选择,考虑到横屏(例如16:9)或竖屏格式显示的广泛分布和使用。
受此启发,我们对模型进行微调以同时处理多个宽高比:我们遵循常见实践[31]并将数据划分为不同宽高比的桶,其中我们保持像素数尽可能接近 1024 2 1024^2 10242像素,相应地在64的倍数中变化高度和宽度。用于训练的所有宽高比的完整列表在附录I中提供。在优化期间,训练批次由来自同一桶的图像组成,并且我们在每个训练步骤之间交替桶大小。此外,模型接收桶大小(或目标大小)作为条件,表示为整数元组 a r = ( h tgt , w tgt ) ar = (h_{\text{tgt}}, w_{\text{tgt}}) ar=(htgt,wtgt),其被嵌入到傅里叶空间中,类似于上述大小和裁剪条件。
在实践中,我们将多宽高比训练作为在固定宽高比和分辨率下预训练模型后的微调阶段应用,并通过沿通道轴连接将其与第2.2节中引入的条件技术结合。附录J中的图16提供了此操作的python代码。注意,裁剪条件和多宽高比训练是互补操作,并且裁剪条件然后仅在桶边界内工作(通常64像素)。然而,为便于实现,我们选择为多宽高比模型保留此控制参数。
2.4 改进的自编码器
Stable Diffusion是一个LDM,在一个预训练的、学习的(和固定的)改进自编码器的潜在空间中操作。虽然大部分语义组合由LDM[38]完成,但我们可以通过改进自编码器来改善生成图像中的局部高频细节。为此,我们以更大的批大小(256 vs 9)训练用于原始Stable Diffusion的相同自编码器架构,并另外使用指数移动平均跟踪权重。得到的自编码器在所有评估的重建指标中均优于原始模型,参见表3。我们将此自编码器用于所有实验。

2.5 整体整合
我们以多阶段过程训练最终模型SDXL。SDXL使用第2.4节中的自编码器和具有1000步的离散时间扩散调度[14, 45]。首先,我们在内部数据集上预训练一个基础模型(参见表1),其高度和宽度分布如图2所示,在256 x 256像素分辨率和批大小2048下进行600000次优化步骤,使用第2.2节中描述的大小和裁剪条件。我们继续在512 x 512像素图像上训练另外200000次优化步骤,最后利用多宽高比训练(第2.3节)结合0.05的偏移噪声[11, 25]水平,在约1024x1024像素区域的不同宽高比(第2.3节,附录I)上训练模型。

细化阶段
经验上,我们发现得到的模型有时产生局部质量低的样本,参见图6。为了提高样本质量,我们在相同潜在空间中训练一个单独的LDM,该模型专门处理高质量、高分辨率数据,并在基础模型的样本上应用SDEdit[28]引入的加噪-去噪过程。我们遵循[1]并将此细化模型专门用于前200个(离散)噪声尺度。在推理期间,我们从基础SDXL渲染潜在表示,并使用相同的文本输入,在潜在空间中直接用细化模型对它们进行扩散和去噪(参见图1)。我们注意此步骤是可选的,但提高了详细背景和人脸的样本质量,如图6和图13所示。
为了评估我们的模型(有和没有细化阶段)的性能,我们进行了一项用户研究,让用户从以下四个模型中选择他们最喜欢的生成:SDXL、SDXL(带细化器)、Stable Diffusion 1.5和Stable Diffusion 2.1。结果表明,带细化阶段的SDXL是评分最高的选择,并且以显著优势优于Stable Diffusion 1.5和2.1(胜率:SDXL带细化:48.44%,SDXL基础:36.93%,Stable Diffusion 1.5:7.91%,Stable Diffusion 2.1:6.71%)。参见图1,该图也提供了完整流程的概述。然而,当使用经典性能指标如FID和CLIP分数时,SDXL相对于先前方法的改进并未反映出来,如图12所示并在附录F中讨论。这与Kirstain等人[23]的发现一致并进一步支持。
3 未来工作
本报告对用于文本到图像合成的基础模型 Stable Diffusion 的改进进行了初步分析。虽然我们在合成图像质量、提示词遵循度和构图方面取得了显著改进,但在下文中,我们讨论了一些我们认为模型可能可以进一步改进的方面:
- 单阶段模型:目前,我们使用带有额外细化模型的两阶段方法从 SDXL 生成最佳样本。这导致必须将两个大模型加载到内存中,影响了可访问性和采样速度。未来的工作应研究如何提供具有同等或更高质量的单阶段模型。
- 文本合成:虽然模型规模和更大的文本编码器(OpenCLIP ViT-bigG[19])有助于改进文本渲染能力,优于先前版本的 Stable Diffusion,但纳入字节级分词器[52, 27]或直接将模型扩展到更大规模[53, 40]可能会进一步改进文本合成。
- 架构:在本工作的探索阶段,我们简要尝试了基于变换器的架构,如 UViT[16] 和 DiT[33],但没有发现立竿见影的好处。然而,我们仍然乐观地认为,仔细的超参数研究最终将能够扩展到更大的、以变换器为主的架构。
- 蒸馏:虽然我们对原始 Stable Diffusion 模型的改进是显著的,但这是以增加推理成本(包括 VRAM 和采样速度)为代价的。因此,未来的工作将侧重于减少推理所需的计算量并提高采样速度,例如通过引导蒸馏[29]、知识蒸馏[6,22,24]和渐进式蒸馏[41,2,29]。
- 我们的模型采用[14]的离散时间公式进行训练,并且需要偏移噪声[11,25]才能产生美观的结果。Karras 等人的 EDM 框架[21]是未来模型训练的一个有前途的候选方案,因为其连续时间公式允许提高采样灵活性,并且不需要噪声调度修正。
局限性

虽然我们的模型在生成真实图像和合成复杂场景方面展现了令人印象深刻的能力,但承认其固有的局限性至关重要。理解这些局限性对于进一步改进和确保技术的负责任使用至关重要。
首先,该模型在合成复杂结构(例如人手,参见图 7 左上角)时可能会遇到挑战。尽管它已经在多样化的数据上进行了训练,但人体解剖结构的复杂性给持续实现精确表示带来了困难。这一局限性表明需要针对细粒度细节的合成进行进一步的规模扩展和专门的训练技术。发生这种情况的原因可能是手和类似物体在照片中出现的差异性非常大,模型难以在这种情况下提取真实 3D 形状和物理限制的知识。
其次,虽然该模型在其生成的图像中实现了显著的真实感水平,但需要注意的是,它并未达到完美的照片真实感。某些细微差别,例如微妙的光照效果或微小的纹理变化,在生成的图像中可能仍然缺失或表现不够忠实。这种局限性意味着,在需要高度视觉保真度的应用中,仅依赖模型生成的视觉效果时应谨慎行事。
此外,该模型的训练过程严重依赖于大规模数据集,这可能会无意中引入社会和人种偏见。因此,模型在生成图像或推断视觉属性时可能会无意中加剧这些偏见。
在某些包含多个对象或主体的样本中,模型可能会表现出一种称为"概念混淆"的现象。这个问题表现为不同视觉元素的意外合并或重叠。例如,在图 14 中,观察到一个橙色太阳镜,这表明了橙色毛衣概念混淆的一个实例。另一个例子可见于图 8,企鹅本应有一顶"蓝帽子"和"红手套",但生成的却是蓝手套和一顶红帽子。识别并解决此类情况对于改进模型在复杂场景中准确分离和表示单个对象的能力至关重要。其根本原因可能在于所使用的预训练文本编码器:首先,它们被训练将所有信息压缩到单个令牌中,因此可能无法仅绑定正确的属性和对象,Feng 等人[8]通过将词关系显式编码到编码中来缓解此问题。其次,对比损失也可能对此有贡献,因为需要在同一批次中包含具有不同绑定的负样本[35]。

此外,虽然我们的模型相对于 SD 之前的版本代表了显著的进步,但在渲染长段、清晰可读的文本时仍然遇到困难。偶尔,生成的文本可能包含随机字符或表现出不一致,如图 8 所示。克服这一局限性需要进一步研究和开发技术,以增强模型的文本生成能力,特别是对于较长的文本内容------例如参见 Liu 等人[27]的工作,他们提出通过字符级文本分词器来增强文本渲染能力。或者,扩展模型规模确实能进一步改进文本合成[53, 40]。
总之,我们的模型在图像合成方面表现出显著的优势,但它也存在某些局限性。与合成复杂结构、实现完美照片真实感、进一步解决偏见、减轻概念混淆以及改进文本渲染相关的挑战,突出了未来研究和优化的途径。