Stable diffusion采样器详解

在我们使用SD web UI的过程中,有很多采样器可以选择,那么什么是采样器?它们是如何工作的?它们之间有什么区别?你应该使用哪一个?这篇文章将会给你想要的答案。

什么是采样?

降噪步骤

Stable Diffusion模型通过一种称为“去噪”的过程来生成图像,这个过程涉及到在潜在空间中逐步从随机噪声中提取出有意义的图像特征。

  • 模型首先在潜在空间中生成一个完全随机的噪声图像。这个图像是随机的,不包含任何有意义的信息。
  • 噪声预测器(也称为去噪函数)估计这个随机图像中的噪声。这个预测器是模型的一部分,它学习如何从噪声中恢复出清晰的图像。
  • 模型从初始的随机噪声图像中减去预测的噪声,以便逐步揭示出隐藏在噪声下的图像内容。
  • 这个过程会重复多次(通常是十几次),每一步都会生成一个新的采样图像。这些采样图像逐渐从随机噪声转变为越来越清晰的图像。
  • 经过多次迭代后,最终得到的图像是一个干净的、去噪后的图像,它反映了文本提示中描述的内容。

下面是一个实际的采样过程。采样器逐渐产生越来越干净的图像。

image-20240411194651145

Noise schedule

在Stable Diffusion模型的去噪过程中,噪声表(noise schedule)扮演着至关重要的角色。

噪声表是一个预先定义的计划,它决定了在每一步采样过程中应用的噪声水平。

  • 在去噪过程的第一步,图像充满了高噪声,这是因为初始图像是完全随机的噪声图像。在这个阶段,噪声水平最高,图像看起来是不连贯和随机的。
  • 随着去噪过程的进行,噪声表会逐步降低每个采样步骤中的噪声水平。这种降低是按照预定的计划进行的,旨在逐渐从噪声中提取出有意义的图像特征。
  • 在去噪过程的最后一步,噪声水平降低到零,此时图像应该是清晰且与文本提示相匹配的。理想情况下,最终图像应该几乎没有噪声,且细节丰富,准确地反映了文本描述的内容。

下面是一个Noise schedule的基本工作原理:

稳定扩散采样器的噪声时间表

如果我们增加采样步骤数,那么每个步骤之间的降噪幅将会变小。这有助于减少采样的截断误差。

可以比较一下 15 个步骤和 30 个步骤的噪音时间表。

不同的采样器

webUI自带了很多不同的采样器,并且这个采样器的个数还在不停的增加,那么这些采样器都有些什么不同呢?

image-20240411195254916

老式ODE solvers

让我们看一下最简单采样器。这些采样器算法已经被发明很久很久了。它们是常微分方程 (ODE) 的老式采样器。

Euler– 最简单的采样器。

Heun– 更准确但更慢的 Euler 版本。

LMS(线性多步法) – 与 Euler 的速度相同,但(据说)更准确。

Ancestral采样器

如果你注意观察的话,可以看到某些采样器的名称上带有一个字母’a’。 比如:

  • Euler a

  • DPM2 a

  • DPM++ 2S a

  • DPM++ 2S a Karras

他们是Ancestral采样器。Ancestral采样器在每个采样步骤中都会向图像添加噪声。它们是随机采样器,因为采样结果具有一定的随机性。

当然也有很多随机采样器的名字上是不带a的。

使用Ancestral采样器的缺点是图像不会收敛。也就是说你有可能不会得到相同的结果。

还是刚刚的例子,我们比较一下使用 Euler a 和 Euler 生成的图像。(为了便于对比,我们加入了另外一个收敛的采样器)

image-20240411200323697

可以看到Euler和DMP++ 2M Karras最终生成的图片其实是大致一样的,但是他们两个跟Euler a的结果不太相同。

所以为了可重复性,那就用收敛采样器。如果要生成细微的变化,那么可以考虑使用随机采样器。

Karras noise schedule

带有“Karras”标签的采样器使用 Karras 文章中推荐的 noise schedule。和传统的采样器相比,你会发现噪声步长在接近尾声时变小了。这样的变化据说可以提高图像的质量。

卡拉斯噪音时间表

DDIM 和 PLMS

DDIM(去噪扩散隐式模型)和 PLMS(伪线性多步法)是原始 Stable Diffusion v1 附带的采样器。DDIM是首批为扩散模型设计的采样器之一。PLMS 是 DDIM 的更新、更快的替代方案。

这两个采样器已经过时了,我们通常不会使用他们。

DPM 和 DPM++

