💡
太长不看简单总结版:
  • 尽量使用确切含义的词汇,如果没有,就用多个词汇一起用来加强AI的理解
  • 把不想要出现在画面中的元素添加到负面提示词

写AI的提示词和做美术的方法是一样的,先写一个简单的提示词,然后想要怎么修改这个画面,再逐渐去增加或调整提示词,来逐渐接近更好的结果,初期参考网络上的优秀作品,对着翻译,看看别人的提示词都是怎么写的,猜一下他当时的想法。

咒语自动补齐插件

  • 插件名称tagcomplete安装完成后按照教程更新翻译库
  • 触发词:Trigger Words在使用某些 lora 模型的时候,需要使用官方提供的 trigger words(触发词) 作为词缀,用于在单个 lora 中准确的导向不同的风格。由于没有预览图和备注,词缀很难使用,在复杂环境也很难辨别有没有生效。建议安装civitai helper用于自动生成预览图与trigger words

初阶咒语语法

写什么?

💡
Tip
提示词是提示而不是判定依据,比如你输入质量判定词汇的时候,其实是在限制数据的范围,而不是 “要求” AI 出一张很好的图片。

如何写?

💡
模板
先想一下要画什么,例如 主题,外表,情绪,衣服,姿势,背景 一类,然后参考数据集标签表(如果有的话,比如 Danbooru, Pixiv 等)。
然后将想要的相似的提示词组合在一起,请使用英文半角 , 做分隔符,并将这些按从最重要到最不重要的顺序排列。
一种模板示例如下:
  • (quality) 代表画面的品质,比如 low res 结合 sticker 使用来 “利用” 更多数据集,1girl 结合 high quality 使用来获得高质量图像。
  • (subject) 代表画面的主题,锚定画面内容,这是任何提示的基本组成部分。
  • (style) 是画面风格,可选。
  • (action/scene) 代表动作 / 场景,描述了主体在哪里做了什么。
  • (artist) 代表艺术家名字或者出品公司名字。
  • (filters) 代表一些细节,补充。可以使用 艺术家,工作室,摄影术语,角色名字,风格,特效等等。
这个模板只是最通用的大众模板,再自己写时,把重要的提示词写在靠前即可,然后再根据结果调整权重

词汇顺序

似乎 VAE 使用了一种称为贝叶斯定理的统计方法。在计算标记的去向时,前几个单词似乎锚定了其余单词标记在潜在空间中的分布。
早期的标记具有更一致的位置,因此神经网络更容易预测它们的相关性。在贝叶斯推理中,矩阵中的第一个标记或证据很重要,因为它设置了初始概率条件。但是后面的元素只是修改了概率条件。因此,至少在理论上:靠后的提示词比前面的提示词权重更低
但是解析器理解事物的方式是不透明的,因此没有办法确切地知道词法顺序是否具有 “锚” 效应。

提示词长度

避免过长的提示词。
提示词放入的顺序就是优先级。由于提示词的权重值从前向后递减,放置在特别靠后的提示词已经对图片的实际生成影响甚微。
不堆叠提示词是一个好习惯,但是如果你确实有很多内容要写,可以适当提高生成步数,以便在生成过程中更好地利用提示词。
SD-WebUI 突破最多 75 个词组限制的方式是将每 20 + 55 个词分为一组。选项 Increase coherency by padding from the last comma within n tokens when using more than 75 tokens 让程序试图通过查找最后 N 个标记中是否有最后一个逗号来缓解这种情况,如果有,则将所有经过该逗号的内容一起移动到下一个集合中。该策略可适当缓解提示词过多无法处理的问题,但可能破坏提示词之间的权重关系。
除了 WebUI 对此情况进行了特殊处理外,由于 GPT-3 模型限制,提示词处理空间并不是无限的,大多在在 75-80 之间,75 字符后的内容会被截断。

特征性

问题体现在语义偏移上。对于神经网络的训练来说,特征的质量很重要:输入和输出之间的联系越强,神经网络就越容易学习这种联系。
换句话说,如果一个关键词有非常具体的含义,那么学习它与图像之间的联系要比一个关键词有非常广泛的含义容易得多。
这样一来,即使是像 “Zettai Ryouiki” 这样很少使用的关键词也能产生非常好的结果,因为它只在非常具体的情况下使用。另一方面,“动漫” 即使是一个比较常见的词,也不会产生很好的结果,这可能是因为它被用于许多不同的情况,即使是没有字面意思的动漫。如果你想控制你的图片的内容,选择具体的关键词尤其重要。另外:你的措辞越不抽象越好。如果可能的话,避免留下解释空间的措辞,或需要 “理解” 不属于图像的东西。甚至像 “大” 或 “小” 这样的概念也是有问题的,因为它们与物体离相机近或远是无法区分的。理想情况下,使用有很大可能逐字出现在你想要的图像标题上的措辞。

