采样器详解 #
什么是采样器? #
采样器(Sampler)是扩散模型中去噪过程的算法实现。它决定了如何从纯噪声逐步生成清晰图像。
text
┌─────────────────────────────────────────────────────────────┐
│ 采样器的作用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 扩散过程: │
│ │
│ 噪声 ──→ 去噪 ──→ 去噪 ──→ ... ──→ 图像 │
│ x_T x_{T-1} x_{T-2} x_0 │
│ │
│ 采样器决定: │
│ ├── 每步如何预测噪声 │
│ ├── 如何从当前状态推断下一步 │
│ ├── 添加多少随机性 │
│ └── 整体去噪轨迹 │
│ │
│ 不同采样器: │
│ ├── 速度不同 │
│ ├── 质量不同 │
│ └── 特性不同 │
│ │
└─────────────────────────────────────────────────────────────┘
采样器分类 #
按算法类型分类 #
text
┌─────────────────────────────────────────────────────────────┐
│ 采样器分类 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 基础采样器 │
│ ├── Euler │
│ ├── Euler a │
│ ├── Heun │
│ └── DPM Fast │
│ │
│ 2. DPM 系列 │
│ ├── DPM2 │
│ ├── DPM2 a │
│ ├── DPM++ 2S a │
│ ├── DPM++ 2M │
│ ├── DPM++ 2M SDE │
│ ├── DPM++ SDE │
│ └── DPM++ 2M Karras │
│ │
│ 3. 经典采样器 │
│ ├── DDIM │
│ ├── PLMS │
│ └── LMS │
│ │
│ 4. 新型采样器 │
│ ├── UniPC │
│ ├── LCM (Latent Consistency Model) │
│ └── Restart │
│ │
└─────────────────────────────────────────────────────────────┘
按特性分类 #
text
确定性 vs 随机性:
确定性采样器:
├── 相同种子 + 相同参数 = 完全相同结果
├── DDIM, DPM++ 2M (不带 a)
└── 适合需要精确复现的场景
随机性采样器:
├── 每步添加随机噪声
├── Euler a, DPM++ 2S a, DPM++ SDE
└── 结果有更多变化
后缀含义:
├── a (ancestral): 带随机性
├── SDE: 随机微分方程
└── Karras: 使用 Karras 噪声调度
主流采样器详解 #
Euler #
text
Euler 采样器:
特点:
├── 最基础的采样器
├── 速度快
├── 确定性
└── 简单有效
算法原理:
┌─────────────────────────────────────────────────────────────┐
│ 欧拉方法: │
│ │
│ x_{t-1} = x_t - ε_θ(x_t, t) × Δt │
│ │
│ 简单的一步预测 │
│ 类似于数值积分中的欧拉法 │
│ │
└─────────────────────────────────────────────────────────────┘
适用场景:
├── 快速预览
├── 简单场景
└── 需要确定性结果
推荐步数:15-30
Euler a #
text
Euler a 采样器:
特点:
├── Euler 的祖先采样版本
├── 带有随机性
├── 结果更有变化
└── 适合创意生成
算法原理:
┌─────────────────────────────────────────────────────────────┐
│ 在 Euler 基础上添加随机噪声: │
│ │
│ x_{t-1} = x_t - ε_θ(x_t, t) × Δt + σ_t × noise │
│ │
│ 每步添加随机扰动 │
│ 相同种子结果仍可复现 │
│ │
└─────────────────────────────────────────────────────────────┘
适用场景:
├── 艺术创作
├── 需要多样性的场景
└── 探索性生成
推荐步数:20-40
DPM++ 系列 #
text
DPM++ 采样器家族:
DPM++ 2S a:
├── 二阶、单步、祖先采样
├── 速度快,有随机性
├── 适合 10-20 步
└── 结果有变化
DPM++ 2M:
├── 二阶、多步
├── 速度快,确定性
├── 适合 20-30 步
└── 推荐!最常用的采样器
DPM++ 2M Karras:
├── DPM++ 2M + Karras 调度
├── 更好的噪声分布
├── 质量更高
└── 强烈推荐!
DPM++ SDE:
├── 随机微分方程版本
├── 质量高
├── 速度较慢
└── 适合 20-40 步
DPM++ 2M SDE:
├── 结合多步和 SDE
├── 质量与速度平衡
└── 适合高质量生成
DDIM #
text
DDIM 采样器:
特点:
├── 经典确定性采样器
├── 可跳步采样
├── 理论基础扎实
└── 适合 img2img
算法原理:
┌─────────────────────────────────────────────────────────────┐
│ DDIM (Denoising Diffusion Implicit Models): │
│ │
│ 非马尔可夫扩散过程 │
│ 可以跳过中间步骤 │
│ η 参数控制随机性 │
│ η=0: 完全确定性 │
│ η=1: 等同于 DDPM │
│ │
└─────────────────────────────────────────────────────────────┘
适用场景:
├── img2img 操作
├── 需要精确控制
├── 视频生成
└── 一致性要求高的场景
推荐步数:20-50
UniPC #
text
UniPC 采样器:
特点:
├── 统一预测校正框架
├── 2023 年新算法
├── 速度快,质量好
└── 适合各种场景
算法原理:
┌─────────────────────────────────────────────────────────────┐
│ UniPC (Unified Predictor-Corrector): │
│ │
│ 结合多种采样方法优点 │
│ 预测-校正框架 │
│ 自适应步长 │
│ │
└─────────────────────────────────────────────────────────────┘
适用场景:
├── 通用场景
├── 快速高质量生成
└── 推荐尝试
推荐步数:15-30
LCM #
text
LCM 采样器:
特点:
├── Latent Consistency Model
├── 极快速度
├── 1-4 步即可生成
└── 需要特定模型
算法原理:
┌─────────────────────────────────────────────────────────────┐
│ LCM: │
│ │
│ 一致性蒸馏训练 │
│ 直接预测最终结果 │
│ 大幅减少采样步数 │
│ │
└─────────────────────────────────────────────────────────────┘
适用场景:
├── 实时生成
├── 快速预览
└── 需要特定 LCM 模型
推荐步数:1-8
采样器对比 #
速度对比 #
text
生成速度排名(相同硬件,512×512):
最快 → 最慢
LCM (1-4步)
↓
DPM++ 2M (20步)
↓
Euler (20步)
↓
UniPC (20步)
↓
DPM++ SDE (20步)
↓
Heun (20步)
↓
DDIM (50步)
实际速度受多种因素影响
质量对比 #
text
图像质量主观评价:
高质量:
├── DPM++ 2M Karras
├── DPM++ SDE
├── UniPC
└── Heun
平衡:
├── DPM++ 2M
├── Euler a
└── DDIM
基础:
├── Euler
└── DPM Fast
注意:质量评价主观性强,建议自行测试
特性对比表 #
| 采样器 | 速度 | 质量 | 确定性 | 推荐步数 | 适合场景 |
|---|---|---|---|---|---|
| Euler | 快 | 中 | 是 | 15-30 | 快速预览 |
| Euler a | 快 | 中 | 否 | 20-40 | 创意生成 |
| DPM++ 2M | 很快 | 好 | 是 | 20-30 | 通用推荐 |
| DPM++ 2M Karras | 很快 | 很好 | 是 | 20-30 | 强烈推荐 |
| DPM++ SDE | 中 | 很好 | 否 | 20-40 | 高质量 |
| DDIM | 中 | 中 | 是 | 20-50 | img2img |
| UniPC | 快 | 好 | 是 | 15-30 | 通用 |
| LCM | 极快 | 好 | 是 | 1-8 | 实时生成 |
噪声调度 #
Karras 调度 #
text
Karras 噪声调度:
特点:
├── 更平滑的噪声分布
├── 更好的收敛性
├── 通常产生更好的结果
└── 推荐使用
对比:
┌─────────────────────────────────────────────────────────────┐
│ │
│ 默认调度: 噪声分布可能不够平滑 │
│ │
│ Karras 调度: │
│ σ(t) = (σ_max^(2ρ) + t(σ_min^(2ρ) - σ_max^(2ρ)))^(1/2ρ) │
│ │
│ 更优化的噪声衰减曲线 │
│ │
└─────────────────────────────────────────────────────────────┘
使用方式:
├── 选择带 "Karras" 后缀的采样器
├── DPM++ 2M Karras
├── DPM++ SDE Karras
└── 通常比非 Karras 版本效果更好
SDE vs ODE #
text
SDE vs ODE 采样:
ODE (常微分方程):
├── 确定性路径
├── DPM++ 2M, Euler, DDIM
├── 相同种子结果相同
└── 适合精确控制
SDE (随机微分方程):
├── 带随机性的路径
├── DPM++ SDE, DPM++ 2S a
├── 结果有变化
└── 可能产生更丰富的细节
选择建议:
├── 需要复现: ODE
├── 需要多样性: SDE
└── 一般推荐: DPM++ 2M Karras (ODE)
采样步数选择 #
步数与质量的关系 #
text
步数对质量的影响:
太少 (< 10步):
├── 可能未收敛
├── 细节不足
├── 可能有噪点
└── LCM 除外
适中 (20-30步):
├── 推荐范围
├── 质量稳定
├── 速度合理
└── 适合大多数采样器
较多 (40-50步):
├── 更多细节
├── 边际效益递减
├── 时间成本增加
└── 某些采样器可能过拟合
过多 (> 50步):
├── 通常不推荐
├── 浪费时间
├── 可能质量下降
└── 例外:某些特殊情况
不同采样器的推荐步数 #
text
采样器步数建议:
Euler / Euler a:
├── 最少: 15
├── 推荐: 20-30
└── 最多: 40
DPM++ 2M / DPM++ 2M Karras:
├── 最少: 15
├── 推荐: 20-30
└── 最多: 40
DPM++ SDE:
├── 最少: 20
├── 推荐: 25-40
└── 最多: 50
DDIM:
├── 最少: 20
├── 推荐: 30-50
└── 最多: 100
LCM:
├── 最少: 1
├── 推荐: 2-4
└── 最多: 8
采样器选择指南 #
按场景选择 #
text
场景选择指南:
快速预览:
├── LCM (1-4步)
├── DPM++ 2M (15-20步)
└── Euler (15-20步)
日常使用:
├── DPM++ 2M Karras (20-30步) ★推荐
├── UniPC (20-30步)
└── DPM++ 2M (20-30步)
高质量生成:
├── DPM++ SDE Karras (30-40步)
├── DPM++ 2M Karras (30步)
└── Heun (30-40步)
创意探索:
├── Euler a (25-35步)
├── DPM++ 2S a (20-30步)
└── DPM++ SDE (25-35步)
img2img / 重绘:
├── DDIM (30-50步)
├── DPM++ 2M (20-30步)
└── Euler (20-30步)
视频生成:
├── DDIM (确定性)
├── DPM++ 2M (确定性)
└── 需要帧间一致性
按模型选择 #
text
不同模型的采样器建议:
SD 1.5:
├── DPM++ 2M Karras
├── DPM++ SDE Karras
└── Euler a
SDXL:
├── DPM++ 2M SDE Karras
├── DPM++ 2M Karras
└── Euler a
SD 3:
├── DPM++ 2M
├── Euler
└── Flow匹配采样器
动漫模型:
├── DPM++ 2M Karras
├── Euler a
└── DPM++ SDE
写实模型:
├── DPM++ 2M Karras
├── DPM++ SDE Karras
└── Heun
高级设置 #
Eta 参数 #
text
Eta (η) 参数:
作用:
├── 控制采样随机性
├── 0 = 完全确定性
├── 1 = 最大随机性
└── 仅某些采样器支持
使用场景:
├── η = 0: 精确复现,视频生成
├── η = 0.5: 平衡确定性和多样性
└── η = 1: 最大随机性
DDIM 的 eta:
├── DDIM 支持 eta 参数
├── 默认 eta = 0
└── 可调整随机性
采样器调度 #
text
高级调度选项:
Beta Schedule:
├── linear: 线性
├── scaled_linear: 缩放线性(默认)
├── squaredcos_cap_v2: 平方余弦
└── 影响噪声添加方式
Sigma Schedule:
├── Karras: 推荐
├── Exponential
├── Polyexponential
└── 影响采样轨迹
一般使用默认设置即可
高级用户可尝试调整
下一步 #
了解采样器后,继续学习:
最后更新:2026-04-05