扩散模型进阶 可视化实验室

用交互式 SVG 呈现 ControlNet、IP-Adapter、LoRA 微调、采样器对比等可控生成生态。八个模块,纯原生实现。

zero-deps HTML / CSS / JS + SVG requestAnimationFrame prefers-reduced-motion
MODULE 01

ControlNet · 条件控制引导

将条件信号(Canny 边缘、Depth 深度、Pose 姿态)通过可训练副本 + zero convolution 注入 U-Net。调节控制强度,观察条件对生成结果的引导程度。

controlnet-inject.svg
条件信号 ControlNet 副本 zero conv U-Net 主干

ControlNet 注入原理

克隆 U-Net 编码层得到可训练副本,输入端接入条件图。输出经 zero convolution(初始权重为 0)加回主网络。训练初期不影响原模型,逐步学习条件引导。控制强度 scale 调节注入幅度。

控制类型
Canny
控制强度
0.8
zero conv
0 → 训练
注入层数
4
MODULE 02

IP-Adapter · 图像提示注入

将参考图像编码为图像 prompt,通过独立的 cross-attention 适配器注入 U-Net,实现风格迁移与图像提示。调节权重观察参考图像的影响。

ip-adapter.svg
参考图像 图像 encoder 独立 cross-attn 文本 cross-attn

解耦 cross-attention

IP-Adapter 为图像 prompt 建立独立 K/V 投影,与文本 prompt 的 K/V 并行注入同一 attention 层,仅新增 ~20M 参数。权重 w 控制图像 prompt 占比,1.0 时图像提示主导。

IP 权重
0.6
新增参数
~20M
K/V 投影
独立
风格相似
—
MODULE 03

LoRA · 低秩适配器微调

冻结原权重 W₀,仅训练低秩矩阵 B×A。W = W₀ + BA。调节 rank 与多 LoRA 合并权重,观察参数效率与生成效果。

lora-decompose.svg
W₀(冻结) B (d×r) A (r×d) 多 LoRA 合并

低秩分解 W = W₀ + BA

原权重 d×d = n² 参数;LoRA 分解为 B(d×r)+A(r×d)=2dr 参数,当 r≪d 时大幅降低。多个 LoRA 可按权重线性合并:W = W₀ + Σ αᵢ BᵢAᵢ,实现风格混搭。

rank r
16
维度 d
1024
参数量
—
压缩比
—
MODULE 04

潜空间插值 · Latent Walk

在两个 prompt 的 latent 之间线性插值,观察生成图像的平滑过渡。拖动 α 滑块或播放动画,体验潜空间的结构。

latent-walk.svg
latent A(prompt 1) latent B(prompt 2) 插值路径 当前生成

球面线性插值 slerp

高维 latent 直接线性插值会偏离分布流形。slerp(z_A, z_B, α) = sin((1−α)θ)/sinθ · z_A + sin(αθ)/sinθ · z_B 沿大圆弧插值,保持生成质量。θ 为两 latent 夹角。

插值 α
0.50
夹角 θ
—
插值方式
slerp
过渡平滑
—
MODULE 05

CFG Scale · Classifier-Free Guidance

同时预测条件 εθ(xt, c) 与无条件 εθ(xt, ∅),按 guidance scale 放大条件方向。调节 w 观察采样轨迹偏离无条件路径的程度。

cfg-scale.svg
条件路径 无条件路径 CFG 合成轨迹 guidance w

CFG 公式

ε̃ = εθ(xt,∅) + w·(εθ(xt,c) − εθ(xt,∅))。w=1 时退化为普通条件采样;w>1 放大条件方向,提升 prompt 相关性但减少多样性;w 过高导致过饱和与伪影。

CFG w
7.5
prompt 相关
—
多样性
—
过饱和风险
—
MODULE 06

采样器对比 · 步数-质量曲线

DDIM、DPM++ 2M、Euler a、UniPC 在不同步数下的收敛质量。调节步数观察各采样器的收敛速度与最终质量差异。

sampler-compare.svg
DDIM DPM++ 2M Euler a UniPC

采样器特性

DDIM 是确定性老牌采样器,需较多步数;DPM++ 2M 二阶求解器,20 步即可收敛;Euler a 带祖先采样,引入随机性、适合创意;UniPC 统一预测-校正,10-15 步高质量收敛。

步数
20
DDIM 质量
—
DPM++ 质量
—
最佳采样器
—
MODULE 07

Img2Img · 图像到图像生成

输入图像加噪到 denoise strength 对应的步数,再用扩散模型去噪重绘。调节 strength 控制保留原图与重绘的比例。

img2img.svg
原图信息 噪声 重绘生成 denoise

denoise strength 含义

strength=0 时完全保留原图;strength=1 时加满噪声、等同于 text2img;0.3-0.6 适合风格转换与局部重绘。实际加噪步数 = round(T · strength),从该步开始反向去噪。

strength
0.5
加噪步数
25
保留原图
—
重绘幅度
—
MODULE 08

超分辨率 · 低清到高清

T2I-Adapter 与 Upscaler 将低分辨率生成提升至高清。调节放大倍数,对比双三次插值与扩散超分的细节恢复能力。

upscale.svg
低清输入 双三次插值 扩散超分 新增细节

扩散超分原理

双三次插值仅放大像素、无法补充高频细节;扩散超分将低清图作为条件,在 latent 空间加噪去噪,生成符合语义的高频纹理。T2I-Adapter 注入结构条件,Upscaler 直接预测残差。

放大倍数
4×
输入分辨率
512²
输出分辨率
2048²
PSNR 提升
—