Stable Diffusion之提示词指南(二)

news2024/9/20 18:33:01

在上一篇的文章中,我们讲解了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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot集成kafka-指定topic(主题)-partition(分区)-offset(偏移量)消费信息

SpringBoot集成kafka-指定topic-partition-offset消费信息 1、消费者2、生产者3、配置类4、配置文件5、实体类6、工具类7、测试类8、第一次测试&#xff08;读取到19条信息&#xff09;9、第二次测试&#xff08;读取到3条信息&#xff09; 1、消费者 指定消费者读取配置文件中…

[pytorch] --- pytorch环境配置

本教程环境搭建基于windows 1 安装miniconda 1.1 miniconda与anaconda的区别 包含的包: Anaconda: 是一个较大的发行版&#xff0c;预装了大量的科学计算和数据分析相关的 Python 包。Miniconda: 更轻量级&#xff0c;只包含 Conda、Python 和它们的依赖&#xff0c;以及少…

微信小程序获取用户openId并通过服务端向用户发送模板消息

1.引言 注意&#xff1a; 1.标题中的服务端是自己研发的服务端&#xff0c;不是腾讯公司的服务端。 2.小程序的模板消息分为一次性订阅消息与长期订阅&#xff0c;一次性订阅就是每次在给用户发送消息之前都需要获得用户的同意&#xff08;即用户订阅&#xff09;&#xff0…

数据结构(树、平衡树、红黑树)

目录 树 树的遍历方式 平衡二叉树 旋转机制 左旋 右旋 旋转实例 左左 左右 右右 右左 总结 红黑树 树 相关概念 节点的内部结构如下 二叉树与二叉搜索树的定义 树的遍历方式 前序遍历&#xff1a;当前节点&#xff0c;左子节点&#xff0c;右子结点 中序遍历&a…

React学习day01-React-开发环境配置、JSX基础-本质、JSX中js表达式的用法、JSX的条件渲染

1、React &#xff08;1&#xff09;概念&#xff1a;由Meta公司研发&#xff0c;是一个用于构建Web和原生交互页面的库 &#xff08;2&#xff09;优点&#xff1a; 1&#xff09;相较于传统基于DOM开发的优势&#xff1a;组件化的开发方式、不错的性能 2&#xff09;相较于…

软件设计原则之单一职责原则

目录 单一职责原则单一职责原则的主要特点应用范围Demo用户信息日志记录 单一职责原则 单一职责原则&#xff08;Single Responsibility Principle&#xff0c;简称SRP&#xff09;是面向对象设计中的一个重要原则&#xff0c;其核心思想是&#xff1a;一个类应该仅有一个引起…

ollma 本地部署大模型

因为我本地是 windows 的系统&#xff0c;所以这里直接写的是通过 docker 来实现本地大模型的部署。 windows 下 WSl 的安装这里就不做重复&#xff0c;详见 windows 部署 mindspore GPU 开发环境&#xff08;WSL&#xff09; 一、Docker 部署 ollma 1. 拉取镜像&#xff08;…

Ubuntu系统设置Java项目开机自启

1、创建自启动脚 sudo vi /etc/systemd/system/java-service.service 2、编辑自启脚本 [Unit]部分包含了service的描述和依赖关系。在这个示例中&#xff0c;我们将其设置为在系统启动后执行。 [Service]部分定义了service的执行方式。在这个示例中&#xff0c;我们指定了Java…

shell工具箱集合!!

shell工具箱集合 1.shell工具箱集合 2.Chrony 时间同步 3.Get_host_Info 设备信息收集 4.Init_host 系统初始化 5.Iperf 带宽测试套件 6.Lagscope_test 时延测试套件 7.Mtr_test 双向路由探测套件 下载地址&#xff1a; https://pan.quark.cn/s/6936cc13bc04

学习笔记——Redis基础

文章目录 Redis五种常用数据类型Redis常用命令Spring Data Redis使用方式操作步骤 Redis五种常用数据类型 Redis存储的是key-values结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有五种常用的数据类型&#xff1a; 字符串&#xff08;string&#xff09;&…

C++入门基础知识32——【关于C++ 存储类之auto存储类】

成长路上不孤单&#x1f60a;【14后&#xff0c;C爱好者&#xff0c;持续分享所学&#xff0c;如有需要欢迎收藏转发&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

Flex的基本使用+综合案例

组成 弹性盒子没有设置高&#xff0c;就会自动拉伸 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&q…

高并发下阻塞队列的选择

高并发下阻塞队列的选择 一、队列 队列&#xff1a;queue。简称队&#xff0c;它和堆栈一样&#xff0c;也是一种运算受限的线性表&#xff0c;其限制是仅允许在表的一端进行插入&#xff0c;而在表的另一端进行删除。 简单的说&#xff0c;采用该结构的集合&#xff0c;对元素…

洛谷 P2569 [SCOI2010] 股票交易

题目来源于&#xff1a;洛谷 题目本质&#xff1a;动态规划&#xff0c;单调队列 解题思路&#xff1a; 方程f[i][j]表示第 i 天结束后&#xff0c;手里剩下 j 股的最大利润&#xff0c;则不买不卖&#xff1a;f[i][j]f[i-1][j]。 买入&#xff1a;f[i][j]max{f[i-w-1][k]k*…

Spring DI 数据类型——构造注入

首先新建项目&#xff0c;可参考 初识 IDEA 、模拟三层--控制层、业务层和数据访问层 一、spring 环境搭建 &#xff08;一&#xff09;pom.xml 导相关坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.…

【Kubernetes】K8s 持久化存储方式

K8s 持久化存储方式 1.使用节点数据卷2.使用网络数据卷3.使用临时数据卷 由于容器是一种无状态的服务&#xff0c;所以容器中的文件在宿主机上表现出来的都是临时存放&#xff08;当容器崩溃或者重启时&#xff0c;容器中的文件会丢失&#xff09;。另外&#xff0c;Kubernetes…

C++领进门(第一讲)

目录 1. C关键字&#xff08;C98&#xff09; 2. 命名空间 ​编辑 2.1命名空间的定义 2.2命名空间的使用 3.C的输入&输出 3.1cout与printf的区别 4.缺省参数 4.1缺省函数的概念 4.2缺省参数分类 5.函数重载 C的语法就是在C的基础上弥补了C的缺陷与不足 1. C关键…

Java集合框架(三)---Map

接口Map<K,V> Map集合&#xff1a;该集合存储键值对&#xff0c;一对一对往里存&#xff0c;而且要保证键的唯一性。 1&#xff0c;添加 put(K key, V value) putAll(Map<? extends K, ? extends V> m) 2&#xff0c;删除 clear() remove(Object key) 3&#xff…

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 应用DFX能力介绍(含闯关习题)

学完时间&#xff1a;2024年8月24日 学完排名&#xff1a;第1698名 一、Performance Analysis Kit简介 Performance Analysis Kit&#xff08;性能分析服务&#xff09;为开发者提供应用事件、日志、跟踪分析工具&#xff0c;可观测应用运行时状态&#xff0c;用于行为分析、…

游戏分享网站|基于SprinBoot+vue的游戏分享网站系统(源码+数据库+文档)

游戏分享网站 目录 基于SprinBootvue的游戏分享网站 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2后台登录 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…