Stable Diffusion之提示词指南(二)

在上一篇的文章中,我们讲解了Stable Diffusion提示词的基本用法,不了解的到可以去学习一下———Stable Diffusion之提示词指南(一)。这章我们再详细讲解一下其他高级用法和负提示词。

注意:部分语法只是适用于AUTOMATIC1111 Web UI(以下简称Web UI),而有些不适用于ComfyUI

高阶语法技巧

在上次的文章中,我们已经提到过部分使用方法,我们再回顾一下。可能你还有印象,如下的提示词权重提示。

提示词权重

该语法只适用于Web UI。

  • 英文圆括号(tag):每套一层权重增加1.1 倍
  • 英文大括号{tag}:每套一层权重增加1.05 倍
  • 英文方括号[tag]:每套一层权重减少0.9 倍(减权重)
  • 英文圆括号(tag:N):指定权重 x N倍
  • 多层括号就是叠加计算:[[tag]]将权重调整为原来的0.81倍(0.9 x 0.9),((tag))则将权重提高到1.21倍(1.1 x 1.1)

提示词注释

该语法只适用于Web UI。

有时候,我们就算通过提高或削弱权重,也不能阻止部分提示词污染其他提示词的现象,尤其是带有颜色描述的提示词,很容易相互影响。

那么还有什么办法可以让我们的描述更加精确呢?这里可以考虑采用“注释”这一种提示词的用法。

注释写法是:主体描述\(注释内容1,注释内容2\)

比如:

BestQuality\(extremely detailed CG unity 8k wallpaper\)

这个最佳质量(BestQuality),通过后面括号的内容“极其细致的CG统一8k壁纸”(extremely detailed CG unity 8k wallpape)进行了补充。

比如我们下面的画面:

1girl,(purple hair),black eyes,smile,yellow hat,white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,

1-1

我们可以看到帽子没有渲染成我们想要的颜色。我们添加注释后再试试。

1girl\(purple hair\),black eyes,smile,yellow hat,white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,

1-2

关键词混合

该语法只适用于Web UI。

官方也把这个称为关键词编辑,也有些人叫分步描绘。

你可以混合使用两个关键字,专有术语是Prompt Scheduling。语法是:

[关键字1:关键字2:数字]

此外还有两种:

[关键字1:数字]
[关键字1::数字]

即:

[from:to:when] 意思是:在经过指定数量的步骤后,将位于 from 处的提示词替换为 to 处的提示词。
[to:when] 意思是:在经过指定数量的步骤后,将位于 to 处的提示词添加到提示中。
[from::when] 意思是:在经过指定数量的步骤后,从提示中删除位于 from 处的提示词。

注意:如果when小于1,比如为0.4就代表整体绘制步数的40%,以[from:to:when]为例,就代表前40%使用from的提示词,后60%使用to的提示词。

我们来添加一下背景:a [green forests:river:0.5] landscape background,如下,同时我们迭代步数设置为30。

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,a [green forests:river:0.5] landscape background,

由此可知在前面1-15迭代步数,提示词为:

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,a green forests landscape background,

由此可知在前面15-30迭代步数,提示词为:

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,a river landscape background,

结果如下:

1-3

我们可以看到在后面其实也明显没出现河流,这个因为在Stable Diffusion 中模型绘制图像内容并非按照完美百分比的步骤进行绘制,画面内容在前面 20 步左右时已基本定型,后续的迭代步数更多是丰富细节,基本不会再添加或减少主体内容。

为验证,我们可以改为a [green forests:river:8] landscape background,在前面8步骤是森林的绘制,后面的8-30是河流的绘制,在绘图定型之前介入修改。结果如下:

1-4

我们能看到明显的河流出现在画面中。

[to:when]和[from:to:when]类似,但它只能设置在指定的位置放入to关键词。

[to::when]也称为停止绘制,这个和分步绘制的原理相同,都是控制模型运行时绘制特定内容的步数占比。两者的区别在于:停止绘制只针对画面中单个关键词,并且是先绘制特定元素再移除。注意中间是双冒号。

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,upper_body,a [green forests::0.3] landscape background,

在前面30%添加森林,后面30%-70%删除该提示词的影响。

1-5

使用关键字混合,就可以实现类似于prompt-to-prompt的效果,通过编辑生成高度相似的图像对。

