新手做网站流程/外贸平台有哪些?
简介
当使用稳定扩散(Stable Diffusion)技术生成图像时,首先会生成一张带有噪声的图像。然后,通过一系列步骤逐渐去除图像中的噪声,这个过程类似于从一块毛坯的白色大理石开始,经过多日的精细雕刻,最终雕塑出一尊如米开朗基罗的大卫般的精美雕像。
在这个过程中,涉及到几种不同的算法。首先是“采样器”(sampler)算法,它从使用的模型中获取样本,并将噪声预测器估算出的噪声应用于这些样本。接着,算法从正在处理的图像中减去这些带噪声的样本,就像每一次雕刻都在精雕细琢地塑造大理石一样。
采样器算法负责控制去噪的具体操作,而另一个名为“噪声调度器”(noise scheduler)的算法则负责调节去噪的程度,决定每一步去除多少噪声,以确保整个过程高效又精准。
若噪声减少是线性的,则在图像处理的每一步中,变化程度都将是相同的,可能导致图像出现突兀的变化。使用斜率为负的噪声调度器可以在初期快速去除大量噪声,加速整个过程,然后逐渐减少去噪量,以精细调整图像的小细节。
若继续以大理石雕刻为比喻,在雕刻的初期,使用较大力度快速敲除大块部分是有益的,可加快雕塑的整体进展。而在雕塑的末期,需要极其细致和谨慎地处理,精确雕琢出细节,以防雕塑出现破损。
收敛性是这个过程中的关键要素。当采样算法达到某个阶段,继续进行更多步骤不再改善结果时,则认为图像已经达到了收敛状态。
有些算法能够快速收敛,适用于快速验证创意和想法。其他一些算法可能需要更长时间或更多步骤才能收敛,但通常能提供更高质量的结果。还有一些算法因为没有设定极限,永远不会收敛,为创新和创造性提供更多空间。
采样器
DDPM
DDPM(Diffusion Probabilistic Models)是最早期的采样器之一,它使用明确的概率模型来消除图像中的噪声。然而,这种方法需要执行大量的处理步骤才能获得满意的结果。但现在很多算法都以不再提供这个采样器了。
DDIM
DDIM采用的是隐式概率模型。与DDPM相比,DDIM能够通过更少的处理步骤取得更佳的效果,使其成为一个更高效快速的采样器,同时基本保持图像质量。
隐式概率模型的优势在于它们通常更加灵活和高效,能够以更少的步骤生成高质量的图像。相比之下,明确概率模型(如DDPM)可能需要更多的处理步骤来达到相似的效果。这种改进使得DDIM成为一个更具吸引力的选择,特别是在需要快速生成高质量图像的情况下。
虽然DDIM在性能和效率方面表现出色,但它仍然建立在隐式概率模型的基础上,这意味着它可能具有一些独特的特性和限制。DDIM为稳定扩散技术提供了一个更快速、高效的采样器选项,同时保持了图像质量。
PLMS
与DDIM不同,它不能通过较少的步骤清除噪声。然而,在进行了50到100个步骤之后,PLMS已经能够提供良好的结果。
虽然PLMS可能需要更多的处理步骤来达到满意的效果,但一旦执行了足够数量的步骤,它仍然能够产生高质量的图像。这种方法可能更适合那些能够容忍稍长处理时间的应用场景,或者需要更高质量图像输出的情况。
PLMS虽然不能通过较少的步骤来清除噪声,但在执行足够的步骤后,仍然能够提供良好的结果,这使得它在某些情况下仍然是一个有用的采样器选项。
Euler
Euler方法是一种简单直接的采样器,基于普通微分方程(ODE)。它的特点是在每一步处理中都以固定的比例逐渐减少噪声。尽管在精确度上可能存在一些不足,但由于其简单性和快速处理速度,Euler方法被广泛应用。
简单来说,Euler方法通过在每一步处理中以固定的步长向前推进系统状态来逼近微分方程的解。在稳定扩散技术中,这意味着在每一步中以固定的比例减少噪声,直到达到所需的图像质量水平。
尽管Euler方法可能不如其他更复杂的算法在处理质量方面表现得那么优秀,但由于其快速处理速度,它仍然是许多应用中首选的采样器之一。特别是在需要迅速生成图像或者对计算资源有限的情况下,Euler方法可以提供一种简单而有效的解决方案。
Euler算法非常快速,即使在较少的步数内也能够得出良好的结果。其优势在处理30到50步之间尤为明显。
Heun
Heun方法可以被视为对Euler方法的一个更精细的改进。与Euler方法仅使用线性近似不同,Heun方法在每个处理步骤中执行两个任务,因此被称为二阶采样器。它首先使用线性近似做出一个预测,然后通过非线性近似进行校正。这种方法在提高精确度的同时也确保了更高的图像质量。
Heun方法的精确度得到了提升,但这种改进也带来了一个小代价:处理时间大约是Euler方法的两倍。虽然处理时间增加了,但相对于其提供的更高的图像质量和更精确的结果,这种额外的计算成本通常是可以接受的。
Heun方法通过在每个处理步骤中执行预测和校正两个步骤来提高精确度,从而确保了更高的图像质量。虽然处理时间比Euler方法长,但对于那些需要更高精度的应用场景,Heun方法提供了一个更为可靠的选择。
在10个步骤中仍然可能存在一些噪点,但随着步数的增加,这些噪点会逐渐消失。在30个步骤中,Heun方法提供了高质量的图像,尽管在50个步骤中会提供更多细节层次。然而,在100个步骤中,图像几乎不会改变,因此等待结果可能不值得。
LMS
LMS(Locally-Meaningful Sampling)可以被视为PLMS的一个变种,区别在于LMS使用的是数值方法,而非PLMS中的概率方法(从PLMS中去掉概率因素“P”就得到了LMS)。
与Euler和Heun不同的是,LMS方法会利用前几个步骤中的信息来在每一步减少噪声。这样的处理方式虽然提高了图像的精度,但相应地也增加了计算需求,导致处理速度较慢。
使用几个步骤,可以得到一个能够生成模仿药物效果的迷幻图像的采样器。这是一个不值得的采样器,因为尽管速度很快,但需要大约100个步骤才能提供一些体面的东西。
DPM 模型家族
DPM(Diffusion Probability Model)是一种概率模型,它在DDPM的基础上做了一系列改进。DPM2可以被看作是DPM的升级版,它在原有模型的基础上进行了进一步的改良和优化。使用10个步骤,就可以得到令人印象深刻的图像质量(不要尝试5个步骤,结果可能不尽如人意)。大约30到50个步骤是理想的。通常情况下,增加更多的步骤并不一定值得。
另一个基于DPM的改进版本是DPM++。DPM++采用了一种混合方法,结合了确定性和概率方法进行采样以及后续的噪声减少。在Automatic1111中,并没有单独实现这个采样器,而是将它与其他方法相结合。具体的结合方式和效果,我们将在下一部分详细探讨。
因此,DPM衍生出了两个重要的改进版本:DPM2和DPM++,每个都具有其独特的特点和优势。
更快的 DPM 模型(DPM-Solver 和 UniPC)
扩散概率模型(DPM)是基于概率原理的一种方法,与确定性数值方法如Euler、Heun或LMS等不同。它在每一步中使用近似方法来处理问题,以实现尽可能准确的采样。
在这些模型中,求解器是一个关键组成部分,它在计算和近似采样的概率分布过程中起着至关重要的作用。DPM-Solver 是一种新技术,在每一步的采样过程中有效地减少了时间。
一些版本的 DPM,如 DPM fast 或 DPM++ 2S/DPM++ 2M,采用了更快速的求解器,因此在采样过程中节省了时间。它们可能会很快(虽然不是非常快),但当使用少量步骤时,它们可能无法提供令人满意的结果。有趣的是,它们提供了与其他采样器不同的结果,并且在电影效果方面更加明显。
在 DPM++ 2S/DPM++ 2M 中,“2”表示它们是二阶模型,结合了预测器和校正器两种机制,以更精确地逼近最终结果。在这两种模式下,DPM++ 2S 和 DPM++ 2M 的求解器比标准 DPM 模型求解器运行得更快。
UniPC 是一个由统一预测器(UniP)和统一校正器(UniC)组成的求解器。它的目标是在尽可能少的步骤中达到最高的采样质量。UniPC 可以与任何 DPM 模型集成,甚至在几个步骤内生成高质量的图像。
因此,无论是单步骤还是多步骤的 DPM 模型,UniPC 都能够与之媲美,并在效率上提供更优秀的结果。 UniC 校正器也可以与这些采样算法集成,进一步提高采样效率。
在一些例子中,10步是不足以生成没有噪点的图像的,但在15或20步之后可能会得到。在30步时,图像质量非常出色,不再需要继续增加步骤,尽管仍然存在改进的空间。
更准确的DPM模型(自适应)
DPM自适应模型是对标准DPM模型的一种扩展,其主要特点是能够根据问题的难度自动调整处理步骤的大小。
具体而言,这意味着算法会自动调整采样步骤的数量,直到达到最优的收敛效果,而不是依赖于预设的步骤数量。这种方法可以生成更高质量的图像,但可能需要相对较长的时间来完成(它是所有采样器中速度最慢的一个)。
在这种情况下,与其他采样器相比,所需时间可能是其三倍或四倍,但最终的结果却是令人惊叹的。图像构图与所有其他采样器都不同,并且更像是DPM fast。
采样器选择与总结
初始采样器的变体
当一个采样器包含字母“A”,通常表示该采样器属于“祖先”变体类别。这类变体的特点是,在每个新的处理步骤中,它们会添加之前步骤中产生的随机变量。可以想象成,在每个步骤清除噪声之后,又会有一部分先前的噪声被重新引入。
由于每一步都会增加新的随机噪声,带有这一特性的采样器永远不会达到收敛状态。如果总有新噪声需要处理,就总能继续进行下一步。
这使得这些采样器具有更高的创造性。增加额外的处理步骤并不一定会提高图像质量,而是可能产生另一种类似的结果。
如果你在尝试复现使用Stable Diffusion生成的图像时失败了,即使你使用了相同的种子和参数,那可能是因为使用了一个祖先采样器。这是正常现象!因为每一步重新加入的噪声都是随机的,不同的实现或采样器版本几乎肯定会产生不同的结果。
Karras 变体
含有“Karras”(或简写为“K”)字样的变体,是指由 Nvidia 工程师 Tero Karras 所领导的一系列工作。这项工作为某些采样器带来了重要的改进,旨在提高输出质量和采样过程中计算效率。
采用了这些改进的采样器包括:LMS Karras、DPM2 Karras、DPM2 A Karras、DPM++ 2S A Karras、DPM++ 2M Karras 和 DPM++ SDE Karras 等。这些采样器利用了 Karras 的创新技术,以提升其整体性能和效率。
像DPM++ 2M一样,这个采样器在30到50步之间提供非常好的结果,但是Karras版本具有在较少的步骤中提供更好结果的优势。
Stochastic 变体
SDE(随机微分方程)变体采用了随机微分方程。简而言之,这类微分方程的使用使得噪声的建模方式更为复杂和精确,它能够利用之前步骤中的信息。原则上,这种方法能够生成更高质量的图像,但相应的代价是处理速度较慢。由于采用了随机方法,SDE 变体永远不会达到收敛状态。因此,增加处理步骤的数量并不会提高图像质量,而是会产生更多样化的结果,这一点类似于祖先采样器。
截至本文发表时,我们已经有了几种 SDE 变体,包括 DPM++ SDE、DPM++ 2M SDE、DPM++ SDE Karras 和 DPM++ 2M SDE Karras。
图像质量
如果追求高质量的图像,那么着重考虑达到收敛是至关重要的。这是获得最高图像质量的关键。如果不想牺牲太多生成速度,可以跳过像DDIM这样需要成百上千步才能收敛的采样器。虽然Heun和LMS Karras提供了不错的结果,但使用DPM++ 2M或其Karras版本可能会更好。
如果不关注生成时间,可以尝试DPM自适应或UniPC。使用上述提到的采样器,可以在20-30步内获得良好的结果,尽管尝试更多步骤也无妨。
生成速度
如果只是测试tag,并且不想花太多时间等待结果:
-
DPM++ 2M 或 UniPC:这两种采样器适用于快速测试变化。使用10-15步,就能得到非常体面的图像。
-
Euler A:如果不介意结果的可重复性,并且只是想快速测试变化,Euler A是一个快速且质量不错的祖先采样器。这可能是你的最佳选择!
创造力和灵活性
这部分专门针对祖先和随机采样器。它们既不提供低质量的输出,也不慢,只是有所不同。
这些采样器的特点(或优势,视角而定)是,如果有一个在40步中生成的图像,那么在50步中做出的图像可能会更好或更差。需要不断尝试。而这种不确定性使得这些采样器更具创造性,因为你可以通过改变步骤数量来获得细微变化。
当然,在这里Euler A和DPM++ SDE Karras特别值得一提。尝试在15步、20步、25步等不同步骤下生成图像,并观察结果如何变化。
总结
-
Ancestral (带A的采样器):
- 特点:较为古老,采样随机性高,但无法有效去除噪点。
- 缺点:关键词识别可能不如其他采样器准确。
-
Karas:
- 特点:去噪速度比默认方式快。
- 优势:能够有效去除噪点。
-
DM和PMS:
- 特点:早期采样方式,后续采样器吸收了它们的优点并改进了缺点。
-
T2MS:
- 特点:LMS的升级版,渲染速度更快,更清晰。
-
DPMDM++s de:
- 特点:应用广泛,尤其适用于人物渲染。
- DPM2在关键词识别方面较为准确,但渲染速度较慢。
评价采样器的优劣可以从两个方面考虑:步数和渲染质量。步数越少、图像越清晰则说明采样器效果越好。
例如,对于 d PM fast,它的渲染速度非常快,但需要较多的步数才能呈现出清晰的图像。另一方面,d PM adaptive 则非常强大,仅需少量步数就能渲染出清晰的图像,并且在40步时与之后步数的差异不大。
相关文章:

