采样器详解 #

什么是采样器? #

采样器(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