Stable 选择Diffusion Regional Prompter 操作图像构图的软件

2023-11-19


在这里,我们首先通过一个简单的例子,逐步学习如何应用分区提示词技术。然后,学习如何结合 ControlNet 更好地使用分区域提示词。



Regional Prompter 插件的远程仓库存储地址如下: https://github.com/hako-mikan/sd-webui-regional-prompter 。


安装插件有两种方式:


  1. 根据 AUTOMATIC1111 WebUI。方法如下:
  • 1)运行 Stable Diffusion WebUI。
  • 2)转至拓展(Extension)标签页。
  • 3)点击可用(Available)标签页。
  • 4)点击载入自(Load from:)按键。
  • 5)寻找软件 “Regional Prompter“。
  • 6)点击安装(Install)。
  • 7)重启 WebUI。
  1. 用 Git 手动组装cmd。方法如下:
  • 1)关闭 Stable Diffusion WebUI。
  • 2)打开cmd终端,转移到 AUTOMATIC1111 安装目录的 extensions 子目录下。
  • 3)操作命令:git clone https://github.com/hako-mikan/sd-webui-regional-prompter 。
  • 4)重启 Stable Diffusion WebUI。


安装成功后,出现在文生图片和图片的标签页上 Regional Prompter 下拉列表,可以在不同的区域设置提示词。



下面我们通过一个简单的例子来解释 Regional Prompter 使用插件。为了测试效果,我们先用一个特别简单的提示词来尝试。


假设我们想形成一张包含一个男人和一个女人的照片。一个男人和一个女人可以用下面的提示词和反向提示词得到:


正向提示词:a man and a woman
反向提示词:disfigured, ugly


例如:



看上去还不错。但是如果要更具体的点该怎么办呢?比如想形成一个黑发男人和一个金发女孩,很自然,我们会这样写提示:


a man with black hair, a woman with blonde hair


生成图可能如下:






Stable Diffusion 有时候会搞混属。有时我们会被描述,但更多的时候,Stable Diffusion 会搞混哪种头发颜色应该和谁结合。有时我们会被描述,但更多的时候,Stable Diffusion 会搞混哪种头发颜色应该和谁结合。如果你想进一步了解特定衣服的颜色,那就更难了。


这到底是怎么回事?为什么这么简单的事情,Stable Diffusion 你做不到吗?这是因为 self-attention 系统错误地将头发的颜色与人物联系起来。


这个问题有一个解决办法:黑发男人的提示词只特定在图像左边,金发女孩的提示词特定在图像右边。



要使用 Regional Prompter,按以下步骤操作:


  1. 文生图(txt2)img) 展开标签页 Regional Prompter
  1. 选定 Active 激活分区提示器。



  1. 对于这些例子,大多数设置都是默认的。例如:
  • Divide mode: Horizontal
  • Generation mode: Attention
  • Divide Ratio: 1, 1
  1. 点击 visualize and make template,您可以看到以下具体的区域图,并标记两个区域:左边是区域 右边是区域 一、两个区域的依据 1:1 平均比例分割。



  1. 附上提示词:


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% 合理。


请注意,这不是 100% 合理。根据我的经验,只有 75% 成功概率。但还是比完全看运气好很多。


你可能已经注意到两个提示词都有自己共同的部分:


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 这是一张有两种人的照片:一个男人,一个女人。我们应该告诉我们 Stable Diffusion 这是一张有两种人的照片:一个男人,一个女人。这就是为什么必须一起提示“a man and a woman" 的原因。


    自然,这个例子只能玩。而真实场景中生图的提示词一般都很长。在长提示词下解决公共提示词,方法比较方便:

选定
Use common prompt

.



现在可以在提示词的开头加上公共提示词(a man and a woman):





a man and a woman

BREAK
a man with black hair

BREAK

a woman with blonde hair


我们上面有三个提示:(1)公共提示;(2) 地区 0 提示词;(3)区域 1 的提示词。可以导入每个区域的公共提示开始。可以导入每个区域的公共提示开始。


事实上,公共提示词只是一种语法糖:相当于初始提示词的内容。

应用 Regional Prompter 秘诀是准确定义区域。在这一节中,我可以表达如何设置它

切分比(divide ratio)
,以我们想要的方式划分图像。如何正确指定区域可能无法理解或难以记住,因此可以单击

Visualize and make template(可视化并生成模板)

生成区域图。


在一维区划中,区域可以水平或垂直划分。

如果要水平划分区域,那就是

divide mode(区划方式)
中挑选

horizontal(水准)

。每个区域都用逗号分割的数据来描述。数字意义区域的大小。


切分比例:


1,1



1,1,1



1,2,1




垂直划分方法相似,但垂直划分区域。以下是一些切分比的例子:


1,1



1,1,1



1,2,1




在一张图片中,可以同时垂直划分和能力划分。这时候挑选

horizontal divide model
    。这时候挑选
  • horizontal divide model
  • 。规则是:
    行用分号(;)切分。

