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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记Day8:GEO数据挖掘-基因表达芯片

GEO数据挖掘 数据库:GEO、NHANCE、TCGA、ICGC、CCLE、SEER等 数据类型:基因表达芯片、转录组、单细胞、突变、甲基化、拷贝数变异等等 常见图表 表达矩阵 一行为一个基因,一列为一个样本,内容是基因表达量。 热图 输入数据…

Unity类银河恶魔城学习记录10-14 p102 Applying damage to skills and clean up源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic;…

生成微信小程序二维码

首页 -> 统计 可以通过上面二个地方配置,生成小程序的二维码,并且在推广分析里,有详细的分析数据,

【神经网络 基本知识整理】(激活函数) (梯度+梯度下降+梯度消失+梯度爆炸)

神经网络 基本知识整理 激活函数sigmoidtanhsoftmaxRelu 梯度梯度的物理含义梯度下降梯度消失and梯度爆炸 激活函数 我们知道神经网络中前一层与后面一层的连接可以用y wx b表示,这其实就是一个线性表达,即便模型有无数的隐藏层,简化后依旧…

跳绳计数,YOLOV8POSE

跳绳计数,YOLOV8POSE 通过计算腰部跟最初位置的上下波动,计算跳绳的次数

使用Python进行数据库连接与操作SQLite和MySQL【第144篇—SQLite和MySQL】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行数据库连接与操作:SQLite和MySQL 在现代应用程序开发中&#xf…

Github 2024-03-18开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-18统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目7TypeScript项目3非开发语言项目1Solidity项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型…

ubuntu下在vscode中配置matplotlibcpp

ubuntu下在vscode中配置matplotlibcpp 系统:ubuntu IDE:vscode 库:matplotlib-cpp matplotlibcpp.h文件可以此网址下载:https://github.com/lava/matplotlib-cpp 下载的压缩包中有该头文件,以及若干实例程序。 参考…

无人机助力智慧农田除草新模式,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建无人机航拍场景下的农田杂草检测识别系统

科技发展到今天,无人机喷洒药物已经不是一件新鲜事情了,在很多高危的工作领域中,比如高空电力设备除冰,电力设备部件传送更换等等,无人机都可以扮演非常出色的作用,前面回到老家一段时间,最近正…

笔记本固态硬盘损坏数据恢复两种方法 笔记本固态硬盘损坏如何恢复

大家好!今天要跟大家分享的是笔记本固态硬盘损坏数据恢复的两种方法。相信很多小伙伴都遇到过这种情况,电脑突然蓝屏或者死机,再开机后发现自己的数据不见了,这时候该怎么办呢?这可真是让人头疼。毕竟,我们…

设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目

概述 在 《设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当…

ASP.NET通过Appliaction和Session统计在人数和历史访问量

目录 背景: Appliaction: Session: 过程: 数据库: Application_Start: Session_Start: Session_End: Application_End: 背景: 事件何时激发Application_Start在调用当前应用…

REDHAWK——连接(续)

文章目录 前言一、突发 IO1、数据传输①、输入②、输出 2、突发信号相关信息 (SRI)3、多输出端口4、使用复数数据①、在 C 中转换复数数据 5、时间戳6、端口统计①、C 二、消息传递1、消息生产者①、创建一个消息生产者②、发送消息 2、消息消费者①、创建消息消费者②、注册接…

Ruoyi前后端分离项目部署至Tomcat上

项目部署 4.1.前端打包 disaster-ui目录下为本项目的前端所在位置,在命令行窗口进入该目录,然后输入npm run build:prod部署前端Vue项目,或者直接在disaster-ui/bin目录下双击build.bat文件部署前端。 图 4-1 前端部署图 4.2 环境变量 在MySQL可视化…

Vmware虚拟机配置虚拟网卡

背景 今天同事咨询了我一个关于虚拟机的问题,关于内网用Vmware安装的虚拟机,无法通过本机访问虚拟上的Jenkins的服务。   验证多次后发现有如下几方面问题。 Jenkins程序包和JDK版本不兼容(JDK1.8对应Jenkins不要超过2.3.57)虚…

LeetCode每日一题[C++]-303.区域和检索-数组不可变

题目描述 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a; NumArray(int[] nums) 使用数组 nums 初…

微信小程序简单实现手势左右滑动和点击滑动步骤条功能

使用微信小程序实现左右滑动功能&#xff0c;自定义顶部图案&#xff0c;点击文字滑动和手势触屏滑动&#xff0c;功能简单&#xff0c;具体实现代码如下所示&#xff1a; 1、wxss代码&#xff1a; /* 步骤条 */ .tab-box {display: flex;flex-direction: row;position: fix…

LVS+Keepalived 高可用群集--部署

实际操作 LVS Keepalived 高可用群集 环境设备 LVS1192.168.6.88 &#xff08;MASTER&#xff09;LVS2192.168.6.87 &#xff08;BACKUP&#xff09;web1192.168.6.188web2192.168.6.189客户端192.168.6.86VIP192.168.6.180 &#xff08;一&#xff09;web服务器 首先配置…

华为汽车业务迎关键节点,长安深蓝加入HI模式,车BU预计今年扭亏

‍编辑 |HiEV 一年之前&#xff0c;同样是在电动汽车百人会的论坛上&#xff0c;余承东在外界对于华为和AITO的质疑声中&#xff0c;第一次公开阐释了华为选择走智选车模式的逻辑。 一年之后&#xff0c;伴随问界M7改款、问界M9上市&#xff0c;华为智选车模式的面貌已经发生了…

Python基于深度学习的中文情感分析系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…