你是否遇到过想在一张图片的左上角绘制一个太阳,右上角绘制一些云朵,在下方在绘制其他的…,常规方式通过提示词,我们会发现图像大多情况不受我们控制,不会一定按我们的方式去绘制成功。
今天给大家介绍一个插件,可通过设置提示词就能精准实现按区域绘图,就可以实现上面说的按我们自己的方式精准控制去绘图。
Regional Prompter
插件:Regional Prompter
地址:https://github.com/hako-mikan/sd-webui-regional-prompter
注意:该插件是针对Stable Diffusion Web UI的。
插件的安装这里就不过多介绍了,可以参考之前的文章————Stable Diffusion Web UI基础插件推荐。
下面我们通过一个简单的例子来说明 Regional Prompter 插件的用法。为演示效果,我们先用非常简单的提示词试试。
假设你想在同一张图片中生成一个男人和一个女人。我们使用简单的提示:
a man and a woman
负提示词如下:
disfigured, ugly
其他我们都使用默认参数。
然后我们获得如下图片:
看起来都没啥问题。但是如果你想更具体一点呢?比如生成一个黑头发的男人和一个金发女人?当然,我们可以在提示中写出来。
a man with black hair, a woman with blonde hair
你有时会得到你所描述的,但也有时候,Stable Diffusion 会混淆哪种头发颜色应该与谁搭配。如果你想进一步指定衣服的颜色等,情况将更加困难。
那么,这到底是咋回事呢?为什么这么简单的事情,Stable Diffusion 都做不到呢?这是因为 self-attention 机制将头发颜色和人物错误关联了。
此问题有一个解决方案:将黑发男子的提示词仅指定到图像左侧,而金发女郎的提示词则指定到图像右侧。
这个时候我们就可以使用Regional Prompter
插件了。
1、在文生图(txt2img) 标签页中展开 Regional Prompter。
2、选中 Active 来激活分区域的提示器。
3、其他的保持默认设置,基本当前的示例足够了。在检查下面的设置:
- Main Splitting: Columns(按列分割)
- Divide Ratio: 1, 1
- Width and Height: 这个必须和文生图(txt2img)匹配
4、点击visualize and make template
按钮,我们能看到图片被分为两个区域:区域0在左侧,区域1在右侧。同时它们按1比1比例平均分割。
5、更新为如下提示词
a man and a woman, a man with black hair
BREAK
a man and a woman, a woman with blonde hair
BREAK
关键字分隔了提示词。上面我们有两个提示。第一个提示将应用于区域0。第二个提示将应用于区域1。
负提示词:
disfigured, deformed, ugly
在负提示词中没有BREAK
,所以这个提示词将作用到所有区域(即上面的两个区域都会生效)。
点击生成,我们得到如下效果图:
Stable Diffusion 会在区域 0 (左侧)生成一名黑发男子,在区域 1(右侧)生成一名金发女子。
请注意,这并非 100% 有效。根据我的经验,只有 75% 的成功率。但依然比完全靠运气要好得多。
通用提示词(Common prompt)
你可能已经注意到这两个提示有一个共同的部分“一个男人和一个女人”。
a man and a woman, a man with black hair
BREAK
a man and a woman, a woman with blonde hair
为什么需要通用提示?如果没有通用提示,Stable Diffusion只会生成一个人:
a man with black hair
BREAK
a woman with blonde hair
为什么?左右区域的提示都描述了一个人。所以你得到…一个人!你需要告诉 Stable Diffusion 这是一张两