Stable Diffusio——采样方法使用与原理详解
简介 当使用稳定扩散(Stable Diffusion)技术生成图像时,首先会生成一张带有噪声的图像。然后,通过一系列步骤逐渐去除图像中的噪声,这个过程类似于从一块毛坯的白色大理石开始,经过多日的精细雕刻…...

小米14 ULTRA:重新定义手机摄影的新篇章
引言 随着科技的飞速发展,智能手机已经不仅仅是一个通讯工具,它更是我们生活中的一位全能伙伴。作为科技领域的佼佼者,小米公司再次引领潮流,推出了全新旗舰手机——小米14 ULTRA。这款手机不仅在性能上进行了全面升级&am…...

【leetcode热题】路径总和 II
难度: 中等通过率: 38.7%题目链接:. - 力扣(LeetCode) 题目描述 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: …...

ChatGPT在数据处理中的应用
ChatGPT在数据处理中的应用 今天的这篇文章,让我不断体会AI的强大,愿人类社会在AI的助力下走向更加灿烂辉煌的明天。 扫描下面二维码注册 数据处理是贯穿整个数据分析过程的关键步骤,主要是对数据进行各种操作,以达到最终的…...

微服务-Alibaba微服务nacos实战
1. Nacos配置中心 1.1 微服务为什么需要配置中心 在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此&…...

