Stable Diffusion Prompt

发布时间 2023-12-20 09:29:26作者: 梅丹隆

Prompt俗称咒语,实际上也是很难完全把控,在实际生图过程中需要不断的摸索。本文从“规则”、“原理”、“结合扩散模型”三个角度对Prompt进行探讨,希望小伙伴们能对Prompt整体有立体的认识。

一、规则

1、增强/减弱(emphasized)

实质是:缩放语义向量
:::warning
()强度变为1.1倍
[]强度变为0.9倍

(keyword:XX)强度变为XX倍
以下俩个例子都是强度变为1.1倍

  • (keyword)
  • (keyword:1.1)

以下俩个例子都是强度变为0.9倍

**可以使用多个()或[]来影响强度,多个使用时就是简单的相乘 **

  • (keyword): 1.1倍
  • ((keyword)): 1.21倍
  • (((keyword))): 1.33倍
  • [keyword]: 0.81倍
  • [[keyword]]: 0.73倍
    :::

权重应高于0.1

2、渐变/调整作用时机(scheduled)

2.1、[keyword1 : keyword2 : amount]

可理解为[from : to : when]

Amuont的使用:

  • amount在[0,1]区间内,那么表示两个关键词占绘图步数(step)的比例
    • 如:amount=0.75,step=40。那么表示前30步绘制第一个关键词,后10步绘制第二个关键词
  • amount > 1时,amount指特定的步数切换
    • 如:amount=30,那么表示在第30步之后,切换绘制下一个关键词

2.2、[keyword2 : amount]

[to : when]

在某步后添加某个词条(to)

2.3、[keyword1 : : amount]

[from :: when]

在某步前使用某个词条(from)
额外技巧:

**我们将(ear:1.9)作为正向提示词 **
**然后我们将这个放入反向提示词 [the : (ear:1.9) : 0.5] **
**第一个关键词为一个毫无意义的词,第二个关键词为(ear:1.9)代表我们想要生成耳朵 **
你的采样步骤为20步,则前10步会减少一个毫无意义的东西出现的概率,后10则会执行(ear:1.9)来减少耳朵出现的概率

3、交替(alternate)

**[keyword1|keyword2] **
keyword1和keyword2在采样时被交替使用

[A|B|C|D] : A,B,C,D按顺序被交替使用

4、组合/混合(composable)

AND
可为每个词提供权重

a cat:1.2 AND a dog AND a pengain:2.2

image.png

5、断开/打断(BREAK)

BREAK
大写,这个词会打断上下文的关系,强行进行再次分组

二、Prompt原理

生图过程中,原始图像会根据“正向”和“反向”提示词进行降噪。
image.png
如果反向或正向提示词为空,则会产生一个随机的提示词(无条件采样)作为代替,随机产生的提示词也是具体的画面。
image.png
如上图,反向提示词通过无条件采样获得的具体画面为“篮球”和“红酒杯”,在降噪过程中不会对原始图片造成过多干扰。

三、结合扩散模型

通过Stable Diffusion组成,我们了解到在“Text Understander”中,通过将用户的关键词(word/token)输入给Transformer语言模型进行解析,从而获得token embeddings语义向量。之后将语义向量发送给Image Generator,通过UNet神经网络对噪声进行预测来降噪,最后获得有意义的图片结果。
那么,我们从两个方面了解一下分词大致规则

1、WebUI分组

  1. 拼写错误或罕见词
    1. 开头结尾的空格、词与词之间多余的空格会被移除
    2. bankbankk会被识别为bank,而bonk不会被识别为“bank”
    3. _通常不会被转换为空格
    4. 因为拼写错误等问题存在,故颜文字和emoji的作用性相比自然语言更强
  2. 为避免短语被分为两组,webUI是会参考短语附近的“,”来进行分组
  3. 输入BREAK可以快速分组
  4. 提示词(token)有长度限制,对于Token进行分组,每一组被补充至(1,79,768)的张量,最后进行合并发送给神经网络

2、CLIP

CLIP的详细原理在Clip介绍中已经说明,不再赘述,关于对token的处理,我们还是摘抄一下“小结”

  1. 开头和结尾的词往往作用性更强
  2. 提示词越多,单个提示词作用越低
  3. 开头的数个提示词作用较强,有更强的相关