Stable Diffusion Web UI基础入门之常用参数

逆天壁虎 2024-10-03 17:33:01 阅读 82

在之前的文章中我们介绍了,Stable Diffusion的基础知识和使用工具———Stable Diffusion AI入门介绍。这篇文档带大家了解一下Stable Diffusion Web UI的常用参数,在日常绘图中如何使用。

我们知道在Stable Diffusion Web UI(文中Web UI代替)中绘图,基本的使用方法很简单,只需选择合适的模型,然后输入正向提示词、反向提示词即可。不过,如果要得到更细致的结果,就需要对各个参数的设置都有所了解。下面我们就来介绍一下常用的参数,如下图Web UI中的配置:

常用参数配置

Sampling Method(采样方法)

为了生成图像,Stable Diffusion会先在潜空间中生成一张随机的噪声图,然后再对这张图片多次去噪,最后得到一张正常的图片,如下图所示。这个去噪的过程被称为采样(sampling),而采样方法(sampler/sampling method)则是这个过程中使用的方法。

1-1

可选的参数有很多种,

1-2

经典的ODE求解器(Old-School ODE solvers)

常微分方程的全称是Ordinary Differential Equation,‌简记为ODE。

Euler:欧拉采样方法。

Henu:改进的或修改过的欧拉方法(即,显式的梯形规则)。

LMS:线性多步法,与欧拉采样器速度相仿,但是更准确。

Euler、Henu、LMS采样方法比较简单,是经典的常微分方程(ODE)求解器。其中Euler是最简单的求解器,Henu比Euler更准确但是也更慢,LMS(Linear Multi-Step method,线性多步法)速度与Euler相同,但LMS号称更准确。

祖先采样方法(Ancestral samplers)

有一些取样器的名字中带有一个字母“a”​,这表明它们是祖先采样方法(ancestral sampler)。

祖先采样方法属于随机采样方法,它们会在每个采样步骤中添加随机噪声,使结果具有一定的随机性,从而探索不同的可能性。

需要说明的是,还有一些其他方法也是随机采样,尽管它们的名字中没有“a”​。

使用祖先采样方法可以通过较少的步骤产生多样化的结果,但缺点是图像不会收敛,随着迭代步数的增加,图像将不断变化,生成图像可能更嘈杂且不真实。而如果使用Euler等收敛采样方法,一定步数之后图像的变化会逐渐变小,直到趋于稳定。

相关的采样方法如下:

● Euler a。

● DPM2 a。

● DPM++ 2S a。

● DPM++ 2S a Karra。

Karras版本方法

带有“Karras”字样的采样方法使用了泰罗·卡拉斯(Tero Karras)等人的论文中推荐的噪声规则,与默认的规则相比,Karras的规则在开始时噪声较多,在后期噪声较少,据他们研究,这样的规则可以提高图像质量。

1-3

相关的采样方法如下:

● LMS Karras。

● DPM2 Karras。

● DPM2 a Karras。

● DPM++ 2S a Karras。

● DPM++ 2M Karras。

● DPM++ SDE Karras

DDIM和PLMS

DDIM和PLMSDDIM(Denoising Diffusion Implicit Model,去噪扩散隐式模型)和PLMS(Pseudo Linear Multi-Stepmethod,伪线性多步法)是第一版Stable Diffusion中就附带的采样方法,其中DDIM是最早为扩散模型设计的采样方法之一,PLMS则比DDIM更新、更快。

当前这两种采样方法都不再广泛使用。

DPM系列

DPM(Diffusion Probabilistic Model solver,扩散概率模型求解器)和DPM++是为2022年发布的扩散模型设计的新采样器,它们代表了一系列具有相似架构的求解器。

DPM2与DPM相似,只是它是二阶的,更准确但是也更慢。

DPM++是对DPM的改进,它使用快速求解器来加速引导采样。与Euler、LMS、PLMS和DDIM等其他采样器相比,DPM++速度更快,可以用更少的步骤实现相同的效果。

DPM++ 2S a是一种二阶单步求解器,其中“2S”代表“Second-order Single-step”​(二阶单步)​,​“a”表示它使用了祖先采样方法。

DPM++ 2M是一种二阶多步求解器,其中“2M”代表“Second-order Multi-step”​(二阶多步)​,结果与Euler相似,它在速度和质量方面有很好的平衡,采样时会参考更多步而不是仅当前步,所以质量更好,但实现起来也更复杂。

DPM fast是DPM的一种快速实现版本,比其他方法收敛更快,但牺牲了一些质量。DPM fast通常用于对速度有较高要求的批量处理任务,但可能不适用于对图像质量要求较高的任务。

DPM adaptive方法可以根据输入图像自适应实现一定程度的去噪所需的步数,但它可能会很慢,适合需要较多处理时间的大图像任务。

