文章目录
- 一、Stable Diffusion简介与安装
- 二、文生图(提示词解析)
- 2.1 提示词入门
- 2.2 权重
- 2.3 负面提示词( Negative prompt)
- 2.4 出图参数设置
- 2.5 新手念咒方法
- 三、图生图
- 3.1 图生图入门
- 3.2 随机种子解析
- 3.3 图生图拓展
- 四、模型
- 4.1 `Checkpoint`
- 4.1.1 Checkpoint简介
- 4.1.2 Checkpoint分类与下载
- 4.2 `VAE`(变分自解码器)
- 4.3 `embeddings`
- 4.3.1 特定人物形象(含tag反推)
- 4.3.2 人物反转
- 4.3.3 解决bad case
- 4.4 `LoRa`
- 4.4.1 `LoRa`简介
- 4.4.2 扩展模型加载
- 4.4.3 addition network加载
- 4.4.4 LORA实际应用
- 4.4.5 局部重绘+lora
- 4.5 `hypernetwork`
- 五、高清修复&放大算法
- 5.1 高清修复(Hi-Res Fix)
- 5.2 SD Upscale脚本(分块放大)
- 5.3 附加功能放大
- 5.4 Ultimate upscale
- 六、局部重绘
- 6.1 简单局部重绘
- 6.2 局部重绘之手涂蒙版(inpaint sketch)
- 6.3 绘图(sketch)
- 6.4 局部重绘之上传蒙版(inpaint upload)
- 七、插件
- 7.1 插件安装方式
- 7.2 汉化包
- 7.3 图库浏览器
- 7.4 Tag插件
- 7.4.1 `tag complete`
- 7.4.2 `tagger`
- 7.4.3 `prompt-all-in-one`
- 7.5 `utimate upscale`
- 7.6 Local Latent Couple
- 7.7 cutoff精准控色
- AUTOMATIC1111/stable-diffusion-webui
- 参考B站Nenly视频《零基础学会Stable Diffusion》、视频中的文件
- Stable Diffusion & NovelAI资源及使用技巧收集汇总(自用)、Stable Diffusion完整入门指南
- kaggle下载模型,使用edge打开模型下载网址,例如AWPortrait 1.1,然后点击下载。在本地下载的滚动条上右键单击,复制链接。然后新建自己的dataset,点击复制网址就行。
all-in-one教程
一、Stable Diffusion简介与安装
推荐安装:
- 秋叶:Stable Diffusion整合包v4.2发布
- 星空:AI绘画整合包(新增 Controlnet1.1和SadTalker)
- kaggle:stable-diffusion-webui-kaggle、zh-stable-diffusion-webui-kaggle
- colab:stable-diffusion-webui-colab。colab现在已经禁止白嫖Stable Diffusion了,付费的可以。
- AutoDL:【Stable diffusion教程】AutoDL云部署超详细步骤说明、
- 腾讯云(Windows):谷歌colab不能白嫖SD了?别怕,教你低成本用云服务器玩AI绘画、Stable Diffusion云服务器部署完整版教程及对应视频讲解
二、文生图(提示词解析)
- NovelAI资源整合、《图解法术Ⅰ:服装咒语》
提示词必须是英文,很长且有很多符号,就像高深莫测的咒语一样,所以大家形象地把写提示词prompt过程叫做“念咒”。模型很多时候不知道我们到底想要什么,这时候就要通过prompt来进行指示和引导。在Stable Diffusion中,无论是文生图还是图生图,都需要用到prompt,这是一切的基础。
2.1 提示词入门
提示词必须是英文,如果英文不太好就只能求助翻译软件或者一些插件了。提示词的书写不需要遵守完整句子的语法结构,只是堆砌一些词组也是可以的,而且效果会更好。例如画“一条又长又宽的面,一个又大又圆的碗”,写成(面,长,宽),(碗,大,圆)也是OK的,而且效果可能更好。
- 使用分隔符:提示词词组之间要使用分隔符隔开,在底层代码中,都是英文书写的,常用的风格符是英文逗号(半角)。
- 换行:提示词可以换行,但是行尾最好英文逗号隔开
- 高质量图片的生成需要内容详尽、画质标准清晰的提示词
A girl is walking in the forest(一个女孩在森林中漫步),可以写成1 girl,walking,forest,path,sun,sunshine,shiing in body
。但是这样生成的图片远达不到我们期望的效果。这是因为模型(Stable Diffusion)生成图片是有一定随机性的,“一个女孩在森林中漫步”这种描述太笼统了。女孩是什么造型、服装、视角,森林里是什么样子等等这些模型都不知道,模型只能瞎蒙了,所以最终效果并不好。我们可以慢慢再细化、微调和补充。
提示词分类:提示词可以按如下分类,方便书写时对号入座,进行补充。
- 内容型提示词:根据自己的需求进行针对性地修改
- 人物主体特征:越具体AI的思路越清晰。形容词如beautiful、happy等抽象词,也可以影响整体的感觉
- 场景特征:户外场景最好加入outdoor提示词,室内使用indoor,可以显著影响画面的氛围
- 环境光照
- 画幅视角:近景特写可以用close up,中距离可以写full body
-
标准提示词:相对固定,可以抄作业
如果只有内容型提示词,生成的图片大概率会难以令人满意,比如画质魔壶,缺少细节等等,这时候就需要补充画质画风提示词,让生成的图像更趋近于某个固定的标准。(不同风格的图片也依赖于预训练模型)
-
画幅视角
- 距离 close-up,distant
- 人物比例 full body, upper body
- 观察视角 from above, view of back
- 镜头类型wide angle,Sony A7I
-
画风提示词
- 插画风 illustration,painting,paintbrush
- 二次元animecomic,game CG
- 写实系 photorealistic, realistic, photograph
-
通用高画质
- best quality, ultra-detailed, masterpiece,hires,8k
-
特定高分辨率类型
- extremely detailed CG unity 8k wallpaper(超精细的8K Unity游戏CG)、unreal engine rendered (虚幻引擎渲染)
2.2 权重
刚才我们在prompt中加入了white flower,但是生成的图片中并没有。这是因为prompt中的词非常多,所以模型不一定get到你想要什么。所以这个时候可以使用权重来进行调整,有两种方式:
- 英文括号表示:每一层
[]
表示权重×0.9(减少),{}
表示×1.05,()
表示×1.1。所以(((white flower)))
表示白色的话权重为1.331
.; - 英文括号+数字表示:
(white flower:1.5)
表示白色的花的权重是1.5
。
提示词权重的安全范围一般在1±0.5左右,太高容易扭曲画面的内容。这时候我们想要更多的百花的元素,可以通过更多类型的词条来进行协同效应。提示词进阶规则——混合、迁移、迭代等,后续会补充。
另外还有一些补充规则:
- 越靠前的prompt权重越大;比如景色在前,人物就会小,相反的人物会变大或半身
- 图片越大需要的Prompt越多,不然Prompt会相互污染
- Prompt支持使用emoji,且表现力较好。
2.3 负面提示词( Negative prompt)
Negative prompt用于指定不想生成的内容,使用Negative prompt可以消除了Stable Diffusion的常见畸形,比如多余的肢体。采样器(sampler)将比较prompt生成的图片和Negative prompt生成的图片之间的差异,并是最终生成结果逼近前者,远离后者,下面是一个示例:
- 原始图片有雾状(fog)、颗粒感(grainy,画质低)
- Negative prompt为fog:雾状没了但是生成奇怪的紫色
- Negative prompt为grainy:没有雾状和紫色,但是色彩单调
- Negative prompt为fog,grainy, purple:没有雾状和紫色,画质高,色彩饱和度高。
negative prompt:None | negative prompt:fog |
negative prompt:grainy | negative prompt:fog, grainy, purple |
出图反向提示词通用模板:
2.4 出图参数设置
- 采样迭代步数20-50:
Stable Diffusion是通过对图像进行加噪声再去噪声的方式生成图片,图片加噪之后模型才有更多的空间去发挥。去噪过程可以理解为模型会用像素点一点点的生成你需要的图片,生成时画面每闪一次表示模型迭代了一步。
理论上步数越多画质越清晰。但是实际上步数大于20次以后,提升不明显了,而且步数越大,计算时间越长,且显存消耗越大。默认20,需求高清可设置30-50,10以下画质惊悚。
- 采样方法:可理解为模型生成图片时的算法,选择带+号或模型推荐
- Euler和Eular a:插画风,比较简约
- DPM 2M和DPM 2M Karras:出图较快
- DPM ++ SDE Karras:细节丰富
实际使用时,推荐图中带+号的采样方法,因为都进过了改进。另外很多模型有推荐的采样方法,一般是作者测试表现最好的。
- 分辨率:推荐1024×1024左右,高画质可使用高清修复
太低细节和画质不够,太高容易显存不足,且可能出现多人多手多脚的画面。因为AI训练时,分辨率不会太高,过高的分辨率AI会认为是多图拼接的。如果确实需要高画质,可以先生成低分辨率,再使用高清修复来放大,本质是图生图,后续会讲到。
- 面部修复:一般都会选
- 平铺:不推荐
- 提示词相关性:提示词对生成图像的影响程度。相关性较高的时候,生成的图像将更符合提示信息的样子;相反,如果提示词相关性较低,对应的权重也较小,则生成的图像会更加随机
- 对于人物类的提示词,一般将提示词相关性控制在
7-12
之间,太高画面容易变形 - 对于建筑等大场景类的提示词,一般控制在
3-7
左右。这样可以在一定程度上突出随机性,同时又不会影响生成图像的可视化效果。
- 对于人物类的提示词,一般将提示词相关性控制在
- 随机种子:骰子按钮表示每次都随机(-1),三角循环按钮表示复制上一次的随机种子值
- 生成批次和批次数量:用于一次生成多张图。批次数量提高,显存消耗也提高,生成高清图时不建议改。
2.5 新手念咒方法
- 自然语言:中文表述翻译成英文。翻译插件
- 提示词工具:
- AI提示词加速器:根据需要自己勾选组合
- ClickPrompt、ChatFlow
- PromptBase:DALL·E, GPT, Midjourney, Stable Diffusion, ChatGPT Prompt Marketplace。
- AI提示词加速器:根据需要自己勾选组合
- 抄作业:Civitai(魔法) 、libilibi、炼丹阁、DesAi、openart(偏欧美)、arthub(偏亚洲)这几个网站都有很多优秀的图片可以参考。
- chatgpt生成提示词:先在chatgpt中写入下面这段话:
Stable Diffusion是一款利用深度学习的文生图模型,支持通过使用提示词来产生新的图像,描述要包含或省略的元素。我在这里引入Stable Diffusion算法中的Prompt概念,又被称为提示符。这里的Prompt通常可以用来描述图像,他由普通常见的单词构成,最好是可以在数据集来源站点找到的著名标签(比如Ddanbooru)。下面我将说明Prompt的生出步骤,这里的Prompt主要用于描述人物。在Prompt的生成中,你需要通过提示词来描述 人物属性,主题,外表,情绪,衣服,姿势,视角,动作,背景。用英语单词或短语甚至自然语言的标签来描述,并不局限于我给你的单词。然后将你想要的相似的提示词组合在一起,请使用英文半角,做分隔符,每个提示词不要带引号,并将这些 按从最重要到最不重要的顺序 排列。另外请您注意,永远在每个 Prompt的前面加上引号里的内容, “(((best quality))),(((ultra detailed))),(((masterpiece))),illustration,” 这是高质量的标志。人物属性中,1girl表示你生成了一个女孩,2girls表示一次生成了两个女孩。另外再注意,Prompt中不能带有-和_。可以有空格和自然语言,但不要太多,单词不能重复。
或者是:
# Stable Diffusion prompt 助理
你来充当一位有艺术气息的Stable Diffusion prompt 助理。
## 任务
我用自然语言告诉你要生成的prompt的主题,你的任务是根据这个主题想象一幅完整的画面,然后转化成一份详细的、高质量的prompt,让Stable Diffusion可以生成高质量的图像。
## 背景介绍
Stable Diffusion是一款利用深度学习的文生图模型,支持通过使用 prompt 来产生新的图像,描述要包含或省略的元素。
## prompt 概念
- 完整的prompt包含“**Prompt:**”和"**Negative Prompt:**"两部分。
- prompt 用来描述图像,由普通常见的单词构成,使用英文半角","做为分隔符。
- negative prompt用来描述你不想在生成的图像中出现的内容。
- 以","分隔的每个单词或词组称为 tag。所以prompt和negative prompt是由系列由","分隔的tag组成的。
## () 和 [] 语法
调整关键字强度的等效方法是使用 () 和 []。 (keyword) 将tag的强度增加 1.1 倍,与 (keyword:1.1) 相同,最多可加三层。 [keyword] 将强度降低 0.9 倍,与 (keyword:0.9) 相同。
## Prompt 格式要求
下面我将说明 prompt 的生成步骤,这里的 prompt 可用于描述人物、风景、物体或抽象数字艺术图画。你可以根据需要添加合理的、但不少于5处的画面细节。
### 1. prompt 要求
- 你输出的 Stable Diffusion prompt 以“**Prompt:**”开头。
- prompt 内容包含画面主体、材质、附加细节、图像质量、艺术风格、色彩色调、灯光等部分,但你输出的 prompt 不能分段,例如类似"medium:"这样的分段描述是不需要的,也不能包含":"和"."。
- 画面主体:不简短的英文描述画面主体, 如 A girl in a garden,主体细节概括(主体可以是人、事、物、景)画面核心内容。这部分根据我每次给你的主题来生成。你可以添加更多主题相关的合理的细节。
- 对于人物主题,你必须描述人物的眼睛、鼻子、嘴唇,例如'beautiful detailed eyes,beautiful detailed lips,extremely detailed eyes and face,longeyelashes',以免Stable Diffusion随机生成变形的面部五官,这点非常重要。你还可以描述人物的外表、情绪、衣服、姿势、视角、动作、背景等。人物属性中,1girl表示一个女孩,2girls表示两个女孩。
- 材质:用来制作艺术品的材料。 例如:插图、油画、3D 渲染和摄影。 Medium 有很强的效果,因为一个关键字就可以极大地改变风格。
- 附加细节:画面场景细节,或人物细节,描述画面细节内容,让图像看起来更充实和合理。这部分是可选的,要注意画面的整体和谐,不能与主题冲突。
- 图像质量:这部分内容开头永远要加上“(best quality,4k,8k,highres,masterpiece:1.2),ultra-detailed,(realistic,photorealistic,photo-realistic:1.37)”, 这是高质量的标志。其它常用的提高质量的tag还有,你可以根据主题的需求添加:HDR,UHD,studio lighting,ultra-fine painting,sharp focus,physically-based rendering,extreme detail description,professional,vivid colors,bokeh。
- 艺术风格:这部分描述图像的风格。加入恰当的艺术风格,能提升生成的图像效果。常用的艺术风格例如:portraits,landscape,horror,anime,sci-fi,photography,concept artists等。
- 色彩色调:颜色,通过添加颜色来控制画面的整体颜色。
- 灯光:整体画面的光线效果。
### 2. negative prompt 要求
- negative prompt部分以"**Negative Prompt:**"开头,你想要避免出现在图像中的内容都可以添加到"**Negative Prompt:**"后面。
- 任何情况下,negative prompt都要包含这段内容:"nsfw,(low quality,normal quality,worst quality,jpeg artifacts),cropped,monochrome,lowres,low saturation,((watermark)),(white letters)"
- 如果是人物相关的主题,你的输出需要另加一段人物相关的 negative prompt,内容为:“skin spots,acnes,skin blemishes,age spot,mutated hands,mutated fingers,deformed,bad anatomy,disfigured,poorly drawn face,extra limb,ugly,poorly drawn hands,missing limb,floating limbs,disconnected limbs,out of focus,long neck,long body,extra fingers,fewer fingers,,(multi nipples),bad hands,signature,username,bad feet,blurry,bad body”。
### 3. 限制:
- tag 内容用英语单词或短语来描述,并不局限于我给你的单词。注意只能包含关键词或词组。
- 注意不要输出句子,不要有任何解释。
- tag数量限制40个以内,单词数量限制在60个以内。
- tag不要带引号("")。
- 使用英文半角","做分隔符。
- tag 按重要性从高到低的顺序排列。
- 我给你的主题可能是用中文描述,你给出的prompt和negative prompt只用英文。
我的第一个主题是: 一个美丽的中国女孩
三、图生图
3.1 图生图入门
在文生图时,我们可以通过一些提示词,告诉AI模型我们想要它生成什么图像,但是AI绘画是有一定随机性的,它不一定完全get到你想要什么。这时候如果给它一张参考图,AI就可以从图片上获取更多的信息,更直观的get到你的想法。
-
提示词
图生图也需要提示词具体、准确。如果完全不输入提示词,一般都会翻车。如果加入更多描述细节的内容型提示词(短发、蓝眼睛、胡子、戴羊毛帽、穿格子衬衫),再加上一些标准化的正反提示词,出图效果会更好:
-
重绘幅度:图生图独有的参数,越高表示在原图基础上重新绘制的程度越高。
下面这个例子,我们选择一张真人图,然后用深渊橘模型生成对应的漫画人物。此时重绘幅度推荐0.6-0.8,因为重绘幅度太高,人物形象可能会变形;太低则看不出效果。出图效果如下:
- 分辨率:一般推荐保持和原图的分辨率一致
- 如果原图尺寸太大(比如3000×3000),可以等比缩小;
- 如果你就是想生成其它高宽比的图片,建议先在原图上进行裁剪,再进行生成。
如果设置的高宽比和原图不同,会导致图像的变形、拉伸。图片下方也有几个缩放的选项可以进行部分裁剪。最后一个直接缩放对显存要求很高,不建议使用。
3.2 随机种子解析
在上面的例子中,加入更多细节描述后,模型生成了一张更相似的图片。但是此时,我们发现生成的图片是室内场景,而原图是室外的。此时可以加上一些场景词(xx in the backgrounds)进行约束,比如野外、森林、旅行、景深(depth of field,背景虚化的效果)等等。
加入场景词之后,我们发现整个人物的形态也发生了改变,这是因为AI绘画的随机性。如果我们想保持之前的人物形象不变,只改变背景,只需要固定随机种子就行。
AI生成图片的过程是随机的,每次生成都会随机采样,表现在这里就是一组随机数(随机种子)。如果选择同一组随机种子,生成的图片必然就有很多相似之处,因为都是同一套随机方法生成的。
- 骰子:随机种子设为-1,表示每次随机都不一样
- 三角循环:随机种子保持和上一次一样
这次我们采用之前喜欢的那张图片的随机种子,再加上场景词,可以看到背景被改变了,人物形象基本不变。
3.3 图生图拓展
-
物体拟人化
导入物体图片并输入拟人化的提示词,可以实现物体甚至是风景的拟人化
-
二次元人物3D化
导入二次元人物图,使用2.5D模型,以真实质感标准化提示词进行约束,可以到的近似3D的效果图。如果想更具体准确的转换,可以使用一些lora。
-
抽象派绘画
有时候,我们只是随手涂写,模型也能画出惊艳的效果。(图上图中的绘画模式)
四、模型
类型 | 后缀名 | 大小 | 存放路径 |
---|---|---|---|
checkpoint | .ckpt 或.safetensors | 2-7G/1-2G | stable-diffusion-webui/models/Stable-diffusion |
VAE | .pt 或.safetensor | 几百M | stable-diffusion-webui/models/VAE |
embeddings | .pt 或.safetensor | 几百k | stable-diffusion-webui/embeddings |
hypernetwork | .pt 或.safetensor | 几百M | stable-diffusion-webui/models/hypernetworks |
LORA | .pt 或.safetensor | 上百M | stable-diffusion-webui/models/lora |
4.1 Checkpoint
4.1.1 Checkpoint简介
对于模型作者而言,训练模型通常指生成 Checkpoint 文件。这些文件包含了模型参数和优化器状态等信息,是训练过程中定期保存的状态快照。
对于使用者而言,可以将 Checkpoint 文件理解为一种风格滤镜,例如油画、漫画、写实风等。通过选择对应的 Checkpoint 文件,您可以将 Stable Diffusion 模型生成的结果转换为您所选择的特定风格。需要注意的是,一些 Checkpoint 文件可能需要与特定的低码率编码器(如 Lora)配合使用,以获得更好的效果。
在下载 Checkpoint 文件时,您可以查看相应的模型简介,通常作者会提供相应的文件和说明事项,以帮助您更好地使用和理解该文件
在webui打开时新添加了模型文件,点一下刷新就可以。模型没加载好就生成图片,可能会导致报错。
4.1.2 Checkpoint分类与下载
Checkpoint按画风可以分为三类:
官方发布的Stable Diffusion1.4/1.5/2.0/2.1
等模型效果都比较一般,因为有版权的约束。现在大家用的比较多的,都是私炉模型(大家一般把训练AI模型叫做炼丹,因为很多不可控)。
目前主流的模型下载网站有:
- Hugging Face:点击上方models选项卡,左侧标签选text-to-image就可以看到文生图模型了。
- Civitai(魔法) 、libilibi
4.2 VAE
(变分自解码器)
VAE
负责将加噪后的潜空间数据转为正常图像,可以简单理解为模型的调色滤镜,主要影响画面的色彩质感。目前大多数新模型在文件中已经融合了VAE,还有一些作者会在model card中推荐合适的VAE。
VAE
文件后缀一般是.pt
,或者是.safetensor
,存放路径是。还有一种自动加载特定模型VAE的方法,是将VAE文件也放在models/Stable-diffusion
文件夹下,然后将文件名改成和模型名一致,再在后缀.pt
前添加.vae
字段,这样就可以在加载模型时选择自动加载VAE了。
4.3 embeddings
在C站或者liblibai网站上,embeddings用
Textual Inversion
标签来筛选。
在 Stable Diffusion 中,embedding 技术可以被理解为一种组件,它可以将输入数据转换成向量表示,方便模型进行处理和生成。如果说checkpoint是一本厚厚的字典,可以查询许多的条目(关键词)进行生成,那么embeddings就像一个高效的索引,可以指向特定的内容;而LORA就像字典中的一张彩页,指向特定内容更加具体(包含的信息更多)。
举个例子,如果我们想要生成一个开心的皮卡丘,通常需要输入很多描述词,如黄毛、老鼠、长耳朵、腮红等等。但是,如果引入皮卡丘的 embedding,我们只需要输入两个词:皮卡丘和开心。皮卡丘的 embedding 打包了所有皮卡丘的特征描述,这样我们就不用每次输入很多单词来控制生成的画面了。
在日常使用中,embedding 技术通常用于控制人物的动作和特征,或者生成特定的画风。相比于其他模型(如 LORA),embedding 的大小只有几十 KB,而不是几百兆或几 GB。虽然还原度对比 lora 差一些,但在存储和使用上更加方便。
总之,使用 embedding,我们可以更加轻松地生成符合预期的样本,而不需要手动输入大量的描述词汇,下面进行详细的示例说明。
4.3.1 特定人物形象(含tag反推)
比如liblibai网址上的Corneo’s D.va,训练的是守望先锋里的人气角色D.va,下载后存入stable-diffusion-webui/embeddings
文件夹,然后在prompt中使用特定的提示词进行激活。
在这个embedding的medel card里会,作者说激活词是corneo_dva,推荐权重推荐0.9到0.95,所以我们可以写(corneo_dva:0.95) 。另外提示词中加入人物描述,生成会更准确。所以我们上传一张作者的展示图,先反推tag,再填入prompt。
在图生图中,反推一张照片的tag有CLIP和DB两种算法,后一种更快更准。识别后进行一次筛选,只保留准确的描述词就行。
如果嫌手动筛选太麻烦,可以打开tigger标签栏,使用tigger
插件进行反推。上传图片后,反推的提示词会显示其置信度,其中还有一个sensitive
表示安全评分。我们可以手动设置置信度阈值0.8,再点一次反向推导,就只保留置信度>0.8的提示词了。
4.3.2 人物反转
前段时间,网上有很多非常精致的3D人物形象的例子,就是通过CharTurner
这个embedding实现的。这其实就是把几个不同朝向的人物并列的图片进行训练得到的。作者在model cord中给出了基本启用句式:A character turnaround of a(X)wearing(Y)
。这段tag越靠前权重越高,还可以加上Multiple views of the same character in the same outfit
来达到同一角色服装多个视角的效果。prompt中可以启用多个embeddings,效果需要自己把握。
CharTurner这个embedding还是有很多缺点,在人物细节和转身动作上无法准确把控这一点在后续LORA中可以部分解决,例如CharTurnerBeta - Lora的转身效果更好,还可以和embedding配合使用。
4.3.3 解决bad case
直到现在,Stable Diffusion生成的图片还是容易画错手脚的情况,甚至是多手多脚。C站上排行较高的几个embedding可以解决这个问题,这些embedding记录了一系列AI画错的方式,整合后放入负面提示框中进行激活,一定程度上避免了上述画错手脚的情况。
- badhandv4:触发词
badhandv4
- EasyNegativeV2:针对二次元模型训练的,解决肢体混乱、颜色混杂、灰度异常等等一系列负面问题,触发词
easynegative
。 - Deep Negative V1.x:针对真人模型训练的。解决包括错误的人体解剖结构、令人反感的配色方案、颠倒的空间结构等等问题。触发词
NG_DeepNegative_V1_75T
。
4.4 LoRa
4.4.1 LoRa
简介
LORA 与 embedding 在本质上类似,因为携带着大量的训练数据,所以 LORA 对人物和细节特征的复刻更加细腻。
LORA激活方法:<lora:lora_filename:weight>
,其中,lora_filename就是你要启用的LORA文件的文件名(不含后缀),例如<lora:CharTurnBetaLora:0.3>
可以启用人物转身LORA。有的LORA还有触发词,表示作者根据这个tag进行了加强训练,二者同时启用可以加强效果。
LORA 模型对应的底模和触发词汇,在 LORA 作者给出的model信息中可以获得。
需要注意的是, LORA 训练的图源复杂,所以一般会对画风造成轻微影响,可以通过降低其权重来抑制。权重设置越大,对画风的影响因素就越小,通常情况下,权重应该控制在 0.3-1 之间。
为了获得最佳效果,我们可以根据不同的 LORA 模型选择适当的提示词和排除词,并在设置权重时进行调整。同时,我们还可以参考其他作者的经验和技巧,以便更好地利用 LORA 生成图像。
4.4.2 扩展模型加载
我们点击文生图下面红色小按钮,就可以显示扩展模型选项。
这些模型默认没有预览图,你可以加载之后跑一张图片,然后点击用当前生成图片替换预览图。配置完之后,会在模型文件旁边生成同名的图片,不想要可以删除。也可以选择一张图片改成和模型一样的名字,刷新后就自动成为模型封面图。
在设置——扩展模型中,可以设置一些细节。比如设置模型展示方式是卡牌还是缩略图,卡牌宽高尺寸、LORA模型加载权重等等。
4.4.3 addition network加载
github地址:sd-webui-additional-networks
前面几种方式加载的LORA都会明确写在提示词中,这样在图片分享时,这部分内容是可见的。还有一种加载方式,用于多个LORA同时使用的情况。点击页面下方的addition network,就可以启用最多五个LORA,并分别配置权重。
通过addition network,默认读取的是在extensions-addition-network-models-lora
文件夹下的LORA文件。我们可以在settings-addition network
下,第一行设置其读取路径为lora默认的安装路径。
addition network加载LORA的方式是和提示词完全独立的,所以提高了提示词的阅读性,缺点就是分享时,这种方式加载的LORA信息不会被显示出来。所以有些网上比较满意的图片,copy参数信息后无法完美还原,就可能是作者使用了这种方式加载了LORA文件。
addition network还为LORA扩展了蒙版功能,使其可以作用于图片的特定区域,后续再补充。
4.4.4 LORA实际应用
LORA的具体应用,可以分为以下五种:
- 人物角色lora:推荐权重0.7-0.8。
以lucy这个LORA为例。我们先用封面图进行tagger反推,然后直接文生图,即使描述如此详细,AI也无法还原一个准确的lucy形象。而加入lucy这个LORA ,马上就像了很多。因为这个LORA就是用很多个lucy的角色图训练的,传递信息更加准确。
比如我们反推的提示词里有白夹克,但世上有无数款白夹克,AI并不知道要绘制哪一种。而提供了LORA后,AI就可以提取其中的关键信息,进行准确的绘制了。
使用真实系大模型+动漫角色LORA,就可以得到一个真人coser形象。结合后续要讲的controlnet,=还可以设计角色的姿势及构图,定制自己跌作品。
-
风格lora(art-style):权重0.2-0.3,过高会让角色LORA失去一些原本的特征
以C站很受欢迎的fashion girl为例,作者使用100个符合他审美的时尚女孩照片进行训练的,可以使生成的女性角色更符合审美,触发词为fashi-girl、red lips、mature female、makeup。类似的还有FilmGirl 胶片风、花想容/Chinese style等等,可以实现自己喜欢的风格。 -
画风lora:推荐权重0.2-0.4
例如Ghibli Style LoRA,叠加使用触发词ghibli style
,可以实现吉卜力工作室(宫崎骏)的画风,这种画风可以概括为绘本化的角色设计,水分质感的丰富色彩、精美细腻的背景场景。 -
concept(概念)lora
以Gacha splash LORA举例,这个是使用抽卡游戏中抽卡时的精美立绘来训练的,使用这个LORA之后,生成的图片也会有这种抽卡立绘的风格。这种概念型的LORA对提示词的书写要求更高,使用之前要熟读model card,并参考作者的示例图信息。类似的概念LORA还有塔罗牌、mugshot lora(档案照片)、国风未来等等。
- 服饰lora:权重太高容易出现人体缺失的情况,因为这种lora是根据衣服来训练的。
比如想生成机甲风格的作品,搜索mecha就能出现很多机甲风lora,比如机械风暴lora、镭射服holographic clothing、汉服唐风lora等等。
最后,当你想强化作品中某种方面的特质时,可以叠加使用多个同类型的lora,例如使用多种机甲lora来生成机甲风图片。具体使用时,你可以通过控制不同lora的权重,使得作品更像某一种lora。
6. object:特定元素,这种可以实现产品设计、产品蓝图等。
4.4.5 局部重绘+lora
进阶用法,是使用局部重绘的方式引入到图片中。比如给一张科技感的少女图片加上头盔,我们可以将生成的图片进行局部重绘。我们涂上头部部分,并向外多涂一部分,给AI充分一点的创作空间,然后选择头盔lora进行局部重绘。重绘方式有两种:
- 全图重绘:这时候可以全图重绘,大部分提示词和参数不变,只增加头盔lora相关提示词、触发词)
- 蒙版重绘:去掉之前内容词,只保留lora相关的提示词、触发词,这样重绘结果会更精确。
这样做有什么好处呢?因为头盔lora这种只涉及画面的很小一部分,如果硬要施加到全图范围,有一定概率会干扰大模型生成优秀的画面,这时,局部重绘就成为一种优秀的单独解决方案。这种画大图不加lora,画局部加lora的方式,可以用于服饰、产品等等其它lora的应用中。
4.5 hypernetwork
hypernetwork
的效果和LORA
差不多,区别在于, hypernetwork
一般用于改善整体的画风,比不同checkpoint之间的画风更细腻一点,例如区别不像真实模型和二次元模型那么大的画风差别,而类似梵高和莫奈之间的小差别。
以WavenChibiStyle为例,是一种Q版可爱的画。使用方式是点击设置标签栏,在左侧附件网络中选择加载超网络下拉菜单中的超网络模型,然后保存设置就可以了。我们维持人物设置不变,删去所有场景词,使用纯色背景,分辨率为正方形,生成一张图片。
目前, hypernetwork
的作用可部分被LORA
取代,而其生成效果没有LORA
那么好,但需要生成特定风格的画面时,hypernetwork
亦依然是一种选择。
最后,装了tag complete
这个补全tag的插件之后,输入<e,<l,<h
,还可以自动识别加载已经安装的embedding、lora、hypernetwork等,非常方便。
五、高清修复&放大算法
5.1 高清修复(Hi-Res Fix)
高清修复是文生图内置的功能。下面使用LOFI
模型作者的示例图进行说明。我们复制示例图的参数,再加上一些prompt,初始分辨率设置为500×750,可以看到生成的图片细节不够,还是有点模糊(分辨率太低,模型没有足够的操作空间)。
此时如果直接扩大分辨率,一次生成高分辨率图片,非常容易爆显存,且容易生成多头多手多脚的图像。此时可以考虑使用高清修复:
- 尺寸设置:可以设置按原图放大多少倍,也可以设置放大后图像的具体分辨率数值
- 高清修复采样次数:高清修复需要经过一次重绘,所以需要采样步数steps。steps默认为0,等同于文生图中默认的采样步数20。
- 重绘幅度:等同于文生图中的重绘幅度,要保持图像大体不变,一般不超过0.5
- 重绘方法:推荐
R-ESRGAN 4×+
,二次元选R-ESRGAN 4×+ Anime6B
,另外模型作者也会推荐高清修复算法。
设置高清修复后,会先生成低分辨率的图片,再加噪打回潜空间进行重绘放大。下面是效果对比:
- 高清修复优点:
- 固定随机种子后,不改变画面结构
- 稳定克服多人、多头等问题
- 操作简单、效果直接
- 高清修复缺点:
- 生成速度慢(画一张等于画两三次),无法突破显存限制。建议多次抽卡,出卡之后再固定随机种子高清修复
- 会出现莫名的额外元素,这一点可以通过降低重绘幅度来抑制。重绘幅度太低容易边缘模糊,太高会变形,0.9就会多头。单纯只是为了放大,推荐
0.3-0.5
。
5.2 SD Upscale脚本(分块放大)
图生图没有高清修复的选项。但其实选一张低分辨率照片,设置高分辨率参数进行生成,本身就是一种高清修复。在设置选项卡的“放大”一栏中,可设置图生图的放大算法。
如果想生成更高清的图片,可以使用Upscale
放大脚本。我们从图库浏览器加载一张图片到图生图,生成参数会自动同步复制。设置重绘幅度0.5,在最下方脚本下拉菜单中选择SD Upscale。放大倍数选择2,重叠像素选择默认值64,重绘算法选择R-ESRGAN 4×+ Anime6B
,原图尺寸600×600改为664×664:,点击生成,就得到一张1200×1200的图像了。
最终图像尺寸=(原图尺寸-重叠像素)×放大倍数
SD Upscale是把图像均匀分割成四部分,逐个放大再拼在一起。如果不设置重叠像素,分割部分没有过度,就会很生硬,出现边界线。
- SD Upscale优点:
- 可突破限制获得更大的放大倍数(最高4倍)。
- 精细度高,细节把控更出色
- SD Upscale缺点:
- 分割重绘过程不可控
- 如果放大太多,提示词很难和各个区域吻合,容易造成画面混乱。
- 如果人脸、身体关键部位在分割线上,容易产生不和谐的画面。可以通过降低重绘度进行抑制
- 会莫名出现额外元素
- 分割重绘过程不可控
5.3 附加功能放大
在附加功能选项卡里,可以进行AI算法放大。打开一张图,设置放大倍率和算法(可以选两种),点击生成就得到了2倍放大的图片。这种放大和AI里的老张片高清修复的原理是一样的,重绘度为0。
附加功能放大只是单纯放大,所以速度很快,计算无负担,但是精致细腻程度不如前两种,可以考虑综合起来使用。
5.4 Ultimate upscale
见本文7.5节。
六、局部重绘
6.1 简单局部重绘
有时候我们好不容易生成了一张比较满意的图片,但是却有一点细节是需要调整的。比如衣服改成无袖,如果这时候直接改提示词,整张图片都会被改变,这时候就可以使用局部重绘,可以理解为就是把重绘区域拿来根据更改的提示词进行单独的图生图,而保持其余部分不变。
局部重绘还可以用来AI换脸、换衣服、更换背景去除涂鸦等等。
- 点击“图生图”,选“布局重绘”
- 选择要重绘的图片
- 点击图像旁边的小画笔,用画笔涂黑你想修改的地方,图片右边的蓝色点可以拖动 改变画笔大小,边缘适合用小画笔,中间区域用粗画笔;
- 在正向关键词中写入想重新生成的词,比如off shoulder,因为你只想露出肩膀,所以不用加别的主体提示词,然后点击生成就行了。
下面对几个重绘参数进行解析:
- 蒙版模糊:其效果类似Photoshop中羽化的效果,可以令蒙版区域和非蒙版区域的拼接处边缘模糊柔化,使得重绘部分与原图周围更加的贴合,一般控制在10以下,具体根据重绘区域大小来调整,区域越大蒙版模糊数值越高。
- 蒙版模式:蒙版可以简单的理解为用画笔涂抹的区域。默认是重绘蒙版区域,也可以选择反过来重绘非蒙版区域;
- 蒙版内容:后两种图生图方式更复杂,理论上重绘效果更显著
- 原图:默认项,不做额外处理
- 填充:先将蒙版内容模糊化,然后再一步步去躁来生成新的图片,此时AI的自由度就会更高。
- 潜变量噪声:先将蒙版部分变噪声,再重新生成图片
- 潜变量数值零:相当于填充模式,也是采用模糊化蒙版颜色后进行去噪的过程
-
重绘区域:
- 全图:AI根据更改的提示词将全图进行重绘,但只将重绘之后的蒙版区域拼回原图,因为看到了整张图,一般效果较好。
- 仅蒙版:AI将蒙版区域当做整张画进行重绘,再拼回去。因为重绘区域小,所以更快。但是因为看不到整张图,所以经常拼回去会出现奇奇怪怪的情况。
一般情况建议选择全图重绘,仅蒙版适用于针对性很强的情况,比如只重绘手部,这时候希望降低 重绘幅度避免变形,并对提示词做净化处理(5 fingers,hand open,high five)。仅蒙版模式时,右边有个预留像素的参数,和5.2节SD Upscale里图块重叠像素的效果一样,用于在拼回去时接口处进行平滑过渡使用,根据蒙版大小来做对应的调节。
-
重绘幅度(Denoising):表示生成的图和原图的相似度。范围 0 ~ 1,默认 0.75。值越大,生成的图片和原来的图片相差越大。根据自己的需求进行调整即可。
6.2 局部重绘之手涂蒙版(inpaint sketch)
仅仅局部重绘,效果还是不够强大。比如要重绘手部,AI还是容易画错,此时可以选择手涂蒙版,用于在蒙版上进行手绘。
下面例子中,在手涂蒙版下打开一张图片,右上角多了一个调色盘按钮,点开后可以选择画笔颜色。我们用蓝色画笔画一幅口罩,再用白色画笔在口罩上画一个爱心,再增加对应提示词(blue face mask with heart sign:1.2),重绘幅度设为0.8,最后点击生成,效果如下:
鼠标作画还是不够灵敏,如果外接数控画板,效果会更好。
下面介绍如何画手。我们上传一张图片,点击调色盘旁边的拾色器吸管,先吸取墙面背景颜色涂抹手部,再吸取脸部的肉色画出手型,提示词填上(5 fingers,detailed hand,high five:1.2),负面提示词用上之前讲的 EasyNegativeV2 这个embedding。画手的时候重绘幅度建议开0.5,太大会使勾勒的手部轮廓模糊。另外蒙版模糊也不宜太大,使用默认数值4就行。下面是生成的效果:
手涂蒙版比之前多了一个蒙版透明度的参数,如果你选择手绘的颜色饱和度太重了,可以适当开一点减弱颜色,保持和任务画风色彩比较一致。
6.3 绘图(sketch)
绘图也可以单独使用,例如为图中人物加一条领带。区别在于不启用局部重绘的情况下,整张图的画面都会有一些改变。
或者是:
6.4 局部重绘之上传蒙版(inpaint upload)
上传蒙版用于精确地控制蒙版范围。本质就是在PS软件中,把需要重绘的部分抠出来,再将这个模板上传到局部重绘中,就可以进行局部重绘了。
打开PS,如果图片只有一个主体人物,点击“选择”-“主体”,就会自动选择人物,生成一圈蚂蚁线表示的选区。如果人物较多,推荐使用工具栏里的对象选择工具,框选某个人物区域,就会自动选择对应人物。如果有多出或者残缺的部分,使用套索工具。套索圈住选择的部分会加入选区,按住alt进行圈选,选择区域就会被删除。
剩下部分还是看视频吧,《手把手教你玩转局部重绘》第12min开始。
七、插件
初始的webui界面是很简单的,所有的插件在extensions栏中,有已安装、可安装、通过链接安装三个选框。
7.1 插件安装方式
- 自动安装。
打开可安装选框,点击load form就可以看到所有可安装的插件。在搜素框搜索到要安装的插件,点击右侧install就可以自动安装了。
如果这个url不小心清除了,下面是两个地址:
- 扩展查阅地址:
https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json- 备用镜像地址:
https://gitee.com/akegarasu/sd-webui-extensions/raw/master/index.json
https://gitgud.io/AUTOMATIC1111/stable-diffusion-webui/-/wikis/Extensions-index.md
- 根据url安装
打开install from url选框,复制插件的github网址,粘贴到url栏就行。
- 下载安装
前两种方式在网络不好时可能会安装错误,更彻底的方式是直接下载插件安装包进行安装。比如在extensions文件夹下使用代码git clone https://github.com/Physton/sd-webui-prompt-all-in-one.git
下载tag自动翻译插件(使用download手动下载也行)。安装完后点击重启webui进行刷新,插件安装正确就会出现在已安装列表中。
如果某个插件不能用了,点击右侧的检查更新按钮,一般更新到最新版本就可以解决了。如果某个插件还是有问题,可以点击前面的复选框暂时取消使用。下面开始介绍8款插件:
-
中文语言包:搜索
zh
(取消勾选本地化/Localization的筛选) -
图库浏览器:搜索
image browser
-
提示词补全: 搜索
tag complete
,中文词库见网盘 -
提示词反推:搜索
tagger
-
Ultimate Upscale脚本:SD upscale升级版,用于图片放大。 搜索
ultimate upscale
-
Local Latent Couple:局部细节重绘,搜索
llul
-
Cutoff:精准控色,防止串色,搜索
cut off
-
prompt-all-in-one:prompt综合插件,功能很多,详见视频《提示词补全插件(自动翻译)插件》。
@Nenly
7.2 汉化包
在可安装选框中取消勾选localization,然后搜索zh
,推荐安装秋叶的安装包云端汉化翻译(第一个)。安装后在settings——user interface中选择切换语言为zh-Hans
,然后重启webui就可以了。
7.3 图库浏览器
webui默认只能在output文件夹里来查看之前生成的图片信息,安装了image browser
之后就可以在图库浏览器里进行查看图片生成信息、一键发送图片到文生图图生图,图片排序、打分筛选、删除图片和收藏图片了。
filename keyword search
:对图片的文件名进行关键词搜索,图片文件名一般包含路径、文件编号和一小段关键词提示词;EXIF keyword search
:对图片的所有生成信息进行关键词搜索。比如搜索smile,则所有包含smile提示词的图片都会被显示出来
- 收藏:对部分满意的图片,点击下方的添加到收藏夹,会把这些图片放在一个单独的目录里
- 打分:对于一些明显不要的图片,可以全部打一分,其它的根据满意度评分。比如下图,在红色区域打分,蓝色区域筛选出只有一分的图片,然后点开第一张一分图,在黄色区域输入N,就可以删除这张及之后的N张图片。
7.4 Tag插件
7.4.1 tag complete
tag complete
:用于自动补全没有输完的提示词,还会提示你更符合AI逻辑的提示词。比如下面脱下帽子,比起hat_off,hat_removed在AI图片生成中会表达的更准确。
tag补全是基于本地booru实现的,补全内容还包括时下热门的动漫IP等等。另外输入<e,<l,<h
,还可以自动识别加载已经安装的embedding、lora、hypernetwork等,非常方便。
中文tag翻译:按照B站视频《全网最全Tag词库》操作。
- 点此下载
a1111-sd-webui-tagcomplete.zip
压缩包 - 压缩包放入extensions文件夹后进行解压(需要先删除之前的tag补全插件)
- 在设置——插件补全中,第一行
filename
设置为zh_cn.csv;再往下翻,translate filename
选择zh_cn_tr.csv,这样就配置好了,保存设置。
配置好之后,就可以在提示词框中直接输入中文了。
另外,,输入<e,<l,<h
,tag complete
还可以自动识别加载已经安装的embedding、lora、hypernetwork等,非常方便。
7.4.2 tagger
tagger
用于提示词反推,右下是反推出来的提示词的置信度,我们可以设置置信度阈值来筛选反推出来的提示词,设置之后再点一次反推按钮就行。
tagger左下还可以添加和排出提示词,右上sensitive还可以显示图片的敏感度。
另外B站还有中英双语对照翻译和另外的tag补全插件本地汉化词库文件,可参考视频《中英双语对照、TAG提示词自动补全》
7.4.3 prompt-all-in-one
参考视频《提示词补全插件(自动翻译)插件》
之前的tag补全插件,本质上是按照本地词库(两个CSV文件)进行对照翻译,词库里没有的词就翻译不出来;而这个插件是通过第三方接口进行在线翻译。我们在右侧方框里输入中文,按enter就会自动将英文tag加入提示词框中了。下面对插件按钮逐一介绍其作用:
-
第一个按钮:设置语言;
-
第二个按钮:设置;
- 其中第一个api按钮,点开后可以设置翻译接口,其中上部分是免费的,下部分有付费的chatgpt等接口。可以输入一段英文后点击测试,查看效果。最下面提示了,可以借助本地文件进行精准翻译。
A|B
按钮:自动将提示词框的英文tag翻译为中文En
按钮:输入中文提示词后,自动翻译为英文T
按钮:勾选后,在插件下方显示说明性的提示
- 其中第一个api按钮,点开后可以设置翻译接口,其中上部分是免费的,下部分有付费的chatgpt等接口。可以输入一段英文后点击测试,查看效果。最下面提示了,可以借助本地文件进行精准翻译。
-
第三个按钮:历史记录,点开后可以看到提示词的历史记录,点击右侧收藏夹按钮,可以将其添加到收藏夹,点击最右侧按钮,就可以将其自动输入提示词框
-
第四个按钮:提示词收藏列表
-
A|B
按钮:将提示词框的英文提示词翻译为中文,不用再用别的软件进行中英翻译了。
-
En
按钮:点一下就会将提示词框所有中文翻译为英文 -
最后两个按钮,分别是复制提示词和删除提示词
一般我们可以在提示词框输完中文后,点击翻译。后续要补提示词,可以在右侧方框里继续输入中文,按回车就自动翻译为英文并添加进去了。
另外将鼠标移动到下面的提示词处,还可以快速拖动提示词、快速调整提示词权重(点击±号或括号),比较方便。
7.5 utimate upscale
utimate upscale
是一个更好用的图片放大脚本,可以看做是SD upscale的全面升级版,拼合更自然,重绘效果也更好。安装完之后,在脚本下拉菜单中可以看到。下面介绍几个参数。
- 放大尺寸
在SD upscale中,只能根据原图尺寸进行放大,而这里选择custom size
之后,可以自定义放大尺寸。其它放大算法、蒙版边缘模糊(6.1节)、预留像素(5.2节)在之前都讲过。
- 拆分区域尺寸
utimate upscale
也是把图片拆分成几块进行分别放大,拆分区域大小可以自定义,如下图,设置宽高中一个元素为0,表示是一个正方形。所以utimate upscale
默认也是拆成512×512的区域进行放大。
- 绘制顺序:上方蓝色框可以选择绘制顺序。linear就是一个个按顺序绘画,chess是像国际象棋棋盘一样,黑白交叉绘制,据说拼合效果更好。
- seams fix:表示交界处拼合方式,选第三个效果更好。
- Denoise:重绘幅度,
utimate upscale
比SD upscale
更稳定,重复幅度可以设置高一点,比如0.5左右。
7.6 Local Latent Couple
Local Latent Couple
用于丰富局部画面细节。安装完之后,在脚本下拉框中选择LLuL
,会出现一个方框界面,阴影框表示要细节放大的区域,默认是整张图的四分之一。拖动方框选择我们要放大的区域,其它参数特别是随机种子保持不变,重新生成,新图片上,衣服的细节就会更多。
7.7 cutoff精准控色
cutoff
可以解决提示词互相干预得我问题,比如输入a cute girl, white shirt with green tie, red shoes, blue hair, yellow eyes, pink skirt
,结果生成的图片可能会出各部位串色的问题,开启cutoff之后,可以有效抑制:
实现原理:每个颜色词单独处理。颜色词生成词向量时,削减掉其他颜色词,得到的结果作为本颜色词的向量,即采用增加计算量的方法。本来一个文本prompt只需要过一次text encoder,现在需要过n次text encoder才能得到最终的文本表征(n代表这个prompt里有n种颜色)
在启用cutoff之后,输入上述颜色词及cutoff的权重,如下图所示:
其它参数:
- Enabled : 选中以启用
- Target tokens(comma separated) : 需要分割的颜色,可以是颜色词,也可以是逗号分隔的标签列表white shirt with green tie, red shoes, blue hair, yellow eyes, pink skirt。
- Weight : Cutoff 的强度
- Details: 详细设置
- Disable for Negative prompt. : 为反向提示词禁用本插件
- Cutoff strongly. : 强效提示词,只能放一个,分割效果最大。
- Padding token (ID or single token) : 填充令牌(ID 或单个令牌),通常留空。
- Interpolation method : 插值方法,Lerp/SLerp(默认为 Lerp)