Prompt俗称咒语,实际上也是很难完全把控,在实际生图过程中需要不断的摸索。本文从“规则”、“原理”、“结合扩散模型”三个角度对Prompt进行探讨,希望小伙伴们能对Prompt整体有立体的认识。
一、规则
1、增强/减弱(emphasized)
实质是:缩放语义向量
:::warning
()强度变为1.1倍
[]强度变为0.9倍
(keyword:XX)强度变为XX倍
以下俩个例子都是强度变为1.1倍
- (keyword)
- (keyword:1.1)
以下俩个例子都是强度变为0.9倍
- keyword
- (keyword:0.9)
**可以使用多个()或[]来影响强度,多个使用时就是简单的相乘 **
权重应高于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指特定的步数切换
2.2、[keyword2 : amount]
[to : when]
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
5、断开/打断(BREAK)
二、Prompt原理
生图过程中,原始图像会根据“正向”和“反向”提示词进行降噪。
如果反向或正向提示词为空,则会产生一个随机的提示词(无条件采样)作为代替,随机产生的提示词也是具体的画面。
如上图,反向提示词通过无条件采样获得的具体画面为“篮球”和“红酒杯”,在降噪过程中不会对原始图片造成过多干扰。
三、结合扩散模型
通过Stable Diffusion组成,我们了解到在“Text Understander”中,通过将用户的关键词(word/token)输入给Transformer语言模型进行解析,从而获得token embeddings语义向量。之后将语义向量发送给Image Generator,通过UNet神经网络对噪声进行预测来降噪,最后获得有意义的图片结果。
那么,我们从两个方面了解一下分词大致规则
1、WebUI分组
- 拼写错误或罕见词
- 开头结尾的空格、词与词之间多余的空格会被移除
bank
,bankk
会被识别为bank
,而bonk
不会被识别为“bank”_
通常不会被转换为空格- 因为拼写错误等问题存在,故颜文字和emoji的作用性相比自然语言更强
- 为避免短语被分为两组,webUI是会参考短语附近的“
,
”来进行分组 - 输入
BREAK
可以快速分组 - 提示词(token)有长度限制,对于Token进行分组,每一组被补充至(1,79,768)的张量,最后进行合并发送给神经网络
2、CLIP
CLIP的详细原理在Clip介绍中已经说明,不再赘述,关于对token
的处理,我们还是摘抄一下“小结”
- 开头和结尾的词往往作用性更强
- 提示词越多,单个提示词作用越低
- 开头的数个提示词作用较强,有更强的相关