Linux Driver | 设备树开发之初识设备树
Linux Driver | 设备树开发之初识设备树 时间:2024年2月22日20:35:13 文章目录 **Linux Driver** | 设备树开发之初识设备树参考1.设备树开发2.`Linux`设备树的由来3.`Linux`设备树的由来-为什么会有设备树4.设备树的由来5.快速编译设备树---**DTC** (`device tree compiler`)…...

2月24日(周六)比赛前瞻:曼联 VS 富勒姆、拜仁 VS 莱比锡
大家好,博主将持续更新胜负14场前瞻,此处每日赛事间歇更新,胃信号每日更新。 精选赛事:曼联 VS 富勒姆 曼联近期状态显著提升,上一轮联赛客场2-1战胜卢顿,连续7场正赛取得6胜1平的成绩,保持不败…...

React18源码: task任务调度和时间分片
任务队列管理 调度的目的是为了消费任务,接下来就具体分析任务队列是如何管理与实现的 在 Scheduler.js 中,维护了一个 taskQueue, 任务队列管理就是围绕这个 taskQueue 展开 // Tasks are stored on a min heap var taskQueue - []; var timerQueue …...

【工具类】阿里域名关联ip(python版)
获取代码如下 # codingutf-8import argparse import json import urllib import logging# 加载 ali 核心 SDK from aliyunsdkcore.client import AcsClient from aliyunsdkalidns.request.v20150109 import (DescribeSubDomainRecordsRequest,AddDomainRecordRequest,UpdateDo…...