地址:https://prompt-to-prompt.github.io/

总结一下:

[from:to:when]
  • when:代表迭代步数或比例。
    • 当 0 < when < 1,假设迭代步数为N,则step = when * N
    • 当 when >= 1,则step = when
  • from:是(prompt)提示词,表示在when前的步骤数渲染from提示词
  • to: 是(prompt)提示词,表示在when后的步骤数渲染to提示词
[to:when]
  • when:代表迭代步数或比例。
    • 当 0 < when < 1,假设迭代步数为N,则step = when * N
    • 当 when >= 1,则step = when
  • to: 是(prompt)提示词,表示在when后的步骤数渲染to提示词
[from::when]
  • when:代表迭代步数或比例。
    • 当 0 < when < 1,假设迭代步数为N,则step = when * N
    • 当 when >= 1,则step = when
  • from: 是(prompt)提示词,表示在when后的步骤删除from提示词

打断提示词

该语法只适用于Web UI。

打断的语法非常简单,也很好理解,就是在提示词之间加上关键词【BREAK】,它的作用时打断前后提示词的联系,在一定程度上减少提示词污染的情况。

我们知道Web UI中没有token限制。但如果提示词包含超过 75 个token(CLIP token生成器的限制),它将启动另外 75 个token的新块,因此新的“限制”变为 150。该过程可以永远继续,或者直到你的计算机内存不足…

每个 75 个token块都经过独立处理,生成的表示在输入到 Stable Diffusion 的 U-Net 之前会被连接起来。

打断语法(Break)的用法,BREAK是一个特殊提示,插入后它会强制将Token数凑齐调整为75。这样我们就能够控制不同层次提示词的打断效果了。这个语法指令相当于手动分组,确保每组都能描述完整的画面特征。使用BREAK可以切断不同组之间的上下文关联,防止元素相互干扰。

比如我们调整一下上面的提示词,去掉upper_body上半身限制,然后添加blue pants蓝色的裤子。

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,a [green forests::0.3] landscape background blue pants,

1-6

裤子并没有展示我们需要的颜色,我们尝试添加BREAK分开,防止相互影响。