语义失衡

每一个提示词就像染料一样,它们的 “亲和性 “ 不同,如果更常见的提示词,比如 loli (和其他提示词并列放置) 的影响就大于其他提示词。
比如,如果你想生成动漫图片,使用了 星空 startrail 标签,相比你期望出现的动漫星空,会有更多来自真实照片的星空元素。
许多词汇在基准上的权重就不一样,所以要根据效果进行合理调节。

负面提示词

SD-WebUI 网页应用会在生成时 避免生成否定提示词提及的内容
否定提示是一种使用 Stable-Diffusion 的方式,允许用户指定他不想看到的内容,而不对模型本身做额外的要求。
通过指定 unconditional_conditioning 参数,在生成中采样器会查看去噪后符合提示的图像(城堡)和去噪后看起来符合负面提示的图像(颗粒状、雾状)之间的差异,并尝试将最终结果远离否定提示词。
比如使用以下提示词避免生成水印和文字内容
还如这个例子,避免生成错误的人体结构
更多资料详见 官方 Wiki

1、初步使用 - 权重语法

分隔符

  • , 逗号:分割词缀,有权重排序功能,逗号前权重高,逗号后权重低,因而建议排序:
综述(图像质量 + 画风 + 镜头效果 + 光照效果 + 主题 + 构图) 主体(人物 & 对象 + 姿势 + 服装 + 道具) 细节(场景 + 环境 + 饰品 + 特征)

空格

逗号前后的少量空格并不影响实际效果。
开头和结尾的额外空格会被直接丢弃。词与词之间的额外空格也会被丢弃。

权重逻辑

  • 若是想明确某主体,应当使其生成步骤向前,生成步骤数加大,词缀排序向前,权重提高。画面质量主要元素细节
  • 若是想明确风格,则风格词缀应当优于内容词缀画面质量风格元素细节

权重系数

权重系数可改变提示词特定部分的比重。
更多资料详见 Wiki:Attention Emphasis
对于 SD-WebUI,具体规则如下:
  • (word) - 将权重提高 1.1 倍
  • ((word)) - 将权重提高 1.21 倍(= 1.1 * 1.1),乘法的关系。
  • [word] - 将权重降低 90.91%
  • (word:1.5) - 将权重提高 1.5 倍
  • (word:0.25) - 将权重减少为原先的 25%
  • \(word\) - 在提示词中使用字面意义上的 () 字符
使用数字指定权重时,必须使用 () 括号。如果未指定数字权重,则假定为 1.1
权重增加通常会占一个提示词位,应当避免加特别多括号。

连接符

  • AND :将多个词缀聚合在一个提示词顺序位置中,其初始权重一致(避免分隔符造成的权重递减)
  • + 加号
  • | 竖线
  • _ 下划线
  • 什么都不加
  • , 逗号对象一致时,逗号有连接的功能

2、分布与交替渲染

[] 方括号中使用:| 等符号,则可实现较为复杂的分布与交替渲染的需求。
  • [A:B:step] [元素 1: 元素 2: 步骤比例] :渲染元素 1 到多少进度后开始渲染元素 2,实现元素 1 与元素 2 的互相叠加,有类似于 [from:to:when] 的感觉,可用于两个词条的融合
注:step > 1 时表示该组合在前多少步时做为 A 渲染,之后作为 B 渲染。step < 1 时表示迭代步数(参与总步骤数)的百分比。
  • [A:step] [元素 1: 步骤比例] :从多少进度开始渲染元素 1
  • [A::step] [元素 1:: 步骤比例]:渲染到多少进度的时候停止元素 1 的渲染(其它元素的渲染继续)
  • [A|B] [元素 1 | 元素 2]:元素 1 和元素 2 的交替混合渲染
[xx|xx|xx|xx|xx…] 本质为一种在平等权重下融合词缀,把多个词缀融合为单个元素,不限制混合元素的数量。
  • [A|B]C [元素 1 | 元素 2] 元素 3:括号外加词缀意味着融合过程中的共享元素
举例:
notion image
举例:
notion image
好诡异的合体~~
举例:
经过学习,现在我们利用第一个例子中的词缀再搞几个画面练手。
notion image
注意:因为加入了动物,所以femal和male可能被 AI 识别为雌性、雄性。。。目前发现仅用文字描述同一场景多人物,很难成功生图,看案例中男女混合了,还有很多错误的图我都没放上来。可能需要加入很多负面提示词来控制污染,并且要把不同人物的位置、状态明确告诉 AI,这样成功几率才大。建议还是利用手稿、controlnet 等方式来共同实现。
举例:
反观单场景单人的实现就特别容易了,这或许也是为什么很多 AI 图片网站的成图都是单人肖像的原因。
notion image
这里的提示词使用了人类的英文阅读格式~~

