sd-webui-regional-prompter

sd-webui-regional-prompter

优化图像生成的区域提示词控制扩展

sd-webui-regional-prompter是Stable Diffusion WebUI的一个扩展,可为图像不同区域指定独立提示词。支持多种区域划分方式,包括垂直、水平、2D以及基于蒙版和提示词的指定。此外还具备LoRA应用控制、区域可视化和API功能,提高了AI图像生成的精确度和灵活性。

Regional Prompterstable-diffusion-webuiAI绘图图像生成提示词Github开源项目

区域提示器

顶部

<img src="https://yellow-cdn.veclightyear.com/835a84d5/3fb463db-6f4e-4206-97d7-6d0134660832.svg?style=plastic" height="25" /> <img src="https://yellow-cdn.veclightyear.com/835a84d5/c119731c-c670-4412-bdd2-e06a654cf854.svg?logo=github&style=plastic" height="25" />

对于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,所有区域将设置相同的负面提示词。

在提示词中的任何位置使用ADDROWADDCOL将自动激活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 单张图片的生成时间。参见已知问题

潜在模式示例,将 nendooridfigma LoRA 分离到左右两侧创建。 <img src="https://yellow-cdn.veclightyear.com/835a84d5/c20589fa-186a-48d7-ab51-ebb0e6f8edcb.jpg" width="400">

使用公共提示词

如果启用此选项,提示词的第一部分将添加到所有区域部分。

当输入 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、...

<a id="2D">2D 区域分配</a>

您可以在两个维度上指定区域。使用特殊分隔符(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
基础比例:

2d

<a id="visualize">可视化和创建模板</a>

可以可视化区域并创建提示词模板。

tutorial

输入区域比例并按下按钮以显示区域。然后,将提示词模板复制并粘贴到提示词输入字段中。

fantasy ADDCOMM
sky ADDROW
castle ADDROW
street stalls ADDCOL
2girls eating and walking on street ADDCOL
street stalls

结果如下, tutorial

这是使用 1,1;2,3,2;3,2,3 的区域示例。在列模式下,它看起来像这样: flip 在行模式下,它将如下所示: flip 在行模式下启用翻转选项时,它将如下所示: flip

<a id="inpaint">遮罩区域即修复+(实验功能)</a>

现在可以使用多个手绘遮罩或上传包含这些遮罩的图像来指定区域(稍后会详细介绍)。

  • 首先,确保切换到遮罩分割模式(位于列数/行数旁边)。否则,遮罩将被忽略,区域将像往常一样按比例分割。
  • 根据所需图像设置画布宽度和高度,然后按创建遮罩区域。如果指定了不同的比例或大小,遮罩可能会不准确地应用(类似于"仅调整大小"的修复)。
  • 在画布上绘制所需区域的轮廓/区域,然后按绘制区域。这将填充该区域,并根据您选择的区域编号为其着色。**注意,绘图仅使用黑色,填充和着色是自动完成的。**区域遮罩将显示在下方右侧。
  • 绘制区域将自动进入下一个区域。它还会保留用于稍后构建遮罩的区域列表。目前最多可以使用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 / 深度图 / 任何其他图像,然后相应地描绘区域。遮罩将忽略不属于预期颜色标准的颜色。

RegionalMaskGuide2 RegionalMaskGuide2B

这里是使用遮罩和提示词landscape BREAK moon BREAK girl的示例和代码。 使用XYZ图提示词S/R,将moon BREAK girl更改为其他内容。 RegionalMaskSample

<a id="divprompt">通过提示词指定区域(实验性功能)</a>

区域由提示词指定。下图是使用以下提示词创建的,但提示词apple printed应该只影响衬衫,实际上却显示了苹果等。

lady smiling and sitting, twintails green hair, white skirt, apple printed shirt

prompt 如果将apple printed的效果增强到:1.4,你会得到,

prompt 提示词区域指定允许你计算"衬衫"的区域并调整"印花苹果"。

prompt

lady smiling and sitting, twintails green hair, white skirt, shirt BREAK
(apple printed:1.4),shirt

prompt

如何使用

语法

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 Prompt-EX/Latent prompt

遮罩

生成图像时,会显示生成的遮罩。它的大小与图像相同,但实际使用时尺寸要小得多。

base和common的区别

一个女孩 ADDCOMM (或 ADDBASE)
红发 BREAK
绿色裙子

如果common子句中有"一个女孩"的提示词,区域1会使用"一个女孩,红发"的提示词生成。在base子句中,如果base比率为0.2,则会使用"一个女孩"*0.2 + "红发"*0.8的提示词生成。基本上,common子句组合提示词,而base子句组合权重(类似img2img的去噪强度)。如果common提示词过强,可以尝试使用base,或微调(强调)。 对应目标的即时强度应该比正常情况更强。即使是1.6也不会出问题。

<a id="knownissues">已知问题</a>

  • 由于gradio的一个问题,连续两次以上上传遮罩或加载遮罩预设会失败。有两种解决方法:
  1. 每次上传/加载前,点击"创建遮罩区域"。
  2. 修改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目前不支持自定义组件。尝试在扩展中覆盖组件/方法会导致应用完全无法加载。

  1. 等待修复发布。
  • Latent模式下LoRA损坏。已尝试改进输出,但目前尚无解决方案。以下是一些建议:
  1. 降低cfg,减小LoRA权重,增加采样步数。
  2. 使用"negative textencoder"+"negative U-net"参数:这些是0到1之间的权重,用逗号分隔,类似base。按提示词中LoRA出现的顺序应用于每个LoRA。值为0(默认)会抵消LoRA对其他区域的影响,但可能导致其损坏。值为1应更接近自然效果,但可能会破坏其他区域(绿屏、黑屏、SBAHJ化等),即使它们不包含任何LoRA。在这两种情况下,更高的LoRA权重会放大效果。效果似乎因LoRA而异,可能因组合而异。
  3. 有人建议LoRA block weight可能有帮助。
  4. 如果以上方法都不奏效,可以尝试修复绘制。

以下是一个简单提示词的示例,两个LoRA的negative te/unet值分别为:(0,0)默认,(1,0),(0,1),(1,1)。 MeguminMigurdiaCmp

如果你发现任何有用的见解,请分享。

如何通过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, FalseBoolFalse
2调试True, FalseBoolFalse
3模式Matrix, Mask, PromptTextMatrix
4模式 (Matrix)Horizontal, Vertical, Colums, RowsTextColumns
5模式 (Mask)MaskTextMask
6模式 (Prompt)Prompt, Prompt-ExTextPrompt
7比例Text1,1,1
8Base比例Text0
9使用BaseTrue, FalseBoolFalse
10使用CommonTrue, FalseBoolFalse
11使用Neg-CommonTrue, FalseBoolFalse
12计算模式Attention, LatentTextAttention
13不改变ANDTrue, FalseBoolFalse
14LoRA文本编码器Text0
15LoRA U-NetText0
16阈值Text0
17遮罩Text
18LoRA停止步骤Text0
19LoRA高分辨率停止步骤Text0
20翻转True, FalseBoolFalse

示例设置

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",""]
}}

结果 sample

遮罩

   "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信息中保存设置参数

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多