什么是Stable Diffusion?
Stable Diffusion 是一种用于生成高质量图像的神经网络模型,它基于扩散过程,在保持图像特征的同时增强了图像细节。它由3个部分组成:变分自编码器(VAE)、U-Net和一个文本编码器(CLIP)。
1. Variational Autoencoder(VAE) 是一种用于生成模型的神经网络结构,通过学习数据的潜在表示来生成新的数据。在 Stable Diffusion 中,它被用作概率编码器(Encoder)和解码器(Decoder)。VAE 通过将输入数据映射到潜在空间中进行编码,然后将编码的向量与潜在变量的高斯分布进行重参数化,以便可以直接从潜在空间中进行采样。
2. Unet 是一种基于卷积神经网络的图像分割模型,采用了一种特殊的“U”形结构,使得输入的分辨率逐步减小而输出的分辨率逐步增加。在 Stable Diffusion 中,Unet 能够对图像进行部分特征提取,同时在解码器的过程中,能够对生成的图像进行重构,以获得高的生成品质。
3. CLIP检索网络是一种文本-图像匹配的神经网络算法,可以将输入的文本和图像进行语义相关性匹配,从而使其能够实现对照片、视频、插画等图像内容的理解。在 Stable Diffusion 中,CLIP检索网络不仅用于评估生成的图像,也可以用于指导数据的采样,以提高生成的图像的多样性和相关性。
具体来说,Stable Diffusion 在训练模型时,将原始图像通过不断的随机扩散和反向扩散来进行图像变形,将图像的细节信息逐渐压缩到低频区域。通过这一过程,Stable Diffusion 不仅能够提取图像的潜在表示,而且能够将图像的噪声和细节信息分离出来。
逆概率沿扩散(Inverse probability flow along diffusion)是用于Stable Diffusion模型的逆模型。这个模型是一个自回归模型,可以根据当前帧的噪声和之前帧的生成图像预测下一帧的噪声。通过逆概率扩散,Stable Diffusion 可以生成高质量的图像。

前向扩散过程将图像转换到低维潜空间

逆扩散通过逐步减去图像中的预测噪声生成图像
提示词技巧
Stable Diffusion 中,在前面的提示词,会得到更多的权重,其次是末尾的提示词,在中间的权重比较小。如果我们给的提示词很多,那SD会忽略掉中间的一些提示词来减少计算量。
提示词权重:前 > 后 > 中
趣闻屋习惯把提词分成五个大块:1.画风和画质 2.主题 3.背景场景 4.细节 5.艺术家
1.画风画质
画风:摄影、抽象、写实、幻想、超现实主义、古典、等
画质:8K分辨率、高画质细节、纹理丰富、高光表现、真实阴影、景深、光线追踪、高质量的反射和折射
Style:photography, abstraction, realism, fantasy, surrealism, classical,…
Image quality: 8K resolution, high-quality details, rich textures, high dynamic range, realistic shadows, depth of field, ray tracing, high-quality reflections and refractions…
2.主题
一个穿着时尚的女生
带着微笑的孩子
中国古建筑
a fashionable girl
a child with a smile
ancient Chinese architecture
3.背景场景
城市、乡村、星空、海洋、山水、雪山、自然、建筑、宫殿、等等
City, Countryside, Starry Sky, Ocean, Landscape, Snow Mountain, Nature, Architecture, Palace、…
4.细节
渲染引擎:Blender、Maya、3ds Max、Cinema4D、Unreal engine、等
材质:金属、玻璃、石头、木材、塑料、皮革、蕾丝
视角:鸟瞰、侧面、仰视、俯角、倾斜、近景、向下看
修饰词:可爱、精致、浪漫、柔美、华丽、生动、极简、电影效果
装饰品:项链、耳环、眼镜、发卡、帽子、手环…
Material: metal, glass, stone, wood, plastic, leather, lace
Perspective: bird’s-eye view, side view, looking up, looking down, tilted, close-up, look down from abov.
Modifiers: cute, sophisticated, romantic, feminine, gorgeous, vivid, minimalist, cinematic,…
Decorations: necklaces, earrings, glasses, hairpins, hats, bracelets,
5.艺术家
艺术家网站:
https://aipromptguide.com
同学们可以到这上面挑选自己喜欢的艺术家风格,各有所爱嘛
趣闻比较喜欢:WLOP、Aleksi Briclot…
举个提示词使用栗子
输入画风和主体,先不输入反向提示词:
photograph,A beautiful girl