DPM(扩散概率模型求解器)和 DPM++ 是专为 2022 年发布的扩散模型设计的新采样器。它们表示具有类似体系结构的求解器系列。DPM 和 DPM2 相似,但 DPM2 是二阶的(更准确但更慢)。DPM++ 是对 DPM 的改进。

DPM adaptive是自适应调整步长。所以它可能很慢,并且不能保证在采样步骤数内完成。

UniPC

UniPC(统一预测器校正器)是 2023 年发布的新采样器。受常微分方程求解器中预测变量-校正器方法的启发,它可以在 5-10 个步骤内实现高质量的图像生成。

怎么选择采样器

那么这么多的采样器,我们应该如何选择呢?我想我们可以从采样算法是否收敛,采样的速度和最终生成图片的质量这几个方面来具体考量需要使用什么样的采样器。

是否收敛

首先,对Euler、DDIM、PLMS、LMS Karras 和 Heun这些老式的常微分方程求解器或原始扩散求解器来说,PLMS和LMS Karras收敛效果不佳。Heun收敛得更快。

对于所有的Ancestral采样器来说,都是不收敛的。这些采样器有:Euler a, DPM2 a, DPM++ 2S a, DPM2 a Karras, DPM++ 2S a Karras。

DPM++ SDEDPM++ SDE Karras 与Ancestral采样器存在相同的缺点。它们不仅不会收敛,而且图像也会随着步数的变化而显着波动。

DPM++ 2MDPM++ 2M Karras 表现良好。当步数足够高时,karras变体收敛得更快。

UniPC 收敛速度比 Euler 慢一点,但还不错。

采样速度

下图是使用不同采样器的采样速度:

虽然 DPM adaptive在收敛方面表现良好,但它也是最慢的。

其余的渲染时间可以分为两组,第一组花费的时间大致相同(约 1 倍),另一组花费的时间大约是两倍(约 2 倍)。时间花费2倍的是因为他们用的是2阶求解器。

二阶求解器虽然更准确,但需要对去U-Net进行两次评估,所以它们花费的时间大概是2倍。

质量

当然,前面讲的收敛和速度都是次要的,如果最终生成的图片质量不好,那么收敛和速度也就无从谈起了。

我们比较一下常用的一些采样器的最终图片效果:

image-20240411204217415image-20240411204237846image-20240411204253314

大家觉得哪幅图更好?事实上,哪幅图更好是一个主观上的标准,每个人的审美观点不同,最后可能选出来不同的结果。

所以…哪一个是最好的?

我不能说哪个是最好的,但是我可以给点我的建议。

如果您想快速、有创造力并且质量不错,那么可以这样选择:

  • DPM++ 2M Karras,20-30 步
  • UniPC,20-30 步。

如果您想要高质量的图像并且不关心收敛性,那么可以这样选择:

  • DPM++ SDE Karras,10-15 步(注意:这是一个较慢的采样器)

  • DDIM,10-15 步。

如果您喜欢稳定、可重现的图像,请避免使用任何Ancestral采样器。

EulerHeun也是不错的选择.

点我查看更多精彩内容:www.flydean.com

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

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

相关文章

MaaS玩家:希望AI大模型价格战再狠一点

明知产能严重过剩的新能源企业却还在重金扩产,多半因为他们花的不是自己的钱;明知极度烧钱的AI大模型却开始打价格战,多半因为他们并不靠这东西挣钱。 所有投资人必备的一项技能,就是中观行业景气度及商业模式对比。很明显&#…

大模型时代的具身智能系列专题(八)

standford Chelsea Finn团队 Chelsea Finn是Stanford计算机科学与电气工程系的助理教授。她的实验室IRIS通过大规模的机器人互动研究智能,并与SAIL(斯坦福人工智能实验室)和ML Group(机器学习团队)有合作关系。他还在…

Java邮件发送的基本流程是什么?如何实现?

Java邮件发送的SMTP服务器如何配置?怎么配置发信? Java邮件发送是在Java应用程序中通过邮件协议(如SMTP)发送电子邮件的过程。它是许多企业级应用程序中常见的功能,用于向用户发送通知、确认邮件等。AokSend将介绍Jav…

浅谈配置元件之随机变量

浅谈配置元件之随机变量 1.概述 为了增强测试的真实性和多样性,JMeter 提供了多种配置元件来生成动态数据,其中“随机变量”(Random Variable) 就是一种常用的配置元件,用于生成随机数值、字符串等,以模拟不同用户请求中的变化参…

【Mac】Downie 4 for Mac(视频download工具)兼容14系统软件介绍及安装教程

