Stable Diffusion WebUI 生成参数:采样器(Sampling method)和采样步数(Sampling steps)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。

大家好,我是水滴~~

本文将深入探讨Stable Diffusion WebUI生成参数中的采样器和采样步数,旨在为读者呈现一个全面而细致的解析。我们将从采样器和采样步数的概念出发,逐步深入到采样器的不同类别,以及如何根据自身需求选择适合的采样器。此外,我们还将对采样器相关的名词进行详细的解释,以帮助读者更好地理解这一概念。通过本文,您将能够更深入地了解Stable Diffusion WebUI生成参数中的采样器和采样步数,为您在实际应用中提供有力的指导。

文章目录

  • 什么是采样器
  • 什么是采样步数
  • 采样器的类别
  • 如何选择采样器
  • 采样器名词解释
    • **Euler**
    • Euler a
    • DDIM
    • PLMS
    • LMS 和 LMS Karras
    • Heun
    • DPM
    • UniPC
    • Restart
    • LCM


在 Stable Diffusion WebUI 中有很多种采样器,那么它们都有什么区别呢?我们该如何选择?采样步数又是什么?本篇文章将为你详细讲述这些内容。

在这里插入图片描述

什么是采样器

为了生成图像,Stable Diffusion 首先在潜在空间中生成一个完全随机的图像。然后,噪声预测器估计图像的噪声。将预测的噪声从图像中减去。这个过程重复十几次。最后,你得到一个干净的图像。

这种去噪过程(denoising process)被称为采样(sampling),因为 Stable Diffusion 在每一步都会生成一个新的样本图像。采样中使用的方法被称为采样器采样方法(sampling method)

采样器在 Stable Diffusion 中扮演着关键角色,它决定了如何从潜在空间中的随机噪声开始,通过逐步去除噪声,最终生成符合文本描述的图像。不同的采样器可能采用不同的算法和策略来实现这一过程。

下图是一个采样器的运行过程,可以看出产生图像越来越清晰:

在这里插入图片描述

什么是采样步数

采样迭代步数(Sampling Steps)是指在生成图像的过程中,Stable Diffusion 模型为了从初始的随机噪声逐步优化到最终清晰图像所进行的迭代次数。在每次迭代中,模型都会根据当前的图像状态以及预设的噪声预测器来调整图像内容,逐渐去除噪声,增加图像的清晰度和细节。

迭代步数是一个重要的超参数,它影响着生成图像的质量和计算成本。增加迭代步数通常可以提高图像的清晰度和细节,但也会增加计算时间和资源消耗。因此,在实际应用中,需要根据具体需求和计算资源来选择合适的迭代步数。

下图为采样器的去噪步骤:

在这里插入图片描述

采样器的类别

截止到目前,Stable Diffusion WebUI 中有 31 个采样器(以后可能还会增加)。关于这些采样器的源码信息,可以在 stable-diffusion-webui\modules 目录下的 sd_samplers_kdiffusion.pysd_samplers_timesteps.pysd_samplers_lcm.py 文件中找到。

下面是这 31 个采样器的列表:

DPM++ 2M Karras
DPM++ SDE Karras
DPM++ 2M SDE Exponential
DPM++ 2M SDE Karras
Euler a
Euler
LMS
Heun
DPM2
DPM2 a
DPM++ 2S a
DPM++ 2M
DPM++ SDE
DPM++ 2M SDE
DPM++ 2M SDE Heun
DPM++ 2M SDE Heun Karras
DPM++ 2M SDE Heun Exponential
DPM++ 3M SDE
DPM++ 3M SDE Karras
DPM++ 3M SDE Exponential
DPM fast
DPM adaptive
LMS Karras
DPM2 Karras
DPM2 a Karras
DPM++ 2S a Karras
Restart
DDIM
PLMS
UniPC
LCM

尽管采样器种类繁多,但并非每一种都适用于我们的需求。下面是对采样器的一个分类:

在这里插入图片描述

图片来自B站:CG迷李辰

如何选择采样器

以下是我的建议:

  1. 如果您想要使用快速、收敛、新颖且质量不错的方法,优秀的选择包括:
  • DPM++ 2M Karras,20 – 30 个步骤
  • UniPC 有 20-30 个步骤。
  1. 如果您追求图像质量而不关心收敛性,可以考虑以下选择:
  • DPM++ SDE Karras具有 10-15 个步骤(注意:这是一个较慢的采样器)
  • DDIM有 10-15 个步骤。
  1. 如果您希望获得稳定、可复现的图像,请避免使用任何祖先采样器。

  2. 如果您偏向于简单的方法,EulerHeun 是不错的选择。对于 Heun 方法,可以减少步骤数以节省时间。

采样器名词解释

Euler

Euler(欧拉)是最简单的采样器,它在数学上与欧拉方法用于求解常微分方程的方法完全相同。它完全是确定性的,意味着在采样过程中不会添加任何随机噪声。

