区域提示器
-
AUTOMATIC1111的稳定扩散Web界面的自定义脚本
-
可以为不同区域指定不同的提示词
-
可以为垂直/水平分割的区域指定不同的提示词
对于LoHa、LoCon用户
关于LoRA/LoCon/LoHa 由于Web界面的规格限制,存在以下约束: 这些约束源于Web界面在应用LoRA时无法执行特定优化,且不支持中途更改LoRA强度。
- LoRA:可以在不降低速度的情况下应用。
- LoCon/LoHa:启用"使用LoHa或其他"选项时可以使用,但会导致生成速度变慢。这个限制是基于Web界面的规格。
关于LoRA/LoCon/LoHa 按LoRA类型的使用条件:
- LoRA:可以在不降低速度的情况下应用。
- LoCon/LoHa:启用"使用LoHa或其他"选项时可以使用,但会导致生成速度变慢。这个限制是基于Web界面的规格。
更新
-
模式名称已更改。
Horizontal
->columns
,Vertical
->Rows
(在日语中,"横向分割"翻译成英语的"Split Horizontal"在英语国家似乎有相反的含义。据说它的意思是"用"水平线分割) -
添加了交换
,
和;
的选项 -
分割模式名称已更改,
Horizontal
->columns
,Vertical
->Rows
-
添加了翻转
,
和;
的选项 -
添加LoRA停止步骤 你可以指定停止应用LoRA的步骤。通过在大约10步停止,可以预期防止侵蚀和噪音,并提高生成速度。 (设置为0时禁用。0表示禁用)
-
支持SDXL
-
支持web-ui 1.5
-
添加了API用户指南
-
提示词模式改进
-
提示词模式的操作得到改善 (调整了流程,使其分三步生成蒙版,并从第一阶段重新开始生成)
-
新功能:通过修复绘制的区域(感谢Symbiomatrix)
-
新功能:通过修复绘制的区域(感谢Symbiomatrix)
概述
潜在耦合扩展在每个提示词的基础上执行U-Net计算,而此扩展在U-Net内部执行每个提示词的计算。详情请参见这里(日语)。感谢furusu提出这个想法。此外,还支持潜在模式。
索引
使用方法
本节将解释如何创建以下图像。 以下是提示词。
green hair twintail BREAK
red blouse BREAK
blue skirt
设置
Active : On
Use base prompt : Off
Divide mode : Vertical
Divide Ratio : 1,1,1
Base Ratio :
此设置将图像垂直分为三部分,并按顺序从上到下应用提示词"green hair twintail"、"red blouse"、"blue skirt"。
激活
只有当"Active"被切换时,此扩展才会启用。
提示词
不同区域的提示词通过BREAK
关键词分隔。
负面提示词也可以通过BREAK
为每个区域设置,但如果没有输入BREAK
,所有区域将设置相同的负面提示词。
在提示词中的任何位置使用ADDROW
或ADDCOL
将自动激活2D区域模式。
使用基础提示词
如果你想为所有区域使用相同的基础提示词,请勾选此项。当你希望提示词在所有区域保持一致时,使用此选项。
使用基础提示词时,第一个由BREAK
分隔的提示词被视为基础提示词。
因此,启用此选项时,需要比分割比例多一个由BREAK
分隔的提示词。
输入ADDBASE
时自动开启。
分割比例
如果输入1,1,1,图像将被分成三个相等的区域(33.3%、33.3%、33.3%);如果输入3,1,1,图像将被分成60%、20%和20%。也可以输入分数:0.1,0.1,0.1等同于1,1,1。为了获得最高精度,输入与高度/宽度(垂直/水平模式)对应的像素值,例如300,100,112 -> 512。
使用 ;
分隔符将自动激活 2D 区域模式。
基础比例
设置基础提示词的比例;如果基础比例设为 0.2,则生成的图像将由 20%*基础提示词 + 80%*区域提示词
组成。也可以为每个区域单独指定,方式与"分割比例"相同 - 0.2、0.3、0.5 等。如果输入单个值,相同的值将应用于所有区域。
分割模式
指定分割方向。可以指定水平和垂直方向。 要同时指定水平和垂直区域,请参考 2D 区域模式。
计算模式
在内部,系统在注意力模式下使用 BREAK,在潜在模式下使用 AND。根据使用的模式,AND/BREAK 会自动转换,但无论您在提示词中输入 BREAK 还是 AND 都没有问题。
注意力
通常使用此模式。
潜在
速度较慢,但允许在一定程度上分离 LoRA。生成时间是区域数量 x 单张图片的生成时间。参见已知问题。
潜在模式示例,将 nendoorid 和 figma LoRA 分离到左右两侧创建。
使用公共提示词
如果启用此选项,提示词的第一部分将添加到所有区域部分。
当输入 ADDCOMM
时自动开启。
best quality, 20yo lady in garden BREAK
green hair twintail BREAK
red blouse BREAK
blue skirt
如果启用公共提示词,此提示词将转换为以下内容:
best quality, 20yo lady in garden, green hair twintail BREAK
best quality, 20yo lady in garden, red blouse BREAK
best quality, 20yo lady in garden, blue skirt
因此,您必须为 3 个区域设置 4 个提示词。如果同时启用了"使用基础提示词",则需要 5 个提示词。顺序如下:公共、基础、提示词1、提示词2、...
2D 区域分配
您可以在两个维度上指定区域。使用特殊分隔符(ADDCOL/ADDROW
),可以水平和垂直分割区域。从左上角开始,使用 ADDCOL
分隔时按列分割区域,使用 ADDROW
分隔时按行分割区域。分割比例以分号分隔的比例形式指定。下面是一个示例;虽然可以单独使用 BREAK
来描述比例,但明确指定 COL/ROW 更容易理解。使用 ADDBASE
作为第一个分隔符将产生基础提示词。如果未指定比例或比例与分隔符数量不匹配,则所有区域将自动视为等分。
在此模式下,"分割模式"中选择的方向会改变首先应用的分隔符:
- 在"列"模式下,图像首先用
ADDROW
或分割比例中的;
分割为行,然后每行用ADDCOL
或分割比例中的,
分割为区域。 - 在"行"模式下,图像首先用
ADDCOL
或分割比例中的,
分割为列,然后每列用ADDROW
或分割比例中的;
分割为区域。 - 启用翻转选项时,它会交换 , 和 ;。这允许您在保持相同比例的同时获得旋转 90 度的区域。
无论如何,提示词子句转换为行和列都是从上到下、从左到右进行的。
(blue sky:1.2) ADDCOL
green hair twintail ADDCOL
(aquarium:1.3) ADDROW
(messy desk:1.2) ADDCOL
orange dress and sofa
激活:开启
使用基础提示词:关闭
主要分割:列
分割比例:1,2,1,1;2,4,6
基础比例:
可视化和创建模板
可以可视化区域并创建提示词模板。
输入区域比例并按下按钮以显示区域。然后,将提示词模板复制并粘贴到提示词输入字段中。
fantasy ADDCOMM
sky ADDROW
castle ADDROW
street stalls ADDCOL
2girls eating and walking on street ADDCOL
street stalls
结果如下,
这是使用 1,1;2,3,2;3,2,3 的区域示例。在列模式下,它看起来像这样: 在行模式下,它将如下所示: 在行模式下启用翻转选项时,它将如下所示:
遮罩区域即修复+(实验功能)
现在可以使用多个手绘遮罩或上传包含这些遮罩的图像来指定区域(稍后会详细介绍)。
- 首先,确保切换到
遮罩分割模式
(位于列数
/行数
旁边)。否则,遮罩将被忽略,区域将像往常一样按比例分割。 - 根据所需图像设置
画布宽度和高度
,然后按创建遮罩区域
。如果指定了不同的比例或大小,遮罩可能会不准确地应用(类似于"仅调整大小"的修复)。 - 在画布上绘制所需区域的轮廓/区域,然后按
绘制区域
。这将填充该区域,并根据您选择的区域
编号为其着色。**注意,绘图仅使用黑色,填充和着色是自动完成的。**区域遮罩将显示在下方右侧。 - 按
绘制区域
将自动进入下一个区域。它还会保留用于稍后构建遮罩的区域列表。目前最多可以使用360个区域,但请注意,在高端的一些区域是相同的。 - 可以通过重新选择相同的编号并像往常一样绘制来添加到现有区域。
- 特殊区域编号-1将清除(涂白)任何已绘制的区域,并显示遮罩中仍包含区域的部分。
- 准备好区域遮罩后,像往常一样编写提示词:分割比例将被忽略。基础比例仍适用于每个区域。支持所有标志和所有BREAK / ADDX关键词(ROW/COL将转换为BREAK)。支持注意力和潜在模式(可能支持loras)。
- 在遮罩模式下,
基础
有独特的规则:当基础关闭时,任何未着色的区域都会添加到第一个遮罩中(因此应使用第一个提示词填充)。当基础开启时,任何未着色的区域将接收完整的基础提示词,而着色区域将接收通常的基础权重。这使得基础成为指定场景/背景的特别有用的工具,基础权重为0。 - 遮罩保存到和加载自分割模式为
遮罩
的预设。遮罩保存在扩展目录下的regional_masks
文件夹中,作为{预设}.png文件。 - 可以通过使用标有
在此上传遮罩
的空组件从任何图像上传遮罩。它会自动过滤和标记与用于区域的颜色近似匹配的颜色,并忽略其他颜色。区域/非区域部分将显示在遮罩下方。不要直接上传到草图区域,请阅读已知问题部分。 - 如果您希望在图像编辑器中绘制遮罩,以下是颜色与区域的对应关系:所有颜色都是
HSV(度数,50%,50%)
的变体,其中度数(0:360)计算为与所有先前颜色最大距离的值(因此颜色容易区分)。前几个值基本上是:0、180、90、270、45、135、225、315、22.5等。颜色的选择决定了它们对应的区域。 - 专业提示:您可以上传一个openpose / 深度图 / 任何其他图像,然后相应地描绘区域。遮罩将忽略不属于预期颜色标准的颜色。
这里是使用遮罩和提示词landscape BREAK moon BREAK girl
的示例和代码。
使用XYZ图提示词S/R,将moon BREAK girl
更改为其他内容。
通过提示词指定区域(实验性功能)
区域由提示词指定。下图是使用以下提示词创建的,但提示词apple printed
应该只影响衬衫,实际上却显示了苹果等。
lady smiling and sitting, twintails green hair, white skirt, apple printed shirt
如果将apple printed
的效果增强到:1.4
,你会得到,
提示词区域指定允许你计算"衬衫"的区域并调整"印花苹果"。
lady smiling and sitting, twintails green hair, white skirt, shirt BREAK
(apple printed:1.4),shirt
如何使用
语法
baseprompt target1 target2 BREAK
effect1, target1 BREAK
effect2 ,target2
首先,写下基础提示词。在基础提示词中,写下你想要创建遮罩的词(target1、target2)。接下来,用BREAK分隔它们。然后,写下对应target1的提示词。之后输入逗号并写下target1。基础提示词中目标的顺序和BREAK分隔的目标的顺序可以前后颠倒。
target2 baseprompt target1 BREAK
effect1, target1 BREAK
effect2 ,target2
也是有效的。
阈值
用于确定提示词创建的遮罩的阈值。由于目标提示词的范围差异很大,可以根据遮罩的数量设置多次。如果使用多个区域,请用逗号分隔输入。例如,头发往往模糊不清需要小值,而脸部往往较大需要小值。这些应按BREAK的顺序排列。
a lady ,hair, face BREAK
red, hair BREAK
tanned ,face
阈值:0.4,0.6
如果对多个区域只给出一个输入,则假定它们都是相同的值。
Prompt和Prompt-EX
区别在于,在Prompt中,重复的区域会被添加,而在Prompt-EX中,重复的区域会按顺序被覆盖。由于它们按顺序处理,首先设置一个大面积的TARGET会使小面积的效果更容易保持不变。
精确度
对于512 x 512的图像,Attention模式在U-Net的深层将区域大小缩小到约8 x 8像素,导致小区域混淆;而Latent模式计算64*64,使区域精确。
女孩头发双马尾花边,丝带, 裙子, 脸 BREAK
女孩, ,脸
Prompt-EX/Attention Prompt-EX/Latent
遮罩
生成图像时,会显示生成的遮罩。它的大小与图像相同,但实际使用时尺寸要小得多。
base和common的区别
一个女孩 ADDCOMM (或 ADDBASE)
红发 BREAK
绿色裙子
如果common子句中有"一个女孩"的提示词,区域1会使用"一个女孩,红发"的提示词生成。在base子句中,如果base比率为0.2,则会使用"一个女孩"*0.2 + "红发"*0.8的提示词生成。基本上,common子句组合提示词,而base子句组合权重(类似img2img的去噪强度)。如果common提示词过强,可以尝试使用base,或微调(强调)。 对应目标的即时强度应该比正常情况更强。即使是1.6也不会出问题。
已知问题
- 由于gradio的一个问题,连续两次以上上传遮罩或加载遮罩预设会失败。有两种解决方法:
- 每次上传/加载前,点击"创建遮罩区域"。
- 修改gradio.components.Image.preprocess中的代码;在函数开头添加以下内容(临时):
if self.tool == "sketch" and self.source in ["upload", "webcam"]:
if x is not None and isinstance(x, str):
x = {"image":x, "mask": x[:]}
扩展无法自动执行此覆盖,因为gradio目前不支持自定义组件。尝试在扩展中覆盖组件/方法会导致应用完全无法加载。
- 等待修复发布。
- Latent模式下LoRA损坏。已尝试改进输出,但目前尚无解决方案。以下是一些建议:
- 降低cfg,减小LoRA权重,增加采样步数。
- 使用"negative textencoder"+"negative U-net"参数:这些是0到1之间的权重,用逗号分隔,类似base。按提示词中LoRA出现的顺序应用于每个LoRA。值为0(默认)会抵消LoRA对其他区域的影响,但可能导致其损坏。值为1应更接近自然效果,但可能会破坏其他区域(绿屏、黑屏、SBAHJ化等),即使它们不包含任何LoRA。在这两种情况下,更高的LoRA权重会放大效果。效果似乎因LoRA而异,可能因组合而异。
- 有人建议LoRA block weight可能有帮助。
- 如果以上方法都不奏效,可以尝试修复绘制。
以下是一个简单提示词的示例,两个LoRA的negative te/unet值分别为:(0,0)默认,(1,0),(0,1),(1,1)。
如果你发现任何有用的见解,请分享。
如何通过API使用
通过API使用此扩展时,使用以下格式:
"prompt": "绿色头发双马尾 BREAK 红色上衣 BREAK 蓝色裙子",
"alwayson_scripts": {
"Regional Prompter": {
"args": [True,False,"Matrix","Vertical","Mask","Prompt","1,1,1","",False,False,False,"Attention",False,"0","0","0",""]
}}
请参考下表了解args
中的每个设置。No.对应顺序。当类型为文本时,请用""
括起来。模式3-6忽略不对应于模式3中选择的模式的子模式。对于17.中的遮罩,请指定图像数据的地址。可以使用绝对路径或相对于web-ui根目录的相对路径。请使用遮罩项中指定的颜色创建遮罩。
No. | 设置 | 选项 | 类型 | 默认值 |
---|---|---|---|---|
1 | 激活 | True, False | Bool | False |
2 | 调试 | True, False | Bool | False |
3 | 模式 | Matrix, Mask, Prompt | Text | Matrix |
4 | 模式 (Matrix) | Horizontal, Vertical, Colums, Rows | Text | Columns |
5 | 模式 (Mask) | Mask | Text | Mask |
6 | 模式 (Prompt) | Prompt, Prompt-Ex | Text | Prompt |
7 | 比例 | Text | 1,1,1 | |
8 | Base比例 | Text | 0 | |
9 | 使用Base | True, False | Bool | False |
10 | 使用Common | True, False | Bool | False |
11 | 使用Neg-Common | True, False | Bool | False |
12 | 计算模式 | Attention, Latent | Text | Attention |
13 | 不改变AND | True, False | Bool | False |
14 | LoRA文本编码器 | Text | 0 | |
15 | LoRA U-Net | Text | 0 | |
16 | 阈值 | Text | 0 | |
17 | 遮罩 | Text | ||
18 | LoRA停止步骤 | Text | 0 | |
19 | LoRA高分辨率停止步骤 | Text | 0 | |
20 | 翻转 | True, False | Bool | False |
示例设置
Matrix
"prompt": "绿色头发双马尾 BREAK 红色上衣 BREAK 蓝色裙子",
"alwayson_scripts": {
"Regional Prompter": {
"args": [True,False,"Matrix","Vertical","Mask","Prompt","1,1,1","",False,False,False,"Attention",False,"0","0","0",""]
}}
结果
遮罩
"prompt": "杰作,最佳品质8k照片,BREAK (红色:1.2) 森林 BREAK 黄色椅子 BREAK 蓝色连衣裙女孩",
"alwayson_scripts": {
"Regional Prompter": {
"args": [True,False,"Mask","Vertical","Mask","Prompt","1,1,1","",False,True,False,"Attention",False,"0","0","0","mask.png"]
使用的遮罩
结果
提示词
"prompt": "杰作,最佳品质8k照片,BREAK 一个女孩头发衬衫裙子带包包 BREAK (红色:1.8) ,头发 BREAK (绿色:1.5),衬衫 BREAK,(蓝色:1.7), 裙子 BREAK (黄色:1.7), 包包",
"alwayson_scripts": {
"Regional Prompter": {
"args": [True,False,"Prompt","Vertical","Mask","Prompt-EX","1,1,1","",False,True,False,"Attention",False,"0","0","0.5,0.6,0.5",""]
}}
致谢
感谢furusu提出的Attention组合建议,感谢opparco提出的Latent组合建议,以及感谢Symbiomatrix帮助创建2D生成代码。
更新
- 新功能,"2D-Region"
- 新增"Latent"生成方法。生成速度较慢,但可以在一定程度上分离LoRA。
- 支持超过75个标记
- 可以设置通用提示词
- 在PNG信息中保存设置参数