每一行都是用逗号分隔的一系列数据,比如 1,1,1。

每行中第一个数字意义行的高度,以及未来数字意义区域的宽度。


下面我们来看几个例子。

1,1,1; 1,1,1

这就定义了两行,每排的高度都是 1。这两行都有两个宽度相同的区域 (1,1)。一共有 4 个区域。



  • 1,1,1; 2,1,1
    定义了二行。
    第一行的高度是 1。第二行的高度是 2。

每行有两个宽度相同的区域 (1,1)。

一共有 4 个区域。



最后,让我们来看看一个更复杂的例子。了解了这个例子,就明白了区域规划的全部内容!

  • 1,1,1,1; 2,1,2
    定义了 2 行。
    第一行的高度是 1。第二行的高度是 2。
    第一行有 3 一个区域,总宽全是 1 (1,1,1)。

第二行有 2 总宽分别为个区域 1 和 2 (1,2)。

一共有 5 个区域。




假设大家都在尝试真实的图片。我想出了下面的提示。

模型:Lyriel v1.5

提示词:

a witch, highly detailed face, half body, studio lighting, dramatic lighting, highly detailed clothing, looking at you, mysterious, dramatic lighting, (full moon:1.3), (beautiful fire magic: 1.2)

反向提示:

underage, immature, disfigured, deformed

然后生成以下图片:





这些照片很好,但月亮和火的部分还没有被操纵。在得到想要的东西之前,我们只能不断地点击形成按钮。在得到我们想要的东西之前,我们只能不断地点击形成按钮。此刻 Regional Prompter 派上用场。

  • 我们可以使用以下设置:
    Divide mode: Horizontal

Use common prompt: Yes

Divide ratio: 1,1,1;2,1,1





提示词:



a witch, highly detailed face, half body, studio lighting, dramatic lighting, highly detailed clothing, looking at you, mysterious, dramatic lighting

BREAK
(full moon:1.3)

BREAK

BREAK

BREAK

(beautiful fire magic: 1.2)

这样写一个可以控制物体的部分,把月亮放在地区 0(左上方),火放到地区 3(右下角)。如图所示。如图所示。






接下来,我们把月亮放在右上角(地区) 1)将火放在左下角(区域) 2)。



a witch, highly detailed face, half body, studio lighting, dramatic lighting, highly detailed clothing, looking at you, mysterious, dramatic lighting

BREAK
BREAK

(full moon:1.3)

BREAK

(beautiful fire magic: 1.2)

BREAK

然后你可以看到月亮出现在右上角,火出现在左下角,如图所示。





同样,我们应该知道,区域提示并不总是100%合理。





同样,我们应该知道,区域提示并不总是100%合理。因此,最好一次形成更多的图片。



不同区域的提示器可以指定每个区域的提示词,但它不能控制整个图像构图。但是,有一个工具可以做到这一点。这个工具就是 ControlNet。


让我们来看看两个例子。搭配使用这两个例子 Regional Prompter 和 ControlNet,在没有他们的情况下,我们只能实现梦想的控制水平。


假设我们想形成一张图,图中是一个巫师在小地窖里研究一本旧秘书。另外,我还想让巫师旁边有一只狼,地上放一些骷髅。


这里有很多元素需要照顾。假如用常规文生图,就会看到各种构图。



作为无头绪的人 Stable Diffusion 客户,我输入了以下提示,祈祷一切顺利:


a mysterious wizard , highly detailed face, highly detailed clothing, cinematic, dark, horror, worn stone wall, ancient symbol, old mystical torn scroll, wolf, many skulls

反向提示:

underage, immature, disfigured, deformed

模型: Lyriel v1.5



这些图片挺好的,感谢我的提示词方法。


但这并不完全是我想要的。


但这并不完全是我想要的。也许我不明白她在研究秘药书店。让我们重新安排提示:

a mysterious wizard
studying old mystical torn scroll

, highly detailed face, highly detailed clothing, cinematic, dark, horror, worn stone wall, ancient symbol, wolf, many skulls




现在,形成的图片更接近于我脑海中的想法。但我还没有办法操纵巫师的姿势及其放大到多近。但我还没有办法操纵巫师的姿势及其放大到多近。


很自然,下一步就是应用。 ControlNet 操纵姿态。在这里,我假设大家都好了。 ControlNet 并且知道怎么玩软件。

我可以参考这张压箱底的图片。



第 1 步.

将参考图像上传到图像画板,也可以直接拖动参考图像。



第 2 步.

选定
    开启(Enable)
  • 第 3 步
  • . 选择预处理器下拉列表
openpose


第 4 步
. 选择模型下拉列表

control_opepose


或者使用以下流程浏览获取姿势:


选定 Allow Preview

.


模型下拉列表旁边会出现一个看起来像爆炸的新标志。点击标志浏览姿势。




按住形成按钮,开始使用 ControlNet 形成图像。以下是形成的几张图片:



