当前位置:AIGC资讯 > AIGC > 正文

Stable Diffusion教程(5) - 文生图教程

配套视频教程: https://v.douyin.com/UyHNfYG/ 

文生图界面标注如下

1 提示词和反向提示词

提示词内输入的东西就是你想要画的东西,反向提示词内输入的就是你不想要画的东西

提示框内只能输入英文,所有符号都要使用英文半角,词语之间使用半角逗号隔开

1.1 一般原则

一般来说越靠前的词汇权重就会越高,比如说

car,1girl, 可能会出现一整辆车,旁边站着女孩 1girl,car, 可能会出现女孩肖像,背景是半辆车

所以多数情况下的提示词格式是

质量词,媒介词,主体,主体描述,背景,背景描述,艺术风格和作者

举个例子就是

masterpiece, bestquality, sketch, 1girl, stand, black jacket, wall backgoround, full of poster, by token, 一张token画的高质量速写,内容是一个穿着黑色夹克的女孩站在铺满海报的墙前

但是实际上SD所使用的文本编码器会对一切文本产生反应,对于不同词的敏感度也完全不同,对于同一含义的不同词汇表达也会有不同的敏感度,并没有一定的规则,所以还是需要去亲自反复调试才能体会SD对各种词汇排列和组合的敏感度,形成一种大致的直觉

1.2 权重调节

最直接的权重调节就是调整词语顺序,越靠前权重越大,越靠后权重越低

可以通过下面的语法来对关键词设置权重,一般权重设置在0.5~2之间,可以通过选中词汇,按ctrl+↑↓来快速调节权重,每次步进为0.1

(best quality:1.3)

以下方式也是网上常见的权重调节方式,但是调试起来不太方便所以并不推荐

(best quality) = (best quality:1.1) ((best quality)) = (best quality:1.21) ,即(1.1 * 1.1) [best quality] = (best quality:0.91)

1.3 起手式

现在我的建议是使用尽可能简洁的起手式,而不是早期特别冗长的起手式,因为提示词输入的越多ai绘画时间就会越长,同时分配给每个词汇的注意力也会越低,调试也会很困难

现在的模型相对于早期模型在词汇敏感性上有了长足的进步,所以不必担心提示词太短而导致画面效果不佳

简单的正面和反面起手式

masterpiece, best quality, 1boy nsfw, (worst quality, bad quality:1.3)

稍长的正面和反面起手式

masterpiece, best quality, highres, highly detailed, 1girl, nsfw, bad anatomy, long neck, (worst quality, bad quality, normal quality:1.3), lowres

1.4 词条组合

几个词用括号合起来并不会让ai把他们视为一体,即使打上权重也不行,比如以下两者实际上是完全等价的

(car, rockt, gun:1.3) (car:1.3), (rocket:1.3), (gun:1.3)

词条组合的方式和自然语言差不多,要使用介词,比如and,with,of 等等,比如

(car with guns and rockets)

2 采样方法

采样方法有很多,但是目前常用的基本只有几种

2.1 Euler a

速度最快的采样方式,对采样步数要求很低,同时随着采样步数增加并不会增加细节,会在采样步数增加到一定步数时构图突变,所以不要在高步数情景下使用

2.2 DPM++2S a Karras 和 DPM++ SDE Karras

这两个差不太多,似乎SDE的更好,总之主要特点是相对于Euler a来说,同等分辨率下细节会更多,比如可以在小图下塞进全身,代价是采样速度更慢

2.3 DDIM

很少会用到,但是如果想尝试超高步数可以使用,随着步数增加可以叠加细节

3 采样步数

一般来说大部分时候采样部署只需要保持在20~30之间即可,更低的采样部署可能会导致图片没有计算完全,更高的采样步数的细节收益也并不高,只有非常微弱的证据表明高步数可以小概率修复肢体错误,所以只有想要出一张穷尽细节可能的图的时候才会使用更高的步数

4 生成批次和生成数量

生成批次是显卡一共生成几批图片 生成数量是显卡每批生成几张图片

也就是说你每点击一次生成按钮,生成的图片数量=批次*数量

需要注意的是生成数量是显卡一次所生成的图片数量,速度要比调高批次快一点,但是调的太高可能会导致显存不足导致生成失败,而生成批次不会导致显存不足,只要时间足够会一直生成直到全部输出完毕

5 输出分辨率(宽度和高度)

图片分辨率非常重要,直接决定了你的图片内容的构成和细节的质量

5.1 输出大小

输出大小决定了画面内容的信息量,很多细节例如全身构图中的脸部,饰品,复杂纹样等只有在大图上才能有足够的空间表现,如果图片过小,像是脸部则只会缩成一团,是没有办法充分表现的