运气不错,得到一张看着挺不错的图:

后面有花,那我们就把背景放到花园吧:
photograph,A beautiful girl,garden

景深感有些欠缺,我们加上景深:
photograph, a beautiful girl, garden, depth of field,

突然变化就挺大的。哈哈,这就是AI,总能给我们意想不到的惊喜。继续加细节:可爱的、项链、帽子
photograph,A beautiful girl, garden, depth of field, cute, necklaces , hats

很好。但有些模糊,色彩也有些单调,我们加些高清词,表明更多的细节和低质量反向提示词
photograph,A beautiful girl, garden, depth of field, cute,necklaces , hats, 8k, HD, highly detailed,
worst quality, low quality,normal quality

漂亮!清晰度和色彩度一下子上来了,是不是…
总结提示词技巧:
1.画风,一开始就要想,我们想要什么样的画风?
2.主体,想要画什么,一个人?一只猫?还是一份风景?
3.背景,在哪里?
4.细节,为了修饰主体,需要增加哪些细节?
5.艺术家,希望模仿哪些艺术家的风格?
最后,大体敲定之后就是不停的加细节,调色彩,待差不多满意之后,再大批量生成。这就是AI绘画的好处,批量生产。哈哈~
采样器详解(Sampling method)
趣闻屋用的SD版本,嵌入了20个采样器:

采样器的区别和使用场景:
1. Euler a
Euler a 采样器是 Euler 采样器的一种变体,使用了一种不同的扩散器。相对于 Euler 采样器,在图像品质上有所提升,但仍可能出现品质损失的情况。它适用于简单的图像数据生成场景,例如图形识别、基础生成等。
2. Euler
Euler 采样器基于欧拉插值,是一种简单、快速但可能会失去一些品质的采样器。它适用于生成相对简单的图像、需要快速迭代的场景。
3. LMS
LMS 采样器(Langevin Monte Carlo Sampler)基于 Langevin 梯度下降算法,可以处理非线性/多峰/混合分布,并且具有较好的灵活性和多样性。但由于计算负载较大,可能会运行较慢。它适用于对图像品质和多样性有较高要求的场景,例如生成高品质的复杂图像。
4. Heun
Heun 采样器(Heun’s method)是欧拉插值的一种变体,相对于 Euler 采样器,在图像品质上有所提升,同时其运行速度相对较快且计算负载相对较小。它适用于大规模生成、较为简单的图像数据。
5. DMP2
DMP2 采样器是 DMP 采样器的改进版,使用更少的内存、更少的计算负载和更快的采样速度。它适用于生成算法相对基础、对速度较为嫩的场景。
6. DPM2 a、DPM++ 2S a
DPM2 a 和 DPM++ 2S a 采样器是基于扩散过程实现的算法,能够快速生成高品质图像。它们适用于需要处理多类别任务的场景,例如物体检测、语义分割。
7. DPM++ 2M
DPM++ 2M 采样器是 DPM++ 2S a 的一种改进版,增加了相邻层之间的信息传递。它适用于对数据复杂性有严格要求的场景,例如用于医学图像分析、自然场景生成的应用。
8. DPM++ SDE
DPM++ SDE 采样器是一款基于稳定性差分方程(Stochastic Differential Equation, SDE)的算法,可以生成高度逼真的图像,并且对图像品质和多样性的要求有严格要求的场景。例如,需要用于虚拟现实、视频游戏等应用的场景。
9. DPM fast、DPM adaptive
DPM fast 和 DPM adaptive 采样器是一种快速生成高品质图像的采样器,适用于产生短时间内需要大量图像数据的场景,例如数据增强、训练图像生成等应用。
10. LMS Karras、DPM2 Karras、DPM2 a Karras、DPM++ 2S a Karras、DPM++ 2M Karras、DPM++ SDE Karras
Karras 系列采样器是一系列基于 Langevin Monte Carlo Sampler 和扩散过程的改进版算法,能够快速生成高品质图像。它们适用于对数据品质有高要求的场景,例如医学图像分析、自然场景生成的应用。
11. DDIM
DDIM 采样器(Diffusion Denoising for Image Manipulation)能够在扩散的同时对两个空间维度和一维动态调整时间步长。增加了视频剪辑风格的操作,扩展了 Stable Diffusion 的基础结果。DDIM 采样器适用于需要实现复杂操作、生成流程的场景,例如生成类似视频流的图像数据。
12. PLMS
PLMS 采样器(Preconditioned Langevin Monte Carlo Sampler)使用了一种更高级的梯度采样方法,能够更好地处理非线性/多峰/混合分布,减少了噪音。它可以生成具有非常高保真度且可控多样性的图像,但是比其他采样器更慢。PLMS 采样器适用于对图像品质和多样性有严格要求的场景,例如需要高保真度图像的应用或者对于生成面部或彩色图像的应用等。
13. UniPC
UniPC 采样器(Unified Perceptual Control)采用了一种感知实验中的控制方案来调整温度和扩散器系数。这种方法可以生成更逼真的图像,并提高了采样速度。但是,UniPC 采样器可能不如其他采样器那么灵活。它适用于对图像逼真度和采样速度都有需求的场景,例如生成与人形体有关的应用。
在使用下面参数的做输入,趣闻屋选了几个常用的采样器在steps为:10、17、15、32、40下合图对比:
CFG scale: 7, Face restoration: CodeFormer, Size: 360×540, Model: Chilloutmix, Denoising strength: 0.5, Hires upscale: 2, Hires steps: 10, Hires upscaler: R-ESRGAN 4x+,