DPM++ SDE和DPM++ SDE Karras使用随机微分方程(SDE)求解器求解扩散过程,它们与祖先采样方法一样不收敛,随着步数的变化,图像会出现明显的波动。

UniPC

UniPC(Unified Predictor-Corrector)是2023年发布的新采样方法,是目前最快最新的采样方法,可以在5~10步内实现高质量的图像生成

k-diffusion

k-diffusion,它是指凯瑟琳·克劳森(Katherine Crowson)的k-diffusion的GitHub库实现和与之相关的采样方法,即前面提到的泰罗·卡拉斯(Tero Karras)等人论文中研究的采样方法。

基本上Web UI中,除了DDIM、PLMS和UniPC之外的所有采样方法都源自k-diffusion。

采样器速度对比:

在使用不同的采样器生成相同的图像,最多采样 40 步,同时以使用Euler(欧拉)方法作为参考,时间结果如下:

1-4

具体分为如下:

1-5

排除DPM adaptive,其余的渲染时间分为两组,第一组花费的时间大约相同(约 1 倍),另一组花费的时间大约是两倍(约 2 倍)。这反映了求解器的顺序。二阶求解器虽然更准确,但需要对去噪 U-Net 进行两次评估。所以它们慢了 2 倍。

建议:

大体上来说,以上所介绍的采样方法各有特点,主要差异是在速度、质量、收敛性上有所不同。

在速度以及收敛性上,各采样方法的评判标准是确定的,但对于图片渲染的质量则没有统一的标准。

有人认为带有“Karras”的方法比不带这个标签的同名方法更好,但也有人认为二者并没有明显的差异。

同时,一些采样方法在照片等真实风格的图像上表现较好,另一些则在卡通漫画等风格的图像上更具优势。可以在具体实践中分别尝试比较,以找到最合适的采样方法。

如果要提供一些经验上的建议,通常认为DPM++系列采样方法是大多数情况下较好的选择。

以下是一些更具体的建议,仅供参考。

如果时间有限,不想尝试太多方案,可以选择Euler或者DPM++ 2M。

如果希望生成速度快且质量不错,可以选择DPM++ 2M Karras或者UniPC。

如果希望得到高质量的图像,且不关心收敛性,可以选择DPM++ SDE Karras。

Schedule type(调度类型)

1-6

Web UI的1.9版本中包含的一项变化就是,把采样器和调度器(Schedule type)分开了,之前是合并在一起来选择的。

如果是选择了Automatic,那么会根据采样器自动调取最合适的调度器。一般情况选择“Automatic”就好了。

在Stable Diffusion模型中,采样器(Sampler)和调度器(Scheduler)是生成图像过程中的关键组件,它们共同决定了生成图像的质量和速度,那么这俩概念到底意味着什么呢?

采样器(Sampler):在Stable Diffusion的上下文中,采样器是指用于从噪声图像生成清晰图像的算法。这个过程被称为采样,因为它在每一步中生成一张新的图像样本。采样器通过在一系列步骤中逐渐减少噪声来生成图像,每一步都会根据预定的噪声计划(Noise Schedule)来减少噪声,并生成新的图像样本。不同的采样器有不同的算法和特性,影响着图像生成的速度和质量。

调度器(Scheduler):调度器通常与采样器的概念紧密相关,它负责控制采样过程中每一步的噪声水平,也就是所谓的噪声计划(Noise Schedule)。调度器决定了在生成图像的每一步中减少多少噪声,从而影响采样过程的速度和最终图像的清晰度。在某些文献中,调度器和采样器这两个术语有时被交替使用,因为它们都涉及到控制生成过程中的噪声减少。

就算是概念解释部分,这两个词也的确很难分开,或者可以简单的理解为:采样器是图像生成过程中的降噪算法,而调度器则控制这个过程中每一步的噪声水平,两者共同作用,决定了生成图像的质量和所需时间。当然了,这两者本来就是搭配使用的,所以强行分开解释貌似也意义不大。

对于SDXL-Lightning模型时,使用SGM Uniform的调度器会比其他调度器更适合lightning类型的模型。

大多数情况下调度器选择Automaitc就好了,除非使用了lightning类型的模型,那就手动改一下为SGM Uniform, 当然,就算是忘记修改了,问题也不大。

Sampling Steps(迭代步数)

1-7

迭代步数是指在生成图片时进行多少次扩散计算,每次迭代相当于对图像进行一次去噪。迭代的步数越多,花费的时间也越长。

迭代步数并不是越多越好,具体数字的选择和采样方法、参数设置等因素有关,一般在20~50次即可,太少可能会生成尚未完成的模糊的图像,太多则是一种浪费。

结合前面的采样方法,如果想要速度快、收敛性好、质量也不错,且想试试新东西的话,最好选择:

DPM++ 2M Karras:20-30 步UniPC:20-30 步

如果想要比较好的质量,同时不在意是否收敛的话,可以选择:

DPM++ SDE Karras:10-15 步 (注意该采样器比较慢)DDIM:10-15 步

Hires. fix(高分辨率修复)

1-8

“高分辨率修复”功能可用于将生成的图片放大为分辨率更高的高清图片。

Stable Diffusion的原始分辨率是512像素或768像素,这个尺寸对大部分实际应用场景来说都太小了,虽然可以在下方的宽度和高度参数中直接设置更大的尺寸,但那样也可能带来新的问题,因为偏离原始分辨率可能会影响构图并生成错误的内容,例如生成的人物有两个头等。这时,就可以先生成较小的正常尺寸的图片,再使用“高分辨率修复”(Hires.fix)功能来放大图片的尺寸。

勾选“高分辨率修复”复选框,界面上会显示更详细的设置项,如上图所示。

Upscaler(放大算法)

1-9

其中Lanczos、Nearest算法是较为传统的算法,仅根据图像的像素值进行数学运算来扩大画面并填充新像素,效果一般,尤其当生成图像本身就比较模糊时,这些算法无法准确地填充缺失的信息。

ESRGAN 4x算法倾向于保留精细的细节并产生清晰锐利的图像。

LDSR(Latent Diffusion Super Resolution)是一种潜在扩散模型,质量好但速度非常慢,一般不推荐。

R-ESRGAN 4x+是对ESRGAN 4x的增强,在处理逼真的照片类图像时表现最佳,如果要放大风格较为真实的图像,推荐使用这个算法。R-ESRGAN 4x+ Anime6B则是专为二次元图像优化过的算法,处理二次元图像时效果较好。

当然,也可以直接使用默认的Latent算法开始,多数情况下它的表现已经足够好。如果对效果不太满意,可再依次尝试其他算法,选择更佳的方案。

Hires steps(迭代步数)

“高分迭代步数”(Hires steps)是指放大图像时的采样步数。默认为0,表示与生成图片时的步数相同,也可以修改为其他值。

该值对最终图像的影响很大,如果步数过多,可能会生成一些奇怪的效果,可以根据具体场景尝试不同的值

Denoising strength(去噪强度)

“重绘幅度”(Denoising strength)也叫去噪强度,控制在执行放大采样之前添加的噪声强度。

对Latent系列的放大器来说,这个值在0.5~0.8效果较好,低于0.5可能会得到模糊的图像,数值太高则会使图像细节发生很大的变化。

Upscale by(放大倍数)

“放大倍数”参数非常直观,就是控制具体要将原图放大多少倍。如果原图尺寸是512×512,将放大倍数设为2时,将得到1024×1024的新图。

尺寸调整

Resize height to(调整高度) 和 Resize width to(调整宽度)是在放大倍数参数后面是设置宽度和高度的值,也可以调整这两个值,直接指定新图的尺寸。如果设置了具体的宽度和高度值,那么放大倍数参数将失效。

Refiner(图片精修)

这个功能主要是针对SDXL及其衍生模型。

SDXL 采用了一种两步走的生图方式,先用1个基础模型生成一张看起来差不多的图片,然后再使用一个精修模型把它打磨的更漂亮。示意图如下:

1-10

Refiner配置中,我们可以看到两个选项:

1-11

CheckPoint(大模型)

前边是要使用的精修大模型,此处可以选择任何一个SD大模型,不仅仅是SDXL模型,SD1.5模型同样可以干这件事。

Switch at(切换点)

后边是精修开始的步数百分比,上边采样步数填写的是20,精修模型就从 20*0.8=16 之后,也就是第17步,开始参与绘制图片。

Width&Height(宽度和高度)

可以指定生成图片的宽度和高度,如下图所示:

1-12

默认值都是512,范围为64~2048,可以输入范围内的任意值,但需要是8的倍数。图片宽度和高度的数值越大,生成时所需要的时间和资源也越多。

另外,Stable Diffusion最初是基于256×256大小的数据集训练的,后来的潜在扩散模型(Laten diffusion model)使用了512×512的数据集训练,2.0之后的版本则使用768×768的数据集训练。因此,Stable Diffusion在生成512×512大小的图片时效果更好,2.0之后的版本中将宽或者高至少一项设为768时效果更好。

如果希望生成分辨率较高的图,除了调整宽度和高度,也可以先生成一个尺寸较小的图,然后使用“高分辨率修复(Hires.fix)”等设置项或其他工具来放大图片,以减少资源消耗。

批量生成

主要两个参数,

Batch count(总批次数):一共执行多少次生成任务,默认值为1,最大值为100。

Batch size(单批数量):每次任务生成多少张图片,默认值为1,最大值为8。

1-13