Euler a

Euler a(Euler ancestral,欧拉祖先采样器)采样器类似于 Euler 采样器。但在每个步骤中,它会减去比应该减少的更多的噪声,并添加一些随机噪声以匹配噪声计划。去噪后的图像取决于先前步骤中添加的具体噪声。因此,从某种意义上说,它是一种祖先采样器,也就是图像去噪的路径取决于每个步骤中添加的具体随机噪声。如果您再次进行相同操作,结果将会不同。

DDIM

DDIM(Denoising Diffusion Implicit Models,去噪扩散隐式模型)是用于解决扩散模型的最早的采样器之一。它基于这样一个思想,即每个步骤的图像可以通过添加以下三个组成部分来近似表示。

  1. 最终图像
  2. 图像方向指向当前步骤的图像
  3. 随机噪声

PLMS

PLMS(Pseudo Linear Multi-Step method,伪线性多步方法)是 DDIM 更快的替代方案。它们通常被认为已经过时并且不再广泛使用。

LMS 和 LMS Karras

LMS(linear multistep method,线性多步法)与欧拉方法类似,是求解常微分方程的一种标准方法。它通过巧妙地利用先前时间步长的值来提高精确度。

LMS Karras 使用 Karras 噪声表。

Heun

Heun 方法是对欧拉方法的更准确改进。但是它在每个步骤中需要两次预测噪声,因此比欧拉方法慢两倍。

DPM

DPM(Diffusion Probabilistic Model,扩散概率模型)是为 2022 年发布的扩散模型设计的新采样器。它代表了一系列具有相似架构的求解器:

DPM2 是 DPM-Solver 文章中的 DPM-Solver-2(算法1)。该求解器具有二阶精度。

DPM2 Karras 与 DPM2 相同,只是使用了 Karras 噪声表。

DPM2 a 与 DPM2 几乎相同,只是在每个采样步骤中添加了噪声。这使其成为一种祖先采样器。

DPM2 a Karras 与 DPM2 a 几乎相同,只是使用了 Karras 噪声表。

DPM Fast 是 DPM 求解器的变体,具有均匀的噪声计划。它具有一阶精度,因此比 DPM2 快两倍。

DPM 自适应是具有自适应噪声计划的一阶 DPM 求解器。它忽略您设置的步骤数,并自适应地确定自己的步骤数。

DPM++ 采样器是 DPM 的改进版本。

UniPC

UniPC(Unified Predictor Corrector,统一预测校正)是2023年新开发的扩散采样器,由两部分组成:

  • Unified predictor (UniP) 统一预测器

  • Unified corrector (UniC) 统一校正器

它支持任何求解器和噪声预测器。

论文:https://arxiv.org/abs/2302.04867

Restart

Restart 是2003年发布的新的扩散采样器,它能更好地平衡离散化误差和收缩。

Restart 采样器在速度和精度方面都超过了之前的扩散 SDE 和 ODE 采样器。Restart 不仅超越了之前最好的SDE结果,还在 CIFAR-10/ImageNet 上将采样速度加快了10倍/2倍。此外,在相当的采样时间内,它比 ODE 采样器获得了明显更好的样本质量。此外,在 LAION 上预训练的大规模文本到图像稳定扩散模型中,与之前的采样器相比,Restart 更好地平衡了文本图像对齐/视觉质量与多样性。

GitHub:https://github.com/newbeeer/diffusion_restart_sampling

论文:https://arxiv.org/abs/2306.14878

LCM

LCM(Latent Consistency Models,潜在一致性模型) 是一种新的采样方法,它可以使迭代步数减少一半(或更多)。也就是说,使用该采样器,可以几步出高分辨率图像。

论文:https://arxiv.org/abs/2310.04378

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网安全之-NTLM协议详解

NTLM(New Technology LAN Manager)身份验证协议是微软用于Windows身份验证的主要协议之一。早起SMB协议以明文口令的形式在网络上传输,因此产生了安全性问题。后来出现了LM(LAN Manager)身份验证协议,它非常…

数据可视化实战(二)

将每个城市在每个月份平均PM2.5绘制成折线图 import pandas as pd import matplotlib.pyplot as plt df pd.read_excel(./PM2.5.xlsx)display(df.head(10)) df.shape # (161630, 15)城市年份月份日期小时季节PM2.5露点湿度压强温度风向累计风速降水量累计降水量0北京2010112…

qt+ffmpeg 实现音视频播放(二)之音频播放

一、音频播放流程 1、打开音频文件 通过 avformat_open_input() 打开媒体文件并分配和初始化 AVFormatContext 结构体。 函数原型如下: int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 参数说…

Docker的简介及安装

Docker 是什么 Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。诞生于2013年,最 初的发起者是dotCloud公司,后来改名为Docker Inc,专注于Docker 相关技术和产品的开发。Docker 项目目前已经加入了Linux基金会…