采样器总结:
除了LMS、DMP2 a 和PLMS在20步以下出现明显的瑕疵,其他的都很不错。
UniPC 的创意性更足,基本上5个step给了5个惊喜。
最常用的DPM++ SDE Karras,在20 step之后很稳定,构图基本没变化。
采样步数(Sampling steps)
一般采样步数选择20-50之间,也是视大模型而定。
但AI技术始终在进化,SD最新嵌入的UniPC采样器,据说10步以内就能得到很好的出图。
趣闻屋试了下,确实给力。但反向提示词不能给的太多,反向提示词太多步数少会变形。下面给出3个反向提示词和给99个的对比。
这是只给3个反向提示词的情况下,表现很好:


下面是给99个反向提示词之后,15 steps及以下出现变形:


人脸修复(Restore faces)
SD提供了两个人脸修复的方法:GFPGAN、CodeFormer。
1.GFPGAN (Guided Filtering and Progressive Growing Generative Adversarial Networks) 是基于人类视觉系统的图像生成方法,它利用了引导滤波器 (Guided Filter) 和渐进增长生成对抗网络 (Progressive Growing GAN) 的技术来生成高质量的图像。
2.CodeFormer 的主要原理是在编码器 (Encoder) 和解码器 (Decoder) 中采用自注意力机制,使模型能够有选择地关注输入图像的重要区域,从而减少了模型的冗余操作。同时,CodeFormer 还提出了一种新的损失函数来提升图像生成的效果。
效果对比如下:

趣闻屋使用 CodeFormer,无脑选择。
详解仓库:
GFPGAN:https://github.com/TencentARC/GFPGAN
CodeFormer:https://github.com/sczhou/CodeFormer
高分辨率修复(Hires. fix)
SD默认情况下,txt2img 以非常高的分辨率(宽高大于756像素)制作图像,会出现多手多肢体怪物,所以官方建议如果制作高分辨率的图像,打开Hires. fix选项。