1 girl\(purple hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,

1-7

可以看到效果不错,朝着我们设置的方向绘制了。

融合提示词

融合语法和打断正好相反,是将前后提示词的内容联系起来,模型在绘制时就会关联前后的元素特征,最终呈现出具备融合图像的特征。它的关键词是「AND」。

模型本身就是将一段提示词结合起来理解,为什么要额外加上「AND」呢?看完下面这个例子就很好理解了,可以发现如果只是通过逗号分隔,模型绘制时只是简单将黄色和绿色进行填充拼接,而加上「AND」后,模型会将黄色和绿色当作一个词来理解,最终绘制出草绿色。

1 girl\(green hair, yellow hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,

在提示词中green hair,yellow hair,使用逗号,则生成的头发是黄色的。如下:

1-8

而使用AND替换逗号,如下:

1 girl\(yellow hair AND green hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,full_shot,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,

1-9

可以看到通过AND替换明显结果不同,同时也支持权重如:yellow hair AND green:1.2 hair

总结一下:

[tag1 AND tag2 AND tag3 AND …]
  • AND 必须大写,且 AND 的提示词越多,需要的迭代步数越高设置权重,可以写为 tag1:w1 AND tag2:w2 AND tag3:w3,不需要加(),但是这个权重单纯只是指 AND 中的权重,并非全局权重。

提示词交替

除了融合外,还有一种语法也可以实现关键词融合的效果,那就是提示词交替。即提示词也可以进行轮转来进行提示,采用的格式如下:

[提示词一|提示词二]

比如我们添加[clouds|flower|cthulhu mythos] in background到提示词中。

1 girl\(yellow hair AND green hair\),black eyes,smile,(yellow hat:1.1),white skin,(pink Sweaters:1.3),open hands,highres,full_shot,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,[clouds|flower|cthulhu mythos] in background,

1-10

虽然同样是融合元素特征,但在原理上交替绘制和融合有本质区别:「交替」每步绘制时只理解单独的关键词,而「融合」是将前后的关键词一起来理解,因此交替最终呈现的效果更多是融合主体内容的画面特征,而无法像融合一样深度理解关键词之间的联系。我们平时在使用时一般主要也是使用融合语法「AND」居多,交替绘制更多是用于绘制比较猎奇的克苏鲁风格(cthulhu mythos)图像等。

总结一下:

[tag1|tag2|tag3|…]
  • 第一步画tag1,第二步画tag2,第三步画tag3,…,第一轮循环结束后又从tag1重新开始画。

提示矩阵

提示矩阵排列的语法,该语法主要用于实现批量出图的效果,提高绘图效果。

提示词1|提示词2|....   

需要注意的是,该语法需要配合提示词矩阵 Prompt matrix 来使用,开启后按语法输入,模型会将关键词进行矩阵排列,每个组合的提示词都会生成一张对应的图像,若没有开启则会随机生成其中一张。

1-11

我们在提示词中加入:(yellow hat:1.1) | glasses来测试一下。

1 girl\(yellow hair AND green hair\),black eyes,smile,(yellow hat:1.1) | glasses,white skin,(pink Sweaters:1.3),open hands,highres,full_shot,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,[clouds|flower|cthulhu mythos] in background,

1-12

该语法使用|字符,系统将为它们的每种组合生成一个图像。例如,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

总结一下:

tag1|tag2|tag3|…
  • 使用【|】分隔多个提示词,模型会自动将提示词进行交叉组合(第一段提示词默认保留),每个组合的提示词都会生成一张对应的图像。
  • 该语法需要配合提示词矩阵Prompt matrix来使用(脚本中开启),开启后按语法输入,模型会将关键词进行矩阵排列,每个组合的提示词都会生成一张对应的图像,若没有开启则会随机生成其中一张。
使用Lora

LoRA模型,全称Low-Rank Adaptation of Large Language Models,大语言模型的低阶适应。可以理解为基础模型打的补丁,你需要什么样的风格和特定的需要,通过自训练模型Lora来实现绘图内容或风格的定制。

在提示词中使用Lora模型来调整生成图像的内容或风格时,使用Lora的语法为<lora:文件名:权重>。其中“文件名”即是Lora模型文件的名字,不包含扩展名;权重是一个不小于0的数字,默认值为1,设为0表示不使用该Lora,也可以设为比1大的数字来表示更大的权重,不过权重过大时可能会对画面起到反效果,用户可根据自己的需求以及具体Lora的表现来调整权重值以获得最佳效果。也可以同时使用多个Lora,它们的效果将会叠加。

一些Lora只需在提示词中包含<lora:文件名:权重>语法即可,也有一些Lora带有触发词,除了Lora调用语法外还必须在提示词中包含指定的触发词方能生效。在Lora的下载页面或者描述文档中一般可以看到关于触发词的说明。

即使记不住已安装的Lora的文件名也没关系,只需单击界面右上角“生成”按钮下方的“显示/隐藏额外网络”(Show/hide extra networks)按钮,在提示词下方就可以显示或隐藏额外网络面板,单击其中的“Lora”选项卡,即可看到当前所有安装的Lora,如下图所示:

1-13

在这个界面,单击一个Lora卡片,即可在提示词输入框自动添加对该Lora的引用。例如<lora:add_detail:1>​,表示使用“add_detail”这个Lora,权重为1。之后可以根据需要手动调整权重值数字。

1 girl\(yellow hair AND green hair\),black eyes,smile,(yellow hat:1.1) | glasses,white skin,(pink Sweaters:1.3),open hands,highres,full_shot,looking at viewer,a [green forests::0.3] landscape background BREAK blue pants,[clouds|flower|cthulhu mythos] in background,<lora:add_detail:1>,

结果如下:

1-14

当使用基础模型总是得不到理想效果时,不妨试一试各种Lora,合适的Lora可能会给图像效果带来惊人的提升。

如下面都是配合Lora生成的高清图片:

1-15

关于Lora的更多知识后面会再继续介绍,这里只是简单介绍一下使用方法。

最后再推荐一个不错的Prompt生成网址:

地址:https://prompthero.com/


欢迎大家关注微信公众号"壁虎说技术",更多AI新技术,新点子在公众号第一时间更新。

壁虎说技术

参考

Features
prompt-guide
stable-diffusion-guide-3
Stable Diffusion 进阶指南-1
商用级AIGC绘画创作与技巧(Midjourney+Stable Diffusion)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值