前言 Downie 每周都会更新一个版本适配视频网站,如果遇到视频download不了的情况,请搜索最新版本https://mac.shuiche.cc/search/downie。 注意:Downie Mac特别版不能升级,在设置中找到更新一列,把自动更新和自动downl…

蓝牙网关和WiFi网关的对比

蓝牙网关和WiFi网关都是无线通信技术中的重要组件,它们各自具有不同的特点和应用场景。以下是蓝牙网关和WiFi网关的一些对比: 蓝牙网关 作用: - 蓝牙网关可以无线连接各种设备,如门锁、灯、电视等,并能与购物者、旅…

java海滨学院班级回忆录源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨学院班级回忆录。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 海滨学院班级回忆录的…

Struts2 系列漏洞 - S2-001

一、前言 Struts2 是较早出现实现 MVC 思想的 java 框架。struts2 在 jsp 文件中使用 ognl 表达式来取出值栈中的数据。 struts 标签与 ognl 表达式的关系类似于 jstl 标签与 el 表达式的关系。[故在 jsp 文件中需引入 struts 标签库] # 二、概述 S2-001 漏洞由于在其解析 j…

Arduino ESP8266模块TFT液晶屏

ESP8266模块 模块实物图: 模块引脚定义: 工作模式选择: FlashBoot启动模式: GPIO15接GND UART固件下载模式: GPIO15接GND, GPIO0接GND 调试串口: URXD/UTXD 可用来下载固件和调试信息输出 模块使能&…

安装源码moveit遇到的问题

文章目录 问题1、 在操作 rosdep update 时报超时错误问题2、E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu focal Release” 没有 Release 文件问题3、卸载ompl问题4、安装moveit 问题1、 在操作 rosdep update 时报超时错误 出现 访问 https://raw.githubusercontent.com…

【官方文档解读】torch.jit.script 的使用,并附上官方文档中的示例代码

由 OpenMMLab 的部署教程 所述,对于模型中存在有控制条件的(如 if,for 等),需要用 torch.jit.script 而非采样默认的 torch.jit.trace 方法。本文则详细介绍了下官方文档中对 torch.jit.script 的解释和示例代码。 to…

SemiDrive X9H 平台 QT 静态编译

一、 前言 芯驰 X9H 芯片,搭载多个操作系统协同运行,系统实现了仪表、空调、中控、副驾多媒体的四屏驱动控制,在人车智能交互上可以通过显示屏、屏幕触摸控制、语音控制、物理按键控制、车身协议的完美融合,使汽车更智能。让车主…

“论软件系统建模方法”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月,我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台,用户可以通过手机或PC浏览器进入拍卖平台,对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…

通信技术信号源硬件实验

定义 1.RZ码(归零码) RZ编码也成为归零码,归零码的特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的低电平。 2.NRZ码(不归零编码) NRZ编码也成为…

AVL树的介绍与实现

前言 我们上一期介绍了二叉搜索树并做了实现,本期我们来继续学习另一个更优的树即AVL树! 本期内容介绍 什么是AVL树? AVL树的实现 AVL树的性能分析 在正式的介绍AVL树之前,我们先来回忆一下二叉搜索树的特点:左子树的…

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)

文章目录 写在前面nnUNet是什么?一、配置虚拟环境二、安装nnUNet框架1.安装nnUNet这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三、数据集准备nnUNet对于你要训练的数据是有严格要求的,这第一点就体现在我…

pushowl | 运用分销裂变模式实现业绩快速增长

一、公司简介 PushOwl公司是一家专注于为电子商务商店提供在线营销工具的印度初创企业。以下是对PushOwl公司的详细介绍: 基本信息: 所属公司:Creatorbox Softwares Private Limited 成立日期:2018年 所属地:印度 …

103.网络游戏逆向分析与漏洞攻防-ui界面的设计-加速功能的开关设计

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

RDMA (1)

RDMA是什么 Remote Direct Memory Access(RDMA)是用来给有高速需求的应用释放网络消耗的。 RDMA在网络的两个应用之间进行低延迟,高吞吐的内存对内存的直接数据通信。 InfiniBand需要部署独立的协议。 RoCE(RDMA over Converged Ethernet),也是由InfiniBand Trade Associat…

【吊打面试官系列】Java高并发篇 - Java 线程数过多会造成什么异常?

大家好,我是锋哥。今天分享关于 【Java 线程数过多会造成什么异常?】面试题,希望对大家有帮助; Java 线程数过多会造成什么异常? 1、线程的生命周期开销非常高 1000道 互联网大厂Java工程师 精选面试题-Java资源分享…