AI 绘画Stable Diffusion 研究(八)sd采样方法详解


大家好,我是风雨无阻。


本文适合人群:

  • 希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何选用合适采样器以进一步提高出图质量的朋友。

  • 想要进一步了解AI绘图基本原理的朋友。

  • 对stable diffusion AI绘图感兴趣的朋友。


本期内容:

  • 什么是采样方法 ?
  • 采样方法的分类有哪些?
  • 采样方法详细介绍
  • 哪个采样器最好?我们该如何选择?

在 Stable Diffusion中目前已经有22种 Sampling method 采样方法 ,不同的采样方法对出图效果有不同的影响。今天,我将详细介绍这22种采样方法,以及如何选择合适的采样方法。


在这里插入图片描述


一、什么是采样 ?


在了解采样之前,我们得先了解 一下Stable Diffusion webui 是如何工作的,建议看看我之前的AI 绘画Stable Diffusion 研究(七)sd webui如何工作这篇文章。


我们知道 sd webui 生成图像,大致会经过以下过程:

1、为了生成图像, Stable Diffusion 会在潜在空间中生成一个完全随机的图像

2、噪声预测器会估算图像的噪声

3、噪声预测器从图像中减去预测的噪声

4、这个过程反复重复 N 次以后,会得到一个干净准确的图像

这个去噪的过程,就被称为采样。


Stable Diffusion 在这个去噪过程中,会生成一个新的样本图像。

采样中使用的方法 被称为 Sampling method (采样方法或者是采样器)。


增加采样步骤 Sampling steps 有什么影响呢?

步骤越多,每个步骤降噪越小 。这样可以减少采样过程中的截断误差。

目前Stable Diffusion 中有 22 个采样器可以使用 。


二、采样器的分类

这些采样器有什么区别呢?

为了便于使用和理解,我们可以将这些采样方法进行分类:


(1)、传统的常微分方程求解器(ODE solvers )

包含:Euler \Heun \LMS

这三个方法历史悠久,被认为是最简单,但是不太准确的采样器。


在这里插入图片描述

(2)、祖先采样器 (名称中有一个字母 a 的)

包含 :Euler a \ DPM2 a \DPM++2S a \DPM2 a Karras \DPM++2S a Karras


这些采样器会在每个采样步骤中,向图像添加噪声 ,这些是祖先采样器,因为在采样结果中

具有一定的随机性。

这些采样器的缺点是,图像不会收敛。


在这里插入图片描述


(3)、最初官方采样器 (最初随sd v1版本发布的采样器)

DDIM、PLMS

DDIM 是为扩散模型设计的第一个采样器, PLMS 则是DDIM 更快速的替代品

在这里插入图片描述


(4)、DPM 和 DPM++ 系列

DPM 和 DPM++ 系列 是2022年发布的用于扩散模型的新采样器 ,它们具有相似的结构,但DPM2比DPM 更准确,不过速度较慢。


DPM++ 是对DPM 的改进,可以自适应地调整步长,但可能会很慢,并且不能保证在规定数量的采样步骤内完成。


在这里插入图片描述


在这里插入图片描述


(5)、带有Karras字样的采样器

在这里插入图片描述

在这里插入图片描述


这些采样器使用了噪声时间表 (noise schedule ),控制每个采样步骤中的噪声水平,并随着采样步骤的增加,减少了截断误差。


(6)、UniPC采样器

这UniPC采样器是2023年发布的新采样器,根据 ode 求解器中预测校正方法的启发,可在5-10步内实现高质量图像生成。


在这里插入图片描述


了解了以上采样器的分类,相信大家对选择采样器,已经可以缩小选择的范围了。


三、采样器方法详解


接下来我们根据 Stable Diffusion WebUI 中采样器的顺序,对每个采样器进行详细介绍。


1、Euler a

祖先采样器的一种 , 类似于 Euler ,但在每个步骤中它会减去比“应该”更多的噪声。并添加一些随机噪声以匹配噪声计划。去噪图像取决于前面步骤中添加的特定噪声。


2、Euler

最简单的采样器,在采样过程中不添加随机噪声,通过噪声计划告诉采样器,每个步骤中应该有多少噪声。并使用欧拉方法减少恰当数量的噪声。以匹配噪声计划,直到最后一步为0 为止。