其中生成图片的总数为两者相乘,即如果总批次数为2,单批数量为3,那么总共生成的图片数将是2×3=6张。

如果需要批量生成4张图片,设置“总批次数为4、单批数量为1”和设置“总批次数为1,单批数量为4”效果是一样的,但后者会更快一些,同时后者也需要更大的显存支持。

批量生成时,随机数种子参数(Seed)的值会不断递增,即第二张图的种子值是第一张图的种子值+1,第三张图的种子值是第二张图的种子值+1,以此类推。这个特性可以保证批量生成的图片产生变化,但又不至于变化太大。

CFG Scale

CFG Scale(Classifier Free Guidance scale)参数指定提示词的权重影响,默认值为7,如图7-25所示。

理论上,CFG值越高,AI就会越严格地按照提示词进行创作,CFG值越低,AI会越倾向于自由发挥。

如果CFG值为1,AI会几乎完全自由地创作,而值高于15时,AI的自由度将非常有限。

在Web UI中,CFG值的范围为1~30,可以满足绝大部分应用场景,不过如果通过终端使用Stable Diffusion,则最高可以将CFG设为999,还可以设为负值。当CFG的值为负数时,Stable Diffusion将生成与提示词相反的内容,类似使用反向提示词。

当CFG值设置得较高时,输出图像可能会变得模糊,细节丢失,此时,可以通过增加采样迭代步数或者更改采样方法来修复问题。

CFG值以及影响的参考如下:

● 1:基本上忽略提示词。

● 3:参考提示词,但更有创意。

● 7:在遵循提示词和自由发挥之间的良好平衡。

● 15:更遵守提示词。

● 30:严格按照提示词操作。

多数情况下,CFG的数值为7~10是一个较为合适的选择。

Seed(随机数种子)

种子(Seed)在Stable Diffusion中是一个非常重要的概念,可以大致理解为图片的特征码,如果想重复生成某张图片,除了使用相同的提示词、采样方法、迭代步数等参数,种子也必须要保持一致。

配置图如下:

1-14

默认情况下,随机数种子显示为-1,表示每次都使用一个新的随机数。控件旁边的骰子按钮表示种子使用随机值,单击之后随机数种子输入框会显示-1。绿色循环箭头按钮则表示使用上一次生成图像的种子值,可用于重现结果。

在查看生成的图片时,可以发现图片的文件名可能类似“00044-247521062.png”​,其中前面的“00044”表示这是今天生成的第44张图片(编号从0开始,第一张图片是“00000”​,第二张图片是“00001”​)​,后面的“247521062”即是这张图片的种子值。

可以在随机数种子输入框中输入具体的种子值,例如“247521062”​,以便重新生成指定的图片。

勾选随机数种子设置项最右侧的复选框,可以打开扩展栏,如下图所示:

1-15

其中变异随机种子(Variation seed)和变异强度(Variation strength)两个值需要配合调整,调整这两个值,可以生成介于两张图片(两个随机种子)中间的图。其中变异强度的值范围为0~1,0表示完全不变异,1表示完全变异。

从宽度/高度中调整种子是另一个实用功能。有时可能想调整一张图片的尺寸,即使已经输入了固定的种子值,但在Stable Diffusion中,调整尺寸也会让图片内容发生较大变化,这时,就可以使用从宽度/高度中调整种子的功能。

这样能保留原图的很多特征,甚至可以得到更好的效果。

Script(脚本)

最后介绍一下Script使用,比如有时候我们在测试生成图片效果时,在提示词保持不变的情况下,可能会在我们使用的模型,采样方法,采样迭代步数等参数上面进行调优。通过比较看看效果,再选择一张自己最满意的图片。

找到Script选项,选中X/Y/Z plot。

1-16

可以看到脚本选项"X/Y/Z plot"就是提供X轴,Y轴,Z轴类型选择和类型对应的值的参数设置。

同时X轴,Y轴,Z轴类型的提供的选择项都是一样的。

以下是主要项目的含义:

X/Y/Z轴的类型: 根据每个轴来确定要比较的要素。如下所述,您可以指定各种要素。X/Y/Z轴的值: 每个轴的设定值。如后文所述,填写时需要遵循规定的格式。显示类型和值: 是否绘制表格标题。宫格图边框间距: 表格图像之间的间隔。如果设置为大于0的值,将会产生间隙。

比如这里配置了Steps和Sampler,如下:

1-17

相关使用说明:

我们在脚本中定义的X轴或者Y轴类型参数,优先级高于在参数面板中对应的参数设置。例如,X轴我们定义了采样迭代步数,在参数面板里面的采样迭代步数参数设置就没有作用了。如果使用不到Z轴,不用设置Z轴,设置反而影响出图的效率。

最终结果如下:

1-18

今天的文章介绍到此为止,欢迎大家关注



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。