码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Stable diffusion采样器详解


    在我们使用SD web UI的过程中,有很多采样器可以选择,那么什么是采样器?它们是如何工作的?它们之间有什么区别?你应该使用哪一个?这篇文章将会给你想要的答案。
    合集 - AIGC(27)
    1.轻松复现一张AI图片04-222.Stable Diffusion中的常用术语解析04-233.Stable diffusion中这些重要的参数你一定要会用04-244.Stable Diffusion中的embedding04-255.怎么使用Stable diffusion中的models05-286.Stable Diffusion WebUI详细使用指南05-29
    7.Stable diffusion采样器详解06-04
    8.原来Stable Diffusion是这样工作的06-069.MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过06-1210.MoneyPrinterPlus:AI自动短视频生成工具,详细使用教程06-1711.MoneyPrinterPlus:AI自动短视频生成工具-阿里云配置详解06-2012.MoneyPrinterPlus:AI自动短视频生成工具-腾讯云配置详解06-2513.MoneyPrinterPlus:AI自动短视频生成工具-微软云配置详解06-2614.重磅!免费一键批量混剪工具它来了,一天上万短视频不是梦06-2815.hypernetwork在SD中是怎么工作的07-0116.SD中的VAE,你不能不懂07-0317.福利来了!MoneyPrinterPlus可以自动配置环境和自动运行了07-0418.手把手教你生成一幅好看的AI图片07-0519.什么?这动物图片可以上国家地理?07-0920.重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了07-1021.MoneyPrinterPlus全面支持本地Ollama大模型07-1522.在MoneyPrinterPlus中使用本地chatTTS语音模型07-1623.fasterWhisper和MoneyPrinterPlus无缝集成07-2424.再升级!MoneyPrinterPlus集成GPT_SoVITS08-1425.AI图像放大工具,图片放大无所不能09-0326.LoRA大模型微调的利器09-0427.在stable diffussion中控制生成图片的光线09-05
    收起

    在我们使用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++ SDE 和 DPM++ SDE Karras 与Ancestral采样器存在相同的缺点。它们不仅不会收敛,而且图像也会随着步数的变化而显着波动。

    DPM++ 2M 和 DPM++ 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采样器。

    Euler和Heun也是不错的选择.

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

  • 相关阅读:
    解决spawn-fcgi:child exited with: 127/126/1报错
    第3章 基础项目的搭建
    网络基础(网络层)
    通过nginx弄一个滑块加图片的人机验证
    用Spring Cloud Alibaba构建用户中心!只要5分钟
    Terraform 华为云最佳实践
    【校招VIP】前端JS语言考点之px rem等单位
    【kubernetes】关于k8s集群如何将pod调度到指定node节点?
    在{{}}中拼接字符
    开源数据库 SQLite 发布 3.37.0 版本
  • 原文地址:https://www.cnblogs.com/flydean/p/18230619
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号