上一篇Prompt(提示词)- StableDiffusion文生图我们提示词的基本用法,本篇文章详细介绍下Sampling method以及Sampling steps。本篇文章如果无特殊说明,演示使用sd_xl_base_1.0.safetensors的基础模型,这个模型可以更好的理解自然语言,尺寸 1024 * 1024,固定随机种子(Seed)。

什么是采样

为了生成一张图片,Stable Diffusion 首先在潜在空间中生成一张完全随机的图片。然后噪声预测器估计图片的噪声。将预测的噪声从图片中减去。这样的过程重复十几次。最后得到一张干净的图片。这个去噪过程称为采样,因为Stable Diffusion 在每一步中生成一张新的样本图片,采样中使用的方法称为采样器或采样方法。

采样方法(采样器)

Sampling method,采样方法,选择不同的迭代方法可能生成不同的图片效果有所不同,我们这里体验几种迭代方法,看看不同的效果。

Prompt提示词:a running cat

这里我们固定迭代步数(Sampling steps):20,使用WebUI的前8种的采样方法:DPM++ 2M Karras、DPM++ SDE Karras、DPM++ 2M SDE Exponential、DPM++ 2M SDE Karras、Euler a、Euler、LMS、Heun,效果图如下(展示图片已经压缩):

可以看到20步的时候,可以生成效果不错的图片

迭代步数(采样步数)

Sampling steps,迭代步数,步数越大,意味着需要消耗更多的时间,我们使用4种采样方法:DPM++ 2M Karras,Euler、LMS、Heun,分别采用4步、 8步、10步、15步的方式生成图片,效果图如下(展示图片已经压缩):

基本15步左右就可以生成不错的图片,DPM++ 2M Karras较少的步数就可以生成不错的图片,其他三个表现也不错,但是基本8-10步就可以出不错的图片,大家可以使用Script的中的X/Y/Z plot插件进行测试,关于X/Y/Z plot后续单独出文章进行详细说明。

上面只是粗略的进行测试,Sampling 和模型也有一定的关系,这里只是做一些简单的说明,更合适的数据需要我们平常生成图片的时候进行测试,找到合适的图片。

DPM(扩散概率模型采样器)和DPM++是2022年为扩散模型设计发布的新采样器。它们代表了具有相似架构的求解器系列。Euler(欧拉式采样器)以较少的步数产生很大的多样性,但很难做小的调整。LMS(线性多步法采样器),其运算速度较快,与欧拉采样器速度相仿,但准确性更高。Heun采样器是一种改进的数值积分方法,具有较高的数值精度和稳定性。它通常能够生成较高质量、较清晰的图像,但可能稍微增加计算成本

参考文献

The_Art_of_DPM

https://zhuanlan.zhihu.com/p/644360212