高清化算法(Upscaler):
1. Latent
Latent 是一种基于 VAE 模型的图像增强算法,通过将原始图像编码成潜在向量,并对其进行随机采样和重构,从而增强图像的质量、对比度和清晰度。这种算法适用于对低清、模糊、低对比度和有噪音的图像进行提升和增强。
2. Lanczos
Lanczos 是一种基于一种低通滤波算法的图像升级算法,在升级图像尺寸时可以保留更多的细节和结构信息,因此可以增强图像的分辨率和细节。这种算法适用于升级分辨率较低的图像、文档或照片,以获得更高质量、更清晰的图像。
3. Nearest
Nearest 是一种基于图像插值的图像升级算法,它使用插值技术将低分辨率的图像升级到高分辨率。虽然它可以快速生成高分辨率图像,但也带来了一些缺点,如图像边缘模糊、细节丢失或图像瑕疵等。因此,这种算法通常适用于对速度需求较高而不需要过多细节的场景下。
4. LDSR
LDSR( Low-Dose CT Super-Resolution) 是一种用于医学图像重建的算法,它通过卷积神经网络和自注意力机制,以低剂量扫描 CT 图像为输入,实现加速重建低剂量 CT 图像过程,从而提高图像的准确度和清晰度。这种算法适用于对 CT、MRI 等医学图像进行重建和处理。
5. ESRGAN_4x, R-ESRGAN 4x+ 和 R-ESRGAN 4x+ Anime6B
ESRGAN_4x、R-ESRGAN 4x+ 和 R-ESRGAN 4x+ Anime6B 都是神经网络算法,用于实现图像超分辨率。它们可以将低分辨率的图像升级到更高的分辨率,并可以保留更多的细节和纹理信息。这些算法的不同之处在于采用的网络结构、训练方法以及对不同类型图像处理的效果。ESRGAN_4x 适用于一般的图像超分辨率场景,R-ESRGAN 4x+ 主要用于增强细节和保留更多纹理信息,而 R-ESRGAN 4x+ Anime6B 则适用于对动漫和卡通图像进行超分辨率处理。
6. ScuNET GAN 和 ScuNET PSNR
ScuNET GAN 和 ScuNET PSNR 都是基于生成对抗网络(GAN)的图像超分辨率算法。它们可以以更高的分辨率生成更真实、更清晰的图像,其训练方法和网络结构相对于其他超分辨率算法更加复杂。ScuNET GAN 适用于对比较复杂、高精度的图像超分辨率场景,ScuNET PSNR 则适用于对保持更多的图像细节、纹理、颜色等信息的处理场景。
7. SwinIR 4x
SwinIR 4x 是一种最新的基于 Transformer 模型的图像超分辨率算法,它采用多尺度、多方向的注意力机制和局部位置感知来增强图像的清晰度、细节和纹理。与传统的 CNN 网络不同,Transformer 网络可以更好地处理长期依赖关系和全局信息。SwinIR 4x 适用于对复杂、高清晰度图像的处理场景。
懒人使用包:无脑型(R-ESRGAN 4x+),动漫卡通(R-ESRGAN 4x+ Anime6B)

高分辨率采样步数(Hires steps):一般建议在5-15 steps
重绘强度(Denoising strength):数值越高,改变原图内容也就越多,如下图:

放大倍率(Upscale by):放大倍率一般选2,提高出图效率。后面想要更大的分辨率,到附加功能(extras)里放大就可以。
最后的细节
宽高:视选择的大模型而定,大模型训练的图片是512*512时,建议选择尺寸不要超过768*768,需要大分辨率的使用高分辨率修复(Hires. fix)。
生成批次(Batch count):生成多少批,显卡显存少可以选这个多批次出图。
每批数量(Batch):这个和 Batch count 区别是,一个批次出多少张图,需要大显存支持。
提示词引导系数(CFG Scale):用于控制图像增强的程度,一般建议在3-11,视大模型而定。当 CFG Scale 的数值较高时,图像增强程度也会相应增加,使得图像的亮度、对比度等增强效果更加明显。CFG Scale 数值过高也会带来一些问题:
1. 图像过度增强:当 CFG Scale 数值过高时,图像的亮度、对比度增强效果会过度提升,使得图像细节和结构的自然效果被破坏,从而使图像看起来过度处理或过于极端。2. 噪声和伪影:在一些情况下,CFG Scale 数值过高会使图像出现噪声和伪影,这会影响图像的视觉效果并影响后续处理过程。

图像生成种子(Seed): seed 值控制生成图像的随机性。如果使用相同的 seed,每次生成的图像会相近,使用不同的 seed,则可以获得相差较多的图像,从而生成具有不同风格和特点的图像。
结语
结束。文章很长,能看到这的同学那必须是真爱~