【办公类-22-11】周计划系列(5-3)“周计划-03 周计划内容循环修改“ (2024年调整版本)

背景需求: 前文从原来的“新模版”文件夹里提取了周计划主要内容和教案内容。 【办公类-22-10】周计划系列(5-2)“周计划-02源文件docx读取5天“ (2024年调整版本)-CSDN博客文章浏览阅读1.1k次,点赞29次&…

基于消失点的相机自标定

基于消失点的相机自标定 附赠最强自动驾驶学习资料:直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中,平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…

边缘计算+WEB端应用融合:AI行为识别智能监控系统搭建指南 -- 云端系统数据库设计(五)

专栏目录 边缘计算WEB端应用融合:AI行为识别智能监控系统搭建指南 – 整体介绍(一) 边缘计算WEB端应用融合:AI行为识别智能监控系统搭建指南 – 边缘设备图像识别及部署(二) 边缘计算WEB端应用融合&#xf…

【开发】Redis 的理解与数据存储格式

目录 相关传送门 1. NOSQL和关系型数据库比较 2. 主流的NOSQL产品 3. Redis的理解 4. redis数据存储格式 4.1 String 4.2 Hash 4.3 List 4.4 Set 4.5. sorted_set 注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解&#xf…

Hive:数据仓库利器

1. 简介 Hive是一个基于Hadoop的开源数据仓库工具,可以用来存储、查询和分析大规模数据。Hive使用SQL-like的HiveQL语言来查询数据,并将其结果存储在Hadoop的文件系统中。 2. 基本概念 介绍 Hive 的核心概念,例如表、分区、桶、HQL 等。 …

Tomcat Session ID---会话保持

简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…

Javaweb学习记录(四)分层处理架构-分层解耦

三层架构 程序设计分为下面三层架构,分别为Controller控制层,Service逻辑处理层,Dao数据访问层。这三层各自执行自己所对应的功能,使程序的扩展性和可维护性提高 例如下面我想设计一个分层的程序,实现Controller层&am…

MidJourney 使用指北

官网:docs.midjourney.com 文档:docs.midjourney.com/docs/quick-… PS:魔法需要订阅使用了 准备工作 一、进入 discord官网 二、下载 Discord App 三、注册Discord账号 创建服务器 登录 discord App,点击添加按钮&#xff…

AJAX——综合案例

1 Bootstrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 引入bootstrap.css和bootstrap.js准备弹框标签&#xff0c;确认结构通过自定义属性&#xff0c;控制弹框的显示和隐藏 <!DOCTYPE html> <html la…

详解Java常用排序算法(10种,含演示动画)

Java常用的排序算法有以下几种&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;归并排序&#xff08;Merge Sort&#x…

Android Studio:你的主机中的软件终止了一个已建立的连接

我不喜欢等人也不喜欢被别人等——赤砂之蝎 一、提出问题 二、分析问题 搜索网上的教程尝试解决 1、任务管理器结束adb进程无用 2、电脑没有开启热点排除热点问题 3、校园网切换到热点 4、项目重新解压打开 5、更换国内镜像源 上述方法全部无法解决问题 分析问题原因在于之前A…

Github 2024-03-18 开源项目周报Top15

根据Github Trendings的统计,本周(2024-03-18统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6TypeScript项目2Go项目2JavaScript项目2非开发语言项目1HTML项目1CSS项目1Rust项目1Dart项目1C++项目1Jupyter Notebook项目1Electr…

JVM中对象创建过程

在JVM中对象的创建&#xff0c;我们从一个new指令开始&#xff1a; 这个过程大概图示如下&#xff1a; 虚拟机收到new指令触发。 类加载检查&#xff1a;如果类没有被类加载器加载&#xff0c;则执行类加载流程&#xff08;将class信息加载到JVM的运行时数据区的过程&#xff…

Stable Diffusion + Segment Anything试用

安装 从continue-revolution/sd-webui-segment-anything安装插件分割模型下载后放到这个位置&#xff1a;${sd-webui}/extension/sd-webui-segment-anything/models/sam下&#xff0c;可以下载3个不同大小的模型&#xff0c;从大到小如下&#xff1a;vit_h is 2.56GB, vit_l i…

Java后端八股----JVM篇

上图中线程1&#xff0c;2如果资源被抢占了&#xff0c;则程序计数器记录一下执行的行号&#xff0c;等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 &#x1f446;图中第二种情况不太容易出现…

Linux docker2--镜像及容器操作-nginx部署示例

一、上一篇已经完成了docker的基础环境搭建&#xff0c;和docker的安装。不清楚的小伙伴可以自己找上一篇看一下。本例以部署nginx为例展示 二、镜像相关 1、切换docker的镜像源为阿里云 命令&#xff1a; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <&l…