Stable Diffusion 文生图全网最细详解
AI魔法学院
2023-06-08
分享海报

我们从 Web UI 开始讲解,基于使用最多的 文生图 模块来讲解

一、WEB UI 页面

如果你使用的是 Kaggle 搭建的SD,那么你进入到 web ui 页面后可以看到下面这个页面



其中:

  • 模型选择:模型对于 SD 绘图来说非常重要,不同的模型类型、质量会很大程度的决定最终的出图效果(模型相关的课程会在后面细讲)
  • Prompt区:如果你使用过 ChatGPT 你应该知道 Prompt 是什么。说的直白点就是你想让 SD 帮忙生成什么样的图,反向 Prompt 就是你不想让 SD 出生的图里有这些东西。后续课程也会详细的讲解如何更好的编写 Prompt
  • 功能栏:包括了常见的 文生图、图生图、模型获取、模型训练等功能。不同的功能页面也不同,这一节课,我们先针对最长使用的 文生图 模块页面来讲解
  • 采样区:采用什么样的绘画方式算法,以及“画多少笔” 来绘图。一定程度上决定出图的质量
  • 调参区:设置分辨率、每次出图的批次、出图抽象性(和 prompt 关联性的程度)
  • 脚本区:通过配置脚本可以提高效率;比如批量出图、多参数的出图效果比较(课程中会大量使用)

接下来会进一步的介绍每个模块的使用。

二、模型选择

直白点说,

模型就是“模型训练师”们通过大量的图片进行训练得到的具备某种风格的模型。

我们使用某个模型后,

后续在出图的整体方向就会更靠近这个模型的风格。

你安装好之后默认可以看到两个模型

  • anything : 二次元风格模型
  • Deliberate:真人风格模型

推荐的网站:

C站:civitai.com/ 需要魔法

aigodlike.com/ 如果没有魔法的话可以试试 这个 也不错

huggingface.co/

三、Prompt 区

如果你学习过如何更好的编写 ChatGPT 的 prompt,

你会发现 Prompt 的编写都会遵守一定的范式,

这样得出来的效果才可能更贴近我们的想法。

选择完模型之后,

我们就可以给予这个模型风格,

告诉 SD prompt 画出什么样的图。

比如:直接告诉 SD 画一个女孩



虽然能出来一个 女孩,

emmm... 但是这个质量吧,还是很差的,

实事上呢,

是我们的 prompt 写的太差劲了 导致的

如果我们完善一点 (丰富一些 prompt )

会发现效果质量立竿见影;而我们只是加入了一些通用的 prompt 提示语



  • 正向的 prompt:说白就是要高画质、更多的细节
  1. (masterpiece:1,2), best quality, masterpiece,best detail face


  • 反向的 prompt:不要少胳膊断腿,要是一个正常的图
  1. (((NSFW))),(worst quality:2),(low quality:2),(normal quality:2), lowres, normal quality,((monochrome)),((grayscale)), skin spots, acnes, skin blemishes, age spot,(ugly:1.331),(duplicate:1.331),(morbid:1.21),(mutilated:1.21),(tranny:1.331), mutated hands,(poorly drawn hands:1.5), blurry,(bad anatomy:1.21),(bad proportions:1.331), extra limbs,(disfigured:1.331),(missing arms:1.331),(extra legs:1.331),(fused fingers:1.61051),(too many fingers:1.61051),(unclear eyes:1.331), lowers, bad hands, missing fingers, extra digit,bad hands, missing fingers,(((extra arms and legs))),


其中的一些细节,

比如 提示语的语法格式、公式、权重、模版和tag大全,我们会在 prompt 和 tag 课程中细讲

有个比较有意思的 反向 tag 叫 NSFW(no sutiable for work)

一般情况尽量把这个加入到反向词中,特别是工作场合。不然惊喜可能随时都会出现(各种18+)...

想想在工作的时候,你信誓旦旦给你的同事来一张漂亮的小姐姐,结果.....

如果你不太信的话,可以直接把 NSFW 放在正向里面试试...

四、采样区

采样区做的事就是,我们该用什么样的采样方式来画,画多少笔(多细致)

1.采样方式

由于采样方式的原理比较深奥,涉及到很多的算法,我直接给结论,

我更加推荐使用下面这三个:

  • Euler a
  • DDIM
  • DPM ++ 2M Karras

我们可以试试这三个不同采样方法的效果



整体的质量是非常好的,出图速度相对也会快很多

2. 采样步数

采样步数相当于是作画的时候画多少笔。

同样的也是先给结论,建议在 20-40之间,出图效果会更好。并不是越高越好

来看看效果



会发现步数到了60其实也还好,

但同时需要考虑到性价比,步数越高也就意味着耗费的资源会越多,对机器的配置会更高。