3、LMS 解决常微分方程的标准方法

LMS采样速度与Euler 相同 。


4、Heum

Heum 是对Euler 更精确的改进,但是需要在每个步骤中预测两次噪声。

因此速度比Euler 慢2倍。


5、DPM2

dpm2 是Katherine Crowson在K-diffusion项目中自创的 ,灵感来源Karras论文中的DPM-Solver-2和算法2 ,受采样器设置页面中的 sigma参数影响。


6、DPM2 a

祖先采样器的一种,使用 DPM2 方法 ,受采样器设置中的ETA参数影响 。


7、DPM++2S a

随机采样器一种

在K-diffusion实现的2阶单步并受采样器设置中的ETA参数影响。


8、 DPM++2M

在Kdiffusion实现的2阶多步采样方法,在Hagging face Diffusers中被称作已知最强调度器。在速度和质量的平衡最好。这个代表m的多步比上面的s单步,在采样时会参考更多步,而非当前步,所以能提供更好的质量,但是也更复杂。


9、 DPM++SDE

DPM++的SDE版本,DPM++ 原本是0DE 求解器及常微分方程在Ktifusion实现的版本,代码中调用了随机采样方法,所以受采样器设置中的ETA参数影响。


10、 DPM fast

在Ktifusion实现的固定步长采样方法 ,用于steps小于20的情况。受采样器设置中的ETA参数影响。


11、 DPM adaptive

在K-diffusion 实现的自适应步长采样方法,DPM-Solver-12 和23,受采样器设置中的ETA参数影响。


12、带有Karras字样的6种采样器

LMS karras 、DPM2 karras 、DPM2 a karras 、DPM++ 2S a karras 、DPM++2M karras、DPM++ SDE karras 、DPM++2M SDE karras

这些含有Karras名字的采样方法 都是相当于 Karras噪声时间表的版本。


13 、DDIM

官方采样器之一,使用去噪后的图像来近似最终图像,并使用噪声预测器估计的噪声,来近似图像方向。


14、PLMS

官方采样器之一,PLMS则是DDIM的新版且更快速的替代品。


15、unipc

最新添加的采样器,应该是目前最快最新的采样方法,10步内实现高质量图像。


四、哪个采样器最好?我们该如何选择?


以下是我的建议:

  • 如果想快速生成质量不错的图片,建议选择 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步)
  • 如果想要高质量的图,不关心重现性,建议选择 DPM++ SDE Karras (10-15步 较慢) ,DDIM(10-15步 较快)
  • 如果想要简单的图,建议选择 Euler,Heun(可以减少步骤以节省时间)
  • 如果想要稳定可重现的图像,请避免选择任何祖先采样器(名字里面带a或SDE)
  • 相反,如果想要每次生成不一样的图像,可以选择不收敛的祖先采样器(名字里面带a或SDE)

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

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

相关文章

2023国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…

Java SpringBoot Vue ERP系统

系统介绍 该ERP系统基于SpringBoot框架和SaaS模式,支持多租户,专注进销存财务生产功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有商品库存…

WebGL和OpenGL之间的差异

推荐:使用 NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 WebGL和OpenGL是与图形处理有关的技术标准,它们在计算机图形中扮演着重要的角色。本文将介绍WebGL和OpenGL的区别,并重点介绍"WebGL"和"OpenGL"的特点。 一…

《算法竞赛·快冲300题》每日一题:“糖果配对”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 糖…

docker的网络模式

docker0网络 docker容器的 虚拟网关loopback :回环网卡、TCP/IP网卡是否生效virtual bridge:linux 自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自…

excel入门

上下左右移动 enter:换行,向下移动 shiftenter:向上移动 tab:向右移动 shifttab:向左移动 合并居中操作 开始-》合并居中 CtrlM 内容过长盖过了下一个单元格内容 双击列与列之间线 同时修改多行或者多列宽度或者高度 修改单行高度宽度 选中某一行拉取指定高…

电脑提示msvcp140.dll丢失的解决方法,dll组件怎么处理

Windows系统有时在打开游戏或者软件时, 系统会弹窗提示缺少“msvcp140.dll.dll”文件 或者类似错误提示怎么办? 错误背景: msvcp140.dll是Microsoft Visual C Redistributable Package中的一个动态链接库文件,它在运行软件时提…