现在,我向前迈进了一步,修复了巫师的姿势。如今巫师一直坐着,可以展示他的全身。


但是,特定区域的提示词仍然缺乏机制。大家都知道我要说什么。是的,加上分区域提示词!


如今,选定

Active

Stable 选择Diffusion Regional Prompter 操作图像构图的软件
复选框,激话 Regional Prompter 软件。

采用
水平划分方法(Horizontal Divide mode)


选定

应用公共提示词(Use common prompt)


我们必须把图分成两部分 4 个区域。

切分比(Divide Ratio)

为:

  • 1,1,1.5; 1,1,1.5
  • 这 4 一个区域如下图所示:


希望有以下几点:




全图: 一个巫师



地区 0: 含有古代符号的石墙

地区 1: 巫师在读一本秘药书

地区 2: 石墙旁有一只狼


地区 3: 一些颅骨


因此,提示词是:


a mysterious wizard , highly detailed face, highly detailed clothing, cinematic, dark, horrorBREAK

worn stone wall, (ancient symbols :1.3)

BREAK
old mystical (torn scroll :1.2)

BREAK

worn stone wall, (wolf:1.5)BREAK

(many skulls:1.5), blurry



请注意,我在这里增加了一些关键词的权重。否则,这个东西可能不会出现。否则,这个东西可能不会出现。

现在,己经可以完全控制狼、颅骨和神秘符号的位置。请参见下图。






假设我们想形成一些照片,照片中是一位棕色头发、黄色衬衫和蓝色连衣裙的女士(a woman with brown hair, yellow blouse and blue dress

)。这听起来很容易,但是如果你以前用过形成类似的东西,你会发现很难。


让我们来看看一些使用以下提示词的例子:


full body photo of young woman, natural brown hair, yellow blouse, blue dress

, busy street, rim lighting, studio lighting, looking at the camera, dslr, ultra quality, sharp focus, tack sharp, dof, film grain, Fujifilm XT3, crystal clear, 8K UHD, highly detailed glossy eyes, high detailed skin, skin pores


disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w


模型: Realistic Vision v2







大家会发现 Stable Diffusion 即兴发挥!颜色混合在一起...


我们会看到,通知 Stable Diffusion 哪种颜色应该放在哪里绝不容易。提示词 token 的 self-attention 效果不好。


也许颜色偶尔会适当分配,但我宁愿借此机会得到一个好的构图...




可以使用色调分布 Regional Prompter 解决。在下面,我们将图像垂直分为垂直图像 3 个部分。



Divide Mode: Veritical

Divide ratio: 1, 1, 1.5



Use common prompt: Yes

提示词:

full body photo of young woman, busy street, rim lighting, studio lighting, looking at the camera, dslr, ultra quality, sharp focus, tack sharp, dof, film grain, Fujifilm XT3, crystal clear, 8K UHD, highly detailed glossy eyes, high detailed skin, skin pores

BREAK
natural brown hair

BREAK

(yellow blouse: 1.3)BREAK

(blue dress: 1.3)


反向提示词和前面一样:


disfigured, ugly, bad, immature, cartoon, anime, 3d, painting, b&w






很好!Regional Prompter 是解决色调分配问题的有效解决方案。Regional Prompter 是解决色调分配问题的有效解决方案。


用 ControlNet Pose 能够获得更多的控制权。



现在我们很幸运 Stable Diffusion 手中。Regional Prompter 让我们在图像的不同部分得到提示词。让我们考虑做一些新的事情!建立以前不可能的视觉效果!


下面的例子是将自然场景的图片水平分为四个部分,并将不同的气候分配给每个部分。





Divide mode: Horizontal



Divide ratio: 1,1,1,1


Use common prompt: Yes



Model: Lyriel v1.5



提示词:


a beautiful wild park, path to freedom, courage and love, national geographic photo of the year

BREAK

spring, trees, birds, green grasses, (sunny, wild flowers:1.2), god ray, clear sky
BREAK

cloudy, dry

BREAKthunderstorm, rain

BREAK

winter, heavy snow, barren trees

反向提示:


BREAK
    snow
  • BREAK
  • BREAK
BREAK
    BREAK
我相信它比我更有创造力。要流动你的思维,逐步实验!要流动你的思维,逐步实验!

如果你看不到任何东西,增加关键词的权重。得到一张不完美的照片是很正常的。用部分重绘(inpainting)到处修理。与许多其他软件不同,Regional Prompter 共享设置在文生图片和照片之间。所以,如果你不想把它拿走 Regional Prompter 对于部分重绘,请尽快取消选择 Active。这个插件的功能比我在这里说的要多。请参见 该插件的 GitHub 页面 了解更多信息。之前有个 Latent Couple 软件可以做类似的事情。Regional Prompter 正在更新,并且有一些额外的效果。你可以试试 Attention 和 Latent 看看哪种形成方式对你最有用(对我来说,Attention 方法效果很好)。
标签: 构图   提示