STM32自学☞输入捕获测频率和占空比案例
本文是通过PA0口输出PWM波,然后通过PA6口捕获PWM波的频率和占空比,最终在oled屏上显示我们自己设置的频率和占空比。由于和前面的pwm呼吸灯代码有重合部分所以本文中的代码由前者修改而来,对于文件命名不要在意。 pwm_led.c文件 /* 编写步…...

[yolov9]使用python部署yolov9的onnx模型
【框架地址】 https://github.com/WongKinYiu/yolov9 【yolov9简介】 在目标检测领域,YOLOv9 实现了一代更比一代强,利用新架构和方法让传统卷积在参数利用率方面胜过了深度卷积。 继 2023 年 1 月 正式发布一年多以后,YOLOv9 终于来了&a…...

ShellExecute的用法
1、标准用法 ShellExecute函数原型及参数含义如下: function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall; ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将…...

蓝桥杯:递增三元组
题目 递增三元组(2018年蓝桥杯真题) 题目描述: 给定三个整数数组 A [A1, A2, … AN], B [B1, B2, … BN], C [C1, C2, … CN], 请你统计有多少个三元组(i, j, k) 满足: 1 < i, j, k < N Ai < Bj &…...

目标检测卷王YOLO卷出新高度:YOLOv9问世
论文摘要:如今的深度学习方法重点关注如何设计最合适的目标函数,使得模型的预测结果能够最接近真实情况。 同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。 现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。 本文将深…...

华为---RSTP(二)---RSTP基本配置示例
目录 1. 示例要求 2. 网络拓扑图 3. 配置命令 4. 测试终端连通性 5. RSTP基本配置 5.1 启用STP 5.2 修改生成树协议模式为RSTP 5.3 配置根交换机和次根交换机 5.4 设置边缘端口 6. 指定端口切换为备份端口 7. 测试验证网络 1. 示例要求 为防止网络出现环路…...

【Python笔记-设计模式】装饰器模式
一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…...

二十八、图像的高斯模糊操作
项目功能实现:对一张图片进行高斯模糊操作 按照之前的博文结构来,这里就不在赘述了 更多的图像模糊操作原理可参考博文:七、模糊操作,里面有详细原理讲解,只不过代码是python写的。 一、头文件 gaussian_blur.h #p…...

开源分子对接程序rDock的安装及使用流程
欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么? rDock来源 rDock是一个快速、多功能的开源对接程序,可用…...

【JavaEE】_tomcat的安装与使用
目录 1. Tomcat简介 2. Tomcat安装 2.1 下载Tomcat并解压缩 2.2 启动Tomcat 2.2.1 Tomcat乱码问题 2.2.2 Tomcat闪退问题 2.3 访问Tomcat欢迎页面 3. 使用Tomcat部署前端代码 3.1 路径匹配 3.2 文件路径访问与网络访问 4. 静态页面与动态页面 5. 基于tomcat的网站后…...

实现一个Windows环境一键启停Oracle的bat脚本
Oracle数据库有许多优点,其中一些最重要的包括: 可靠性和稳定性: Oracle数据库经过长期的发展和测试,被广泛认为是非常可靠和稳定的数据库管理系统。它在大型企业和关键业务环境中被广泛应用,能够处理高负载和大规模的数据。 高性能: Oracle数据库具有优化的查询处理器和…...

大数据-数据可视化-环境部署vue+echarts+显示案例
文章目录 一、安装node.js1 打开火狐浏览器,下载Node.js2 进行解压3 配置环境变量4 配置生效二、安装vue脚手架1 下载vue脚手架,耐心等待。三、创建vue项目并启动1 创建2 启动四、下载echarts.js与axios.js到本地。五、图表显示demo【以下所有操作均在centos上进行】 一、安…...

spark超大数据批量写入redis
利用spark的分布式优势,一次性批量将7000多万的数据写入到redis中。 # 配置spark接口 import os import findspark from pyspark import SparkConf from pyspark.sql import SparkSession os.environ["JAVA_HOME"] "/usr/local/jdk1.8.0_192"…...

C# Socket的使用
C# 中的 System.Net.Sockets.Socket 类是 .NET Framework 提供的核心类,用于处理网络套接字编程。Socket 类是用于网络编程的基础类,它位于 System.Net.Sockets 命名空间中。 使用 Socket 类,可以创建客户端和服务器应用程序来进行基于TCP、…...

Spring Cloud + Vue前后端分离-第17章 生产打包与发布
源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 Spring Cloud Vue前后端分离-第17章 生产打包与发布 17-1 注册中心配置中心Nacos 注册中心 Nacos 快速开始 | Nacos 本节内容:使用nacos作注册中心配置中心,不用eureka Nacos…...

力扣热题100_普通数组_56_合并区间
文章目录 题目链接解题思路解题代码 题目链接 56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区…...

Springcloud OpenFeign 的实现(二)
Springcloud OpenFeign 的实现(一) 一、Feign request/response 压缩 您可以考虑为您的外部请求启用请求或响应GZIP压缩。您可以通过启用以下属性之一来完成此操作: feign.compression.request.enabledtrue feign.compression.response.en…...

[C++]智能指针用法
一、智能指针存在的意义 智能指针主要解决以下问题: (1)内存泄漏:内存手动释放,使用智能指针可以自动释放。 (2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题…...

六、行列式基本知识
目录 1、行列式的特性 2、行列式的计算方法: 2.1 通过行列式的定义去计算:对角法则。 2. 2 利用行列式的性质将行列式转化为上三角行列式: ①行列式的性质 : 性质一: 性质二: 性质三: 性质四:行列式之间的加法...

中断系统(详解与使用)
讲解 简介 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 假设一个人在家看电视,这时候突然门铃响了,这个人此时就要停止看电视去开门,然后关上门后继续回来…...

uniapp开发微信小程序跳转到另一个小程序中
注意:一开始我的云上务工模块是单独的tabbar界面,但是小程序跳转好像不能直接点击tabbar进行,所以我将这里改成了点击首页中的按钮进行跳转 点击这里进行小程序跳转 目录 基础讲解 uniapp小程序跳转的两个方法 调用说明(半屏跳转…...