调整数组使奇数全部都位于偶数前面

题目内容: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 题目思路: 将奇数部分放在前半部分,偶数部分放在后半部分&am…

【24择校指南】齐鲁工业大学计算机考研考情分析

齐鲁工业大学 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1140字,预计阅读:3分钟。 2023考情概况 齐鲁工…

VB6编程IEEE浮点算法实践

纯代码实现浮点计算实际上对浮点算法的再实践。IEEE浮点表示法是Modbus RTU协议至今还在用的传送编码,更是WITS 1记录标准的基础。以往实现 MKI、CVI,MKL、CVL,MKS、CVS,MKD、CVD在高级语言里封装了现成的语句,现在Pow…

SCF金融公链新加坡启动会 链结创新驱动未来

新加坡迎来一场引人瞩目的金融科技盛会,SCF金融公链启动会于2023年8月13日盛大举行。这一受瞩目的活动将为金融科技领域注入新的活力,并为广大投资者、合作伙伴以及关注区块链发展的人士提供一个难得的交流平台。 在SCF金融公链启动会上, Wil…

相机的位姿在地固坐标系ECEF和ENU坐标系的转换

在地球科学和导航领域,通常使用地心地固坐标系(ECEF,Earth-Centered, Earth-Fixed)和东北天坐标系(ENU,East-North-Up)来描述地球上的位置和姿态。如下图所示: ​地心地固坐标ecef和…

什么是B+树?

B树 B树是B树的一种变体,也属于平衡多路查找树,大体结构与B树相同,包含根节点、内部节点和叶子节点。多用于数据库和操作系统的文件系统中,由于B树内部节点不保存数据,所以能在内存中存放更多索引,增加缓存…

R语言实现免疫浸润分析(2)

原始数据承接免疫浸润分析&#xff08;1&#xff09;&#xff0c;下面展示免疫浸润结果&#xff1a; #直接使用IOBR包内的cell_bar_plot pic<-cell_bar_plot(input quantiseq_immo_de[1:20,], title "quanTiseq Cell Fraction") #使用ggplot2 library(ggplot2)…

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

NLP文本匹配任务Text Matching [有监督训练]&#xff1a;PointWise&#xff08;单塔&#xff09;、DSSM&#xff08;双塔&#xff09;、Sentence BERT&#xff08;双塔&#xff09;项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本匹配的方法进行实现&#xff1a;Poin…

【游戏评测】河洛群侠传一周目玩后感

总游戏时长接近100小时&#xff0c;刚好一个月。 这两天费了点劲做了些成就&#xff0c;刷了等级&#xff0c;把最终决战做了。 总体感觉还是不错的。游戏是开放世界3D游戏&#xff0c;Unity引擎&#xff0c;瑕疵很多&#xff0c;但胜在剧情扎实&#xff0c;天赋系统、秘籍功法…

不花一分钱,利用免费电脑软件将视频MV变成歌曲音频MP3

教程 1.点击下载电脑软件下载地址&#xff0c;点击下载&#xff0c;安装。&#xff08;没有利益关系&#xff0c;没有打广告&#xff0c;只是单纯教学&#xff09; 2.安装完成后&#xff0c;点击格式工厂 3.然后如图所示依次&#xff0c;点击【音频】->【-MP3】 3.然后点击…

简单记录牛客top101算法题(初级题C语言实现)BM24 二叉树的中序遍历 BM28 二叉树的最大深度 BM29 二叉树中和为某一值的路径

1. BM24 二叉树的中序/后续遍历 要求&#xff1a;给定一个二叉树的根节点root&#xff0c;返回它的中序遍历结果。                          输入&#xff1a;{1,2,#,#,3} 返回值&#xff1a;[2,3,1]1.1 自己的整体思路&#xff08;与二叉树的前序遍…

Java教程:如何使用切面环绕方法对所有接口进行添加出入参日志保存功能

背景&#xff1a; ----在很多时候我们做开发时&#xff0c;往往只是提供一个对外接口来进行前后端调试&#xff0c;或第三方系统联调&#xff0c;并使用log进行日志打印&#xff0c;每当出现问题进行排查时&#xff0c;只需要查看服务器日志就可以定位到问题&#xff0c;从而解…