3、调取 LoRA & Hypernetworks 模型

  • <> 尖括号:调取 LoRA 或超网络模型等。输入:<lora:filename:multiplier><hypernet:filename:multiplier> 可调取相应模型。

高阶咒语语法-深入理解AI是怎么通过提示词运作的

自然语言

对于在自然语言上特化训练的模型,建议使用描述物体的句子作为提示词。
取决于训练时使用的数据集,可以使用英文,日文,特殊符号或一些中文。大多数情况下英文较为有效。
避免 with 之类的连接词或复杂的语法,大多数情况下 NLP 模型只会进行最简单的处理。
避免使用重音符(如 é 和 è)和德语 umlauts(如 ä 和 ö),它们可能无法被映射到正确的语义中。
不建议随意套用现成模板,尤其是无法经过人类理解的模板。

Emoji

Emoji (💰,💶,💷,💴,💵,🎊,🪅🪄,🎀,👩‍🚀) 表情符号也是可以使用并且 非常准确 的。
Emoji 因为只有一个字符,所以在语义准确度上表现良好。
Emoji 在构图上有影响,比如 💐☺️💐

颜文字

对于使用 Danbooru 数据的模型来说,可以使用颜文字在一定程度上控制出图的表情。
例如:
:-) 微笑 :-( 不悦 ;-) 使眼色 :-D 开心 :-P 吐舌头 :-C 很悲伤 :-O 惊讶 张大口 :-/ 怀疑
仅支持西方颜文字,详细内容请见 Danbooru 颜文字部分维基百科

标点符号

用逗号、句号、甚至是空字符(\0)来分隔关键词,可以提高图像质量。目前还不清楚哪种类型的标点符号或哪种组合效果最好。当有疑问时,只要以一种使提示更容易被阅读的方式来做。
对于部分模型,建议将下划线(_)转换为空格。

艺术风格词

可以通过指定风格关键词来创作带有特效或指定画风的图片。
参考资料:
或通过使用 微调模型 来创作图片。

运动和姿势

如果没有很大要求的话,选择只与少数姿势相关的提示。
这里的姿势是指某一事物的空间关系:图像主体相对于摄像机的位置和旋转,人类 / 机器人关节的角度,果冻块被压缩的方式,等等。你试图指定的事物中的差异越小,模型就越容易学习。
因为运动就其定义而言涉及到主体姿势的巨大变化,与运动相关的提示经常导致身体的扭曲,如重复的四肢。另外,因为人类的四肢,特别是人类的手和脚有很多关节,他们可以采取许多不同的、复杂的姿势。这使得他们的可视化特别难学,对于人类和神经网络都是如此。
简而言之:人类站着 / 坐着的好形象很容易,人类跳着 / 跑着的好形象很难。

提示词高阶语法

标签替换

允许您开始先使用一个提示词,但在生成过程中间切换到其他提示词。基本语法是:
  • [to:when] 在指定数量的 step 后添加 to 到提示
  • [from::when] 在指定数量的 step 后从提示中删除 from
  • [from:to:when] 在指定数量的 step 后将 from 替换为 to
其中 fromto 是替换前后的提示词,when 表示替换时机。
如果 when 是介于 0 和 1 之间的数字,则它指进行切换的步数的百分比。如果它是一个大于零的整数,那么这代表进行切换的字面步数。
替换标签可无限嵌套。
示例:对于 a [fantasy:cyberpunk:16] landscape
  • 开始时,模型将绘制 a fantasy landscape
  • 在第 16 步之后,它将采用 a cyberpunk landscape 继续生成。

标签轮转

允许您在生成过程中每步轮换使用多个提示词。基本语法是:
生成的第一步将使用 a,第二步将使用 b,第三步将使用 c,第四步将使用 a,依此类推。

多组提示词生成

WARNING
AND 的语法优先级最高,因此试图使用 AND 分离单个提示词的操作是错误的。注意甄别部分公开教程中的错误示例。
允许在生成时同时使用多组提示词,并将结果直接相加。基本语法是:

Prompt matrix 参数矩阵

使用 | 分隔多个 Tag,程序将为它们的每个组合生成一个图像。 例如,如果使用 a busy city street in a modern city|illustration|cinematic lighting ,则可能有四种组合(始终保留提示的第一部分)
  • a busy city street in a modern city
  • a busy city street in a modern city, illustration
  • a busy city street in a modern city, cinematic lighting
  • a busy city street in a modern city, illustration, cinematic lighting
【MDJ】画面微调教学【MDJ】教你写一个好的Prompt