本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。
大家好,我是水滴~~
在本篇文章中,我们将深入探讨 Stable Diffusion WebUI 的另一个引人注目的生成参数——脚本(Script)。我们将逐一细说提示词矩阵、从文本框或文件导入提示词,以及X/Y/Z图表脚本的使用方法,并结合生动的案例,为您呈现这些功能的实际应用与效果。通过本文的介绍,您将对这些脚本功能有更深入的了解,并能更自如地运用它们,在Stable Diffusion WebUI中打造出丰富多彩的图像作品。
希望能对你有所帮助!
文章目录
- 提示词矩阵
- 把可变部分放在提示词文本的开头
- 为每张图片使用不同随机种子
- 选择生效的范围
- 选择分隔符
- 宫格图边框(像素)
- 从文本框或文件载入提示词
- 简单用法
- 高级用法
- X/Y/Z 图表
提示词矩阵
提示词矩阵(Prompt matrix)是 Stable Diffusion Web UI 中的一个重要功能。通过启用该脚本(Script),在prompt 中用“|”来分割提示词,用户可以比较不同提示词交替使用对于绘制图片的影响。
例如:a girl|pink hair|black shirt(一个女孩 |粉红头发|黑衬衫),会有四种可能的组合(始终保留提示词的第一部分):
- a girl
- a girl,pink hair
- a girl,black shirt
- a girl,pink hair,black shirt
这会按此顺序生成四张图片,所有图片都具有相同的种子。首图由这四张图片组成的矩阵图,并且每张图片都有相应的提示词:
示词分隔的越多,组合的情况也越多,例如:a girl |pink hair|black shirt|black glasses(一个女孩 |粉红头发|黑衬衫|黑眼镜),会有八种组合:
下面还有一些选项,我们来逐一介绍:
把可变部分放在提示词文本的开头
这是一个复选框,默认不选中。意思是调整提示词的顺序和结构,以便将那些可能对图像生成结果影响较大的提示词或变量置于提示词序列的开始位置。
构造之后,那么提示词:a girl|pink hair|black shirt,组合将变为:
- a girl
- pink hair, a girl
- black shirt, a girl
- pink hair, black shirt, a girl
在 Stable Diffusion 中,提示词对图像生成的影响程度可能会因为其在提示词序列中的位置而有所不同。一些用户可能发现,将某些特定的提示词放在开头,可以使其对图像的影响更为显著。这有助于用户更精确地控制图像的生成,尤其是在尝试微调或优化图像时。
为每张图片使用不同随机种子
在使用“提示词矩阵”生成图像时,默认使用同一种子来生成图片,这样便于我们观察其变化,也是我们推荐的行为。
但如何你有特殊的需求,可以勾选此选项,那么生成的每张图片使用不同的种子。
选择生效的范围
意思是“提示词矩阵”是对正向提示词起作用还是对负向提示词起作用。默认为正向。
选择分隔符
表示最终组合的提示词所使用的分隔符,默认逗号即可。
宫格图边框(像素)
表示让生成的矩阵图中,各图片之间保留一定的空隙。例如下图中,宫格图边框使用了10个像素的效果:
从文本框或文件载入提示词
从文本框或文件载入提示词(Prompts from file or textbox)可以让我们一次性输入多组提示词,这些提示词像批处理任务一样,按照顺序逐一生成图片。输入的方式可以是文本框,也可以是文件。
我们先来看下这些选项都有什么作用:
- 每行输入都换一个随机种子:每条脚本提示词都使用不同的随机种子(默认)。
- 每行输入都使用同一个随机种子:每条脚本提示词都使用相同的随机种子。
- 插入提示词的位置:如果“Prompt”框中有内容,会与脚本提示词进行合并。【start】表示将脚本提示词插入“Prompt”的前面;【end】表示插入“Prompt”的后面。
- 提示词输入列表:输入脚本提示词的地方,每个提示词蹭使用换行符分割。
- 上传提示词输入文件:如果提示词脚本很多,也可以将脚本提示词放到 TXT 文件中,通过这里来上传即可。
简单用法
下面是一个简单的用法:在提示词列表中输入四条提示词:a girl(一个女孩)、a boy(一个男孩)、a man(一个男人)、a woman(一个女人)。
a girl
a boy
a man
a woman
这样,会按顺序生成四张照片,分别为一个女孩、一个男孩、一个男人、一个女人:
高级用法
其实提示词脚本支持更复杂的批处理任务,我们可以指定提示词的模型、采样器、采样步数、宽/高等生成参数。
下面是支持的参数:
- “sd_model”:模型
- “outpath_samples”:样本输出路径
- “outpath_grids”:网格输出路径
- “prompt_for_display”:用于展示的提示词
- “prompt”:提示词
- “negative_prompt”:负向提示词
- “styles”:提示词模板
- “seed”:随机种子
- “subseed_strength”:次级种子强度
- “subseed”:次级种子
- “seed_resize_from_h”:次级种子高度
- “seed_resize_from_w”:次级种子宽度
- “sampler_index”:采样器索引
- “sampler_name”:采样器名称
- “batch_size”:每批数量
- “n_iter”:每批数量
- “steps”:采样迭代步数
- “cfg_scale”:提示词相关性
- “width”:宽度
- “height”:高度
- “restore_faces”:面部修复
- “tiling”:平铺
- “do_not_save_samples”:不保存样本
- “do_not_save_grid”:不保存网格
还是使用上面那个示例,我们再添加一些参数:
--"prompt" "a girl" --"seed" "1628670850"
--"prompt" "a boy" --"width" "768" --"height" "512"
--"prompt" "a man" --"width" "512" --"height" "768"
--"prompt" "a woman" --"n_iter" "2"
生成结果:
X/Y/Z 图表
X/Y/Z 图表(X/Y/Z plot)允许用户通过图形化的方式比较和生成不同参数设置下的图像结果。通过这个功能,用户可以直观地探索不同参数对生成图像的影响,并找到最佳的参数组合。
具体来说,X/Y/Z plot功能提供了三个维度(X轴、Y轴和Z轴),每个维度上都可以设置不同的参数。用户可以在X轴、Y轴和Z轴上分别选择想要比较的参数,并设置每个轴上的参数值范围。例如,X轴可以设置为不同的文本提示,Y轴可以设置为不同的采样步骤数,Z轴可以设置为不同的种子值等。
一旦参数设置完成,X/Y/Z plot功能将自动生成一个网格状的图像集合,其中每个网格单元代表一个特定的参数组合。用户可以观察这些网格单元中的图像,比较不同参数组合下的生成结果,从而理解参数如何影响图像的质量和风格。
当然,在实际使用中我们使用X轴和Y轴就够了,加上Y轴后会变得很慢。
下面例子用来对比 “DPM++ 2M Karras”和“UniPC”两个采样器,在指定步数的成像情况。其中X轴为采样步数,Y轴为采样器:
输出结果:
在设置轴的值时,对于整数或浮点数支持如下语法:
- 简单范围:1-5= 1, 2, 3, 4, 5
- 括号内增量范围:
- 1-5 (+2)= 1, 3, 5
- 10-5 (-3)= 10, 7
- 1-3 (+0.5)= 1, 1.5, 2, 2.5, 3
- 方括号中包含计数的范围:
- 1-10 [5]= 1, 3, 5, 7, 10
- 0.0-1.0 [6]= 0.0, 0.2, 0.4, 0.6, 0.8, 1.0