但是图片越大ai就越倾向于往里面塞入更多的东西,绝大多数模型都是在512*512分辨率下训练的,少数在768*768下训练,所以当输出尺寸比较大比如说1024*1024的时候,ai就会尝试在图中塞入两到三张图片的内容量,于是会出现各种肢体拼接,不受词条控制的多人,多角度等情况,增加词条可以部分缓解,但是更关键的还是控制好画幅,先算中小图,再放大为大图

大致的输出大小和内容关系参考:

约30w像素,如512*512,大头照和半身为主 约60w像素,如768*768,单人全身为主,站立或躺坐都有 越100w像素,如1024*1024,单人和两三人全身,站立为主 更高像素,群像,或者直接画面崩坏

5.2宽高比例

宽高比例会直接决定画面内容,同样是1girl的例子:

方图512*512,会倾向于出脸和半身像 高图512*768,会倾向于出站着和坐着的全身像 宽图768*512,会倾向于出斜构图的半躺像

所以要根据想要的内容来调整输出比例

6 提示词相关性(CFG)

CFG很难去用语言去描述具体的作用,很笼统的来说,就是给你所有的正面和反面提示词都加上一个系数,所以一般CFG越低,画面越素,细节相对较少,CFG越高,画面越腻,细节相对较多

二次元风格CFG可以调的高一些以获得更丰富的色彩和质感表达,一般在7~12,也可以尝试12~20 写实风格CFG大都很低,一般在4~7,写实模型对CFG很敏感,稍微调多一点可能就会古神降临,可以以0.5为步进来细微调节

7 随机种子

随机种子可以锁定这张图的初始潜在空间状态,意思就是如果其他参数不变,同一个随机种子生成的图应该是完全相同的,可以通过锁定随机种子来观察各种参数对画面的影响,也可以用来复现自己和他人的画面结果

点击筛子按钮可以将随机种子设为-1,也就是随机 点击回收按钮可以将随机种子设为右边图片栏里正在看的那张图片的随机种子

需要注意的是,即使包括随机种子在内的所有参数相同,也不能保证你生成的而图片和他人完全一致,随着显卡驱动,显卡型号,webui版本等其他因素的变动,同参数输出的图片结果都会可能会发生变动,这种变动可能是细微的细节区别,可能是彻底的构图变化

8 面部修复

面部修复在早期模型生成的的写实图片分辨率不高的时候有一定价值,可以在低分辨率下纠正错误的写实人脸,但是现在的模型的脸部精度已经远超早期模型,而面部修复功能会改变脸部样貌,所以只要无视这个功能就好

9 其他

9.1 VAE设置

VAE的作用是修正最终输出的图片色彩,如果不加载VAE可能会出现图片特别灰的情况,设置位置:

设置-StabelDiffusion-模型的VAE

设置之后记得点击上方的保存设置,VAE是通用的,可以和任何模型组合

整合包已经自带了final-pruned.vae.pt,一般用来修正二次元模型,但是这个VAE可能会在图片计算完成之后提示错误:

modules.devices.NansException: A tensor with all NaNs was produced in VAE. This could be because there’s no enough precision to represent this picture. Try adding –no-half-vae commandline to fix this.

如果出现这种情况,需要在启动器额外参数一栏填写–no-half-vae来解决

除了这个VAE,还有别的VAE可供使用,觉得颜色偏灰可以去切换使用:

https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt

VAE放置路径:*\models\VAE

使用这两个VAE如果发现二次元图片算出来线条很粗还有红边紫边的情况,切换回final-pruned.vae.pt即可解决

9.2 图片信息

每个SD生成的图片都会自动写入相关参数信息,包括正面和反面提示词,采样步数,采样器,CFG,随机种子,尺寸,模型哈希,模型名称,Clip skip,超分参数等等

在图片信息界面拖入他人或者自己的原始图片都可以读取到参数信息,点击文生图等相应按钮即可将图片和参数一同复制到指定模块,需要注意的是他可能会改变你的webui不容易注意到的一些设置,比如controlnet等插件的设置,Clip skip,ENSD等等,如果后面用自己的参数算图发现不太对劲的时候可以检查一下这些部分

9.3 图片保存和浏览

所有输出的图片都会自动存放在以下路径,不同模块的图片都分开放置在相应文件夹下

*\outputs

webui自带了一个图库浏览器,可以满足小规模的图片浏览,用来调取参数也更方便,但是毕竟是网页程序,在大规模图片管理方面还是使用资源管理器效率更高

9.4 40系显卡相关

如果你是40系显卡可能会需要替换整合包自带的cudnn文件来获得全部的计算速度性能,大概会有一倍以上的提升

cudnn文件下载 https://developer.nvidia.com/rdp/cudnn-archive

在webui文件夹中搜索“cudnn”,找到cudnn文件所在的路径,将下载的压缩包解压,把包内bin文件夹中的文件全部复制到webui的cudnn文件所在的路径,并选择替换相应的文件

更新时间 2024-01-08