一、前言
Stable Diffusion 是一种强大的画像生成AI,它可以根据输入的文字描述词(prompt)来绘制出想象中的画面。但是写出一个好的 prompt 并不容易,我们通常可以从提出一系列问题作为开始去整理需要的 prompt,当然这也不是一个固定的模式,你也可以在C站多参考学习各位大神使用的 prompt,尝试使用不同的 prompt 来实现自己想要的结果!本篇总结了多位大神和官方的文档资料,希望大家可以更快了解 prompt 的应用方法!
二、Prompt 语法总结
- 分割符号
使用逗号 , 用于分割词缀,且有一定权重排序功能,逗号前权重高,逗号后权重低。例:girl, beautiful
- 建议的通用范式
建议用以下归类的三大部分来准备相关提示词
前缀(画质词+画风词+镜头效果+光照效果) + 主体(人物&对象+姿势+服装+道具) + 场景(环境+细节)
- 更改提示词权重
使用小括号()增加模型对被括住提示词的注意 (提高权重)。
一般流程:先把要描述的画面写下生成一次,根据生成结果边试边改不满意或遗漏的描述,要强调的概念用 (xxx: 1.x ) 语法形式来提升权重,其中 xxx 是你要强调的词 1.x 代表要提升的比例,如 1.5 就是提升 150% 的权重。权重取值范围 0.4-1.6,权重太小容易被忽视,太大容易拟合图像出错。例:(beautiful:1.3) 。叠加权重:通过叠加小括号方式提高权重,每加一层相当于提高1.1倍权重,例:((((beautiful eyes)))) 。
各种权重类语法公式明细:
- (PromptA:权重):用于提高或降低该提示词的权重比例,注:数值大于1提高,小于1降低
- (PromptB):PromptB的权重为1.1=(PromptA:1.1)
- {PromptC}: PromptC的权重为1.05=(PromptB:1.05)
- ((PromptE)=(PromptE:1.1*1.1)
- {{PromptF}}=(PromptF:1.05*1.05)
- [[PromptG]]=(PromptG:0.952*0.952)
- 调取 LoRA & Hypernetworks 模型
使用尖括号 <> 调取LoRA或超网络模型。
按照下述形式输入:lora:filename:multiplier 或 hypernet:filename:multiplier 可调取相应模型,例:lora:cuteGirlMix4_v10:0.5 。
注:要先确保在【...\models\lora】或【...\models\hypernetworks】文件夹已保存好相关模型文件。
- 分布与交替渲染
使用方框号 [] 可应用较为复杂的分布与交替需求。
[A:B:step] 代表执行A效果到多少进度,然后开始执行B。例:[blue:red:0.4],渲染蓝色到40%进度渲染红色。注:step > 1 时表示该组合在前多少步时做为 A 渲染,之后作为 B 渲染。step < 1 时表示迭代步数百分比。
[A:0.5] 这样写的含义是从50%进度开始渲染A
[A::step] 渲染到多少进度的时候去除A
[A|B] A和B交替混合渲染
- 反向提示词
反向提示词(Negative prompt),就是我们不想出现什么的描述。例:NSFW 不适合在工作时看的内容,包括限制级,还有低画质相关和一些容易变形身体部位的描述等。
注:在C站可下载一个叫 Easynegative 的文件,它的作用是把一些常用的反向提示词整合在一起了,让我们只需输入简单的关键词就能得到较好效果。把它放到 xxx/enbeddings 文件夹,需要触发时在 negative prompt 中输入 easynegative 即可生效。
三、一些注意说明
- AI 会按照 prompt 提示词输入的先后顺序和所分配权重来执行去噪工作;
- AI 也会依照概率来选择性执行,如提示词之间有冲突,AI 会根据权重确定的概率来随机选择执行哪个提示词。
- 越靠前的 Tag 权重越大;比如景色Tag在前,人物就会小,相反的人物会变大或半身。
- 生成图片的大小会影响 Prompt 的效果,图片越大需要的 Prompt 越多,不然 Prompt 会相互污染。
- Prompt 支持使用 emoji,且表现力较好,可通过添加 emoji 图来达到效果。如 形容喜欢表情, 可修手。
- 连接符号,使用 +, and, |, _ 都可连接描述词,但各自细节效果有所不同。
四、从左到右的6组输入参数依次为:
- 用加号连接:(red hair:1.1)+(yellow hair:1.25)+(green hair:1.4)
- 用 and 连接:(red hair:1.1) AND (yellow hair:1.25) AND (green hair:1.4)
- 用逗号连接:(red hair:1.1),(yellow hair:1.25),(green hair:1.4)
- 用下划线连接:(red hair:1.1)(yellow hair:1.25)(green hair:1.4)
- 用竖线连接:(red hair:1.1)|(yellow hair:1.25)|(green hair:1.4)
- 什么都不加直接连接:(red hair:1.1)(yellow hair:1.25)(green hair:1.4)
五、其他
以下是一些示例:
5.1. Tag 权重
- girl, beautiful, (blonde:2), (long hair:1.5), (smiling face:1.3), (white skin:1.2), (blue eyes:1.1), in a field of (flowers:1.2) under the (sun:0.7)
- (city:1.5) at (night:1.3), (rain:1.2) on the (window:1.1), a (girl:1.1) with (short hair:1.2), (umbrella:1.2), (wearing:1.1) a (coat:1.2)
5.2. 分布与交替渲染
- [blue:red:0.4], (girl:0.2), [green:yellow:0.6], (boy:0.3), [black:white:0.8]
- [boy|girl|boy|girl|boy|girl]
- [sun:cloudy:0.5], [rain:snow:0.5]
5.3. 调取 LoRA & Hypernetworks 模型
- lora:flower_field_10k:1.1
- hypernet:forest_5k:1.2
5.4. 反向提示词
- NSFW 的反向提示词:easynegative,如:(beautiful:1.2), (easynegative)