所以一般我们的步数设置到 20-40之间就可以了。

接着上节课,我们继续讲解 Stable Diffusion Web UI 的使用。

这节课我们会讲解 面部修复,高清修复和调参区的内容

五、脸部修复

面部修复的适用在画真人、三次元的场景,特别是在画全身的时候

一般在画全身,由于脸部占比的空间比较小,那么绘制出来的效果就会比较差

1.面部修复

SD 支持直接一键进行脸部修复,但这效果可能不是非常好,也不是最终方案

举个例子:

模型选择:Realistic Vision V2.0 (如何下载模型可以参照课程

在没有开启面部修复的情况,脸部非常不自然(特别是在画全身的时候)



开启面部修复后:



出图的效果,脸部就自然了非常多



2.高清修复

高清修复的原理相当于是把原分辨率的图放大进行绘制,

绘制结束后再做一个还原,从而达到脸部的优化。

这样对于电脑的资源消耗会更大。



其中有几个参数可以来说说:

  • 放大算法:这块可以直接给结论;大家如果要改善真人、三次元的脸部直接使用 R-ESRGAN 4x+ ;如果是二次元的使用 R-ESRGAN 4x+ Anime6B
  • 高清修复采样次数:建议直接给0,表示直接使用原有出图的采样步数即可
  • 重绘幅度(Denoising):“放飞程度“,在修复的时候和原图的相似关系,越小表示越相似,越大最后的图就和原图没啥关系了
  • 放大倍率:一般给到2倍即可。太大基本上电脑配置吃不消

我们可以来看看使用高清修复后优化的样子:



耗时要远大于不修复的出图时间,

但是效果也是比普通的面部修复要好。

主要是可以根据自己的需要调节参数。

如果我们把重绘幅度拉满,

会发现和原图就不太像了,甚至会.... Emmm..



六、调参区

前面讲到的模型决定了出图的大方向

Prompt 决定了最终的图是什么样

调参区 则决定了一次出多少张图,分辨率以及随机性



1.分辨率 高度&宽度

1.1 如何设置合适的大小

当我们默认进入 SD Web UI 页面后的默认高度和宽度就是 512*512.

这是因为综合各方面来说这个分辨率的性价比是最高的

  • 在 SD 的最初模型 SD 1.5 训练的图片的分辨率大部分都是 512*512,所以在出图的时候,这个分辨率的效果也是最好的
  • 基于性能的考量,512*512 可以比较好的满足质量的要求。对于机器的配置的要求也能适中。如果分辨率设置的比较大,那么电脑的显卡可能就会崩掉,导致SD报错

考虑到SD的最初模型几乎都是 512*512 ,

所以我们想要比较好的效果的时候,

至少应该要有个参数是在 512-768 之前,

这样出图的质量都可以得到保障。

设置的分辨率是:768*320





1.2.妙用画身体

我们可以来思考一个问题,如果画一个全身的人出来?

第一反应是不是就是在 prompt 里面提出来对吧?

加上 full body ,我们可以来看看效果



出来的效果空间感很差,

为了不出现拉伸的情况,SD 会自动的做一些裁剪。

所以,我们可以调整分辨率来实现画全身的场景





这个看起来是不是就非常完美了!

当想要画全身的时候可以考虑用这种方式。

当然了,细心的同学们会发现,手指还是有问题,我们后续会讲到如何优化!

2.批次VS每批数量



这个就很好理解了

(相当于有一个马路,生成批次决定了有几辆车按顺序通过,每批数量决定了有几个车道可以并行通过)

  • 生成批次:可以理解成点击一次生成会循环生成多少个数量的图
  • 每批数量:表示一个批次里一次生成多少张图(一批会有一个概览图)



那我们选择哪种方式批量出图呢?

如果你的配置比较高,那么可以使用 每批数量 的方式出图,会更快。

否则就加大批次,每一批生成一个

七、随机种子 DNA

1.随机种子

可能会有同学发现前面我们出的图几乎都是一个样子。

只有细微的不同,这个就是固定了随机种子导致的。

默认随机种子的值是 -1,表示每次出图都会随机一个种子,根据这个种子进行出图。

如果我们想要固定某个形象,那么把对应种子的值填在这,那么每次出图的效果大致都会一样。



2.差异种子

如果我们点开更多,会发现还有更多参数

  • 随机种子会和差异种子进行融合
  • 差异强度:融合后的效果到底更偏向随机种子还是差异种子;如果是0,那么相当于没有设置差异种子;如果是1那么相当于是没有设置随机种子



原文:https://zhuanlan.zhihu.com/p/625461393

© THE END

转载请联系本网站获得授权

投稿或版权问题请加微信:skillupvip