Stable Diffusion 采样器
在使用 Stable Diffusion 生成图像时,采样器(Sampler)是一个关键参数,它决定了模型如何从纯噪声逐步生成最终图像。不同的采样器会产生不同的图像风格、细节表现、图像质量和生成速度。本文将深入解析各类采样器的工作原理和适用场景,帮助你做出最佳选择。
什么是采样器
扩散模型的基本原理
要理解采样器,首先需要了解 Stable Diffusion 的工作原理。扩散模型的核心思想包含两个过程:
前向扩散过程(训练阶段): 将一张清晰的图像逐步添加高斯噪声,直到变成完全的随机噪声。这个过程是确定性的,噪声按照预定的时间表(noise schedule)逐步增加。
逆向扩散过程(生成阶段): 从纯噪声开始,模型学习如何逐步去除噪声,最终还原出清晰的图像。这个过程就是我们所说的"采样"。
%%{init: {'theme': 'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph LR
%% --- 节点定义 ---
Noise((纯噪声<br/>Pure Noise))
Step1[步骤 1: 去噪<br/>Denoise]
Step2[步骤 2: 去噪<br/>Denoise]
Ellipsis[ ... ]
StepN[步骤 N: 去噪<br/>Denoise]
Final((最终图像<br/>Final Image))
%% --- 连接关系 ---
Noise ==> Step1
Step1 --> Step2
Step2 -.- Ellipsis
Ellipsis -.- StepN
StepN ==> Final
%% --- 样式定义 ---
%% 1. 噪声阶段:鲜艳的红色,白色文字
classDef noise fill:#ff1744,stroke:#b71c1c,stroke-width:2px,color:#fff,font-size:12px
%% 2. 早期去噪:深邃的电光紫,白色文字
classDef early fill:#651fff,stroke:#311b92,stroke-width:2px,color:#fff,font-size:12px
%% 3. 晚期去噪:明亮的青蓝色,深色文字
classDef late fill:#00e5ff,stroke:#006064,stroke-width:2px,color:#000,font-size:12px
%% 4. 最终结果:高亮的荧光绿,深色文字
classDef final fill:#76ff03,stroke:#33691e,stroke-width:2px,color:#000,font-size:12px
%% 虚线样式
classDef phantom fill:none,stroke:none,color:#9e9e9e,font-size:12px
%% --- 应用样式 ---
class Noise noise
class Step1,Step2 early
class StepN late
class Final final
class Ellipsis phantom
采样器的作用
采样器本质上是一种数值求解器,用于求解描述逆向扩散过程的微分方程。不同的采样器使用不同的数学方法来近似这个求解过程,因此会产生不同的结果。
采样器的选择直接影响:
| 影响维度 | 说明 |
|---|---|
| 图像质量 | 细节丰富度、清晰度、伪影程度 |
| 生成速度 | 达到可接受质量所需的步数 |
| 风格特征 | 锐利度、柔和度、对比度等视觉风格 |
| 稳定性 | 相同参数下生成结果的一致性 |
| 收敛性 | 能否在有限步数内得到稳定结果 |
采样器分类
Stable Diffusion 中的采样器可以按照不同维度进行分类。
按数学原理分类
ODE 求解器(确定性采样器)
ODE(常微分方程)求解器将扩散过程建模为确定性的微分方程。给定相同的初始噪声和参数,总能得到完全相同的结果。
代表采样器: Euler(欧拉)、Heun、DPM2、DDIM、UniPC
特点: 生成结果可复现,适合需要稳定输出的场景。
SDE 求解器(随机性采样器)
SDE(随机微分方程)求解器在每一步都引入额外的随机噪声,使生成过程具有随机性。
代表采样器: Euler a(祖先版)、DPM2 a、DPM++ 2S a、DPM++ SDE
特点: 结果更多样化,可能产生更丰富的细节,但同一种子可能产生略有差异的结果。
采样器名称中的 "a" 通常代表 "ancestral"(祖先采样),表示该采样器在采样过程中会添加额外噪声。
按发展阶段分类
经典采样器
这类采样器是最早应用于扩散模型的方法,计算原理相对简单。
| 采样器 | 全称 | 特点 |
|---|---|---|
| Euler | Euler Method | 最基础的一阶方法,速度快但需要较多步数 |
| Euler a | Euler Ancestral | Euler 的祖先采样版本,增加随机性 |
| Heun | Heun's Method | 二阶方法,精度更高但每步计算量翻倍 |
| LMS | Linear Multi-Step | 利用历史步骤信息,效率较高 |
DDIM/DDPM 系列
DDIM(Denoising Diffusion Implicit Models)和 DDPM(Denoising Diffusion Probabilistic Models)是扩散模型领域的里程碑工作。
| 采样器 | 特点 |
|---|---|
| DDIM | 确定性采样,支持跳步,速度快 |
| DDPM | 原始扩散模型采样方法,质量高但慢 |
| PLMS | DDIM 的改进版本,精度更高 |
DPM 系列
DPM(Diffusion Probabilistic Models)系列是近年来发展最快的采样器家族,在速度和质量上都有显著优势。
| 采样器 | 说明 |
|---|---|
| DPM2 | 二阶 DPM 求解器 |
| DPM2 a | DPM2 的祖先采样版本 |
| DPM++ 2M | 多步二阶求解器,当前主流选择 |
| DPM++ 2S a | 单步二阶求解器,带祖先采样 |
| DPM++ SDE | 随机微分方程版本,细节更丰富 |
| DPM++ 2M SDE | 结合多步和 SDE 的优点 |
UniPC
UniPC(Unified Predictor-Corrector)是一种统一的预测-校正框架,结合了多种采样策略的优点。
特点: 收敛速度快,10-15 步即可获得高质量结果,是目前效率最高的采样器之一。
LCM
LCM 潜在一致性模型(Latent Consistency Models)采样器,由清华大学交叉信息研究院研发,它专为解决传统扩散模型采样步数多、生成速度慢的问题而生,仅需几步就能生成高质量图像。
LCM 借鉴一致性模型的一步推理理念,区别于传统扩散模型需多步迭代去噪,一致性模型的核心思路是追求 “一步完成推理”,大幅减少迭代次数。LCM 在此基础上引入潜空间,把高维图像数据压缩成低维潜在向量,进一步降低计算量,让快速采样成为可能。
特点:
- 收敛速度快,10-15 步即可获得高质量结果
- 细节表现优秀
- 结果稳定可复现
适用场景: 高质量图像生成、专业出图、需要细节的场景。
推荐步数: 10-15 步
主流采样器
Euler 系列
Euler
Euler 是最简单的采样器,使用一阶欧拉方法求解微分方程。
优点:
- 计算速度最快
- 代码实现简单,易于理解
- 兼容性最好
缺点:
- 需要较多步数(通常 30-50 步)
- 低步数时细节不足
适用场景: 快速预览、参数调试、对速度要求高的批量生成。
推荐步数: 30-50 步
Euler a
Euler 的祖先采样版本,在每一步都添加少量噪声。
优点:
- 生成结果更具多样性
- 某些风格下细节更丰富
- 可能产生意外的创意效果
缺点:
- 结果不完全可复现
- 步数过高时可能过度添加噪声
- 不适合需要精确控制的场景
适用场景: 艺术创作、探索性生成、追求独特风格。
推荐步数: 20-30 步(步数过高反而可能降低质量)
DPM++ 系列
DPM++ 系列是目前最受推荐的采样器家族,在速度和质量之间取得了极佳的平衡。
DPM++ 2M
当前社区最主流的采样器选择,"2M" 表示二阶多步(2nd order Multi-step)。
优点:
- 收敛速度快,20 步左右即可获得高质量结果
- 细节表现优秀
- 结果稳定可复现
- 适用范围广泛
缺点:
- 某些特定风格下可能不如专门优化的采样器
适用场景: 日常创作、商业出图、大多数使用场景的首选。
推荐步数: 20-30 步
DPM++ 2M Karras
DPM++ 2M 配合 Karras 噪声调度的版本。Karras 调度在采样初期使用较大的噪声步长,后期逐渐减小,能够更好地处理细节。
优点:
- 比标准版本细节更丰富
- 收敛更平滑
- 适合写实风格
缺点:
- 对某些动漫风格可能过于锐利
适用场景: 写实摄影、人像、需要丰富细节的场景。
推荐步数: 20-30 步
DPM++ SDE
使用随机微分方程的 DPM++ 版本,在采样过程中引入随机性。
优点:
- 细节极其丰富
- 纹理表现出色
- 适合生成复杂场景
缺点:
- 速度较慢
- 结果可能不稳定
- 有时会产生过多细节
适用场景: 追求极致细节的创作、复杂场景、艺术风格。
推荐步数: 25-40 步
DPM++ 2M SDE Karras
结合了 DPM++ 2M、SDE 和 Karras 调度的优点,是追求最高质量时的选择。
优点:
- 综合质量最高
- 细节与稳定性平衡好
缺点:
- 计算开销较大
- 需要更多步数
适用场景: 最终出图、商业级作品、不赶时间的精细创作。
推荐步数: 30-50 步
DDIM
DDIM 是一种确定性的快速采样方法,通过跳过部分扩散步骤来加速生成。
优点:
- 完全确定性,100% 可复现
- 支持较大的跳步,速度快
- 适合图像编辑和 img2img
缺点:
- 细节可能不如 DPM++ 系列
- 低步数时质量下降明显
适用场景: 需要严格复现的场景、图像编辑、ControlNet 配合使用。
推荐步数: 20-50 步
UniPC
UniPC 是近期发展的高效采样器,采用统一的预测-校正框架。
优点:
- 收敛速度极快,10-15 步即可
- 质量稳定
- 计算效率高
缺点:
- 某些风格下可能略显平淡
- 社区资源相对较少
适用场景: 快速生成、实时应用、对速度有严格要求的场景。
推荐步数: 10-20 步
噪声调度器
除了采样器本身,噪声调度器(Scheduler)也会显著影响生成结果。常见的调度器包括:
标准调度(Uniform/Linear)
噪声等间距分布,是最基础的调度方式。
Karras
由 Karras 等人提出的噪声调度方案,在采样初期使用较大的噪声步长,后期逐渐减小。
特点:
- 细节更丰富
- 收敛更平滑
- 适合大多数场景
推荐组合: DPM++ 2M Karras、DPM++ SDE Karras
Exponential
指数型噪声调度,噪声衰减呈指数形式。
特点:
- 早期去噪更激进
- 可能产生更强烈的对比度
SGM Uniform
Score-based Generative Models 使用的均匀调度。
特点:
- 与某些模型架构更兼容
- 稳定性好
采样器选择指南
按使用场景选择
| 场景 | 推荐采样器 | 推荐步数 | 理由 |
|---|---|---|---|
| 快速预览/调参 | Euler | 15-20 | 速度最快 |
| 日常创作 | DPM++ 2M Karras | 20-25 | 质量与速度平衡 |
| 写实摄影 | DPM++ 2M SDE Karras | 30-40 | 细节丰富 |
| 动漫插画 | DPM++ 2M 或 Euler a | 20-30 | 风格适配 |
| 艺术创作 | DPM++ SDE Karras | 30-50 | 细节与随机性 |
| 最终出图 | DPM++ 2M SDE Karras | 40-50 | 最高质量 |
| 实时生成 | UniPC 或 LCM | 8-15 | 极速收敛 |
| 图像编辑 | DDIM | 20-30 | 确定性强 |
按风格选择
| 风格 | 推荐采样器 | 说明 |
|---|---|---|
| 写实人像 | DPM++ 2M SDE Karras | 皮肤细节、光影表现最佳 |
| 动漫/二次元 | Euler a 或 DPM++ 2M | 线条清晰、色彩鲜艳 |
| 油画/艺术 | DPM++ SDE | 笔触质感、纹理丰富 |
| 概念艺术 | DPM++ 2M Karras | 整体感好、构图稳定 |
| 科幻/机械 | DPM++ 2M SDE | 金属质感、细节锐利 |
| 风景 | DPM++ 2M Karras | 层次分明、色彩自然 |
按硬件条件选择
| 显存 | 推荐采样器 | 说明 |
|---|---|---|
| 4GB | Euler、UniPC | 步数可以适当减少 |
| 6-8GB | DPM++ 2M Karras | 主流配置的最佳选择 |
| 12GB+ | DPM++ 2M SDE Karras | 可以使用较高步数 |
采样步数选择
采样步数(Steps)是另一个关键参数,它决定了模型执行多少次去噪迭代。
步数与质量的关系
%%{init: {'theme': 'base', 'themeVariables': {'fontSize': '12px'}}}%%
graph TD
%% --- 核心节点 ---
Root[采样步数设置<br/>Sampling Steps]
%% 分支定义
Low[步数 < 10]
Mid[步数 15-30]
High[步数 30-50]
Over[步数 > 50]
%% 结果描述
ResultLow[图像模糊<br/>细节缺失<br/>结构不完整]
ResultMid[质量与速度平衡<br/>适合大多数场景<br/>]
ResultHigh[细节更丰富<br/>但收益递减]
ResultOver[几乎无提升<br/>浪费计算资源]
%% --- 连接关系 ---
Root ==> Low & Mid & High & Over
Low -.-> ResultLow
Mid ==> ResultMid
High --> ResultHigh
Over -.-> ResultOver
%% --- 样式定义 (高饱和度配色) ---
%% 1. 红色警示 (不可用)
classDef bad fill:#ff1744,stroke:#b71c1c,stroke-width:2px,color:#fff,font-size:12px
%% 2. 绿色推荐 (最佳)
classDef optimal fill:#00e676,stroke:#00c853,stroke-width:3px,color:#000,font-size:12px
%% 3. 蓝色进阶 (可选)
classDef good fill:#2979ff,stroke:#0d47a1,stroke-width:2px,color:#fff,font-size:12px
%% 4. 橙色浪费 (不推荐)
classDef waste fill:#ff9100,stroke:#e65100,stroke-width:2px,color:#000,font-size:12px
%% 根节点样式
classDef root fill:#263238,stroke:#fff,stroke-width:2px,color:#fff,font-size:12px
%% --- 应用样式 ---
class Root root
class Low,ResultLow bad
class Mid,ResultMid optimal
class High,ResultHigh good
class Over,ResultOver waste
不同采样器的推荐步数
| 采样器 | 最低有效步数 | 推荐步数 | 最高有效步数 |
|---|---|---|---|
| Euler | 20 | 30-50 | 100+ |
| Euler a | 15 | 20-30 | 40 |
| DPM++ 2M | 15 | 20-30 | 50 |
| DPM++ 2M Karras | 15 | 20-30 | 50 |
| DPM++ SDE | 20 | 30-40 | 60 |
| UniPC | 8 | 10-20 | 30 |
| DDIM | 15 | 20-50 | 100 |
注意: 对于祖先采样器(带 "a" 的),步数过高可能导致质量下降,因为会累积过多噪声。
CFG Scale 与采样器的配合
CFG Scale(Classifier-Free Guidance Scale)控制生成图像对提示词的遵循程度。不同采样器对 CFG Scale 的敏感度不同。
| 采样器类型 | 推荐 CFG | 说明 |
|---|---|---|
| 确定性采样器 | 7-9 | 可以使用较高 CFG |
| 祖先采样器 | 5-8 | CFG 过高会放大噪声 |
| SDE 采样器 | 6-8 | 中等 CFG 效果最佳 |
实用技巧
快速测试流程
- 使用 Euler 采样器 + 15 步快速测试构图和提示词
- 确认方向后切换到 DPM++ 2M Karras + 25 步精修
- 最终出图使用 DPM++ 2M SDE Karras + 40 步
避免常见问题
问题: 图像过于模糊
- 解决: 增加步数或换用收敛更快的采样器(如 DPM++ 系列)
问题: 细节过度/噪点
- 解决: 降低步数(对于祖先采样器)或降低 CFG Scale
问题: 色彩失真
- 解决: 检查 VAE 设置,尝试不同的噪声调度器
问题: 生成结果不稳定
- 解决: 切换到确定性采样器(如 DDIM、DPM++ 2M)
SDXL 与 SD 1.5 的采样器差异
SDXL 由于模型架构不同,部分采样器表现可能与 SD 1.5 有差异:
- SDXL 推荐使用 DPM++ 2M SDE Karras
- SDXL 通常需要更少的步数(20-30 步足够)
- SDXL 对 CFG Scale 更敏感,建议使用 5-8
总结
采样器的选择没有绝对的"最佳答案",而是需要根据具体需求进行权衡:
- 追求速度: Euler、UniPC
- 追求质量: DPM++ 2M SDE Karras
- 日常使用: DPM++ 2M Karras
- 艺术创作: DPM++ SDE、Euler a
- 精确控制: DDIM
建议初学者从 DPM++ 2M Karras 开始,这是目前社区公认的最均衡选择。随着经验积累,再根据具体风格和需求尝试其他采样器。
记住,采样器只是影响生成质量的众多因素之一,好的提示词、合适的模型和正确的参数配置同样重要。多尝试、多对比,才能找到最适合自己创作风格的组合。
第 6 篇,共 6 篇
相关推荐
Stable Diffusion 的版本演进
深入解析 Stable Diffusion 的版本演进,了解各个版本的特性和差异。
Stable Diffusion 模型下载指南
详细介绍 Stable Diffusion 模型的下载渠道、文件格式说明以及安装方法
Checkpoint 模型详解与选择指南
深入解析 Stable Diffusion 的 Checkpoint 模型,帮助你选择适合自己创作需求的模型