你「Stable diffusion
WebUI 」进行AI绘画时,是不是发现SD对多人画面的识别总是天马行空,没有按照你的提示词进行绘图?今天作者将分享如何通过提示词提高多人图的抽卡率。让SD绘制多人画面不再靠抽卡。
在上一篇分享《Stable
Diffusion 提示词高阶用法(一)》中,作者已经介绍了在Stable-diffusion中,不使用任何插件或模型,仅通过提示词(Prompt)的某些高阶写法进行单角色的画面控制技巧。在本次分享中,作者将承接上一篇的内容,介绍通过提示词的高阶用法、以及通过“区域提示词(Regional Prompter)”的使用达到双人图或者某些特定场景的SD绘制图片的90%出图率的方式。
A4000显卡,SDWebUI原创生成
仅用提示词 - 绘制多人图
与上一篇分享一样,作者依旧将通过一个案例进行双人图撰写的说明,在这个案例中,作者将使用统一的SD参数配置,随机数种子,模型选择以及硬件环境,仅改变“提示词”的部分。
场景案例:张晓晓和王宇下班后走在街上。
因为模型是无法识别“张晓晓”和“王宇”是什么,所以作者对“林雨萌”“王宇”进行了角色定义。
·
张晓晓:女孩,红色眼镜,棕色长发,口红,红色衬衣,
·
王宇:男孩,黄色眼睛,黄色短发,黄色职业装,单手插兜,
·
场景:街边,看着镜头,
得到的画面描述:
1girl, long brown hair, lipstick,
red eyes, red shirt, lipstick,1boy, short yellow hair, yellow eyes, yellow
suit, hands in pocket,street_background, looking at viewer,
作者的画质描述词:
dynamic pose, dynamic
angle,(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra detailed,
beautiful and aesthetic, perfect lighting,detailed background, realistic,
先看看常规组合是一个什么效果(作者的批次数设为9,即一键生成9张图)。正面提示词:
1girl, brown long hair, lipstick,
red eyes, red shirt, lipstick,1boy, yellow short hair, yellow eyes, yellow
suit, hands in pocket, street_background,looking at viewer, dynamic pose,
dynamic angle,(masterpiece:1. 4, best quality), unity 8k wallpaper, ultra
detailed, beautiful and aesthetic, perfect lighting,detailed background,
realistic,
得到的画面:
A4000显卡,SDWebUI原创生成
可以发现:
·
9张图中,没有1张是双人图,都是单人图。这是为什么呢?
因为提示词中,并没有对画面的人数进行要求,模型在读取这段提示词中,无法判断出这个画面中需要的是1个人,还是2个人。基于这个原因。
请记住:在生成多角色图片时,切记要设置“角色数量”。如:
2个女孩:2girls
一对男女:2people\(1girl and 1boy\),
一只狗和一个女孩:2characters\(1girl and 1dog\),
注:角色设置中的“注释”用法介绍请看:提示词高阶用法:注释
作者增加了一个提示词“角色人数”后,正面提示词:
2people\(1girl and 1boy\), 1girl,
brown long hair, lipstick, red eyes, red shirt, lipstick,1boy, yellow short
hair, yellow eyes, yellow suit, hands in pocket, street_background, looking at
viewer, dynamic pose, dynamic angle,(masterpiece:1. 4, best quality), unity 8k
wallpaper, ultra detailed, beautiful and aesthetic, perfect lighting, detailed
background, realistic,
得到的画面:
A4000显卡,SDWebUI原创生成
可以发现:
·
9张图中,只有2张图出现了双人。抽卡概率不到20%。
·
出现的2张双人图,仅保证了性别是男和女,其他的特征描述都相互污染了。
SD给出这样的结果,原因是虽然提示词中写明了“2个人”,但是并未分别对两个人物进行各自特定的描述(虽然提示词中我们通过先后顺序区分了女孩和男孩的描述,但SD不是这样理解的)。这里作者使用在第一篇内容中的介绍的"提示词加权"和"and"格式再对提示词进行一次优化后。
正面提示词:
2people, (1girl and brown long hair
and red eyes and lipstick and red shirt), slim body,(1boy and yellow short hair
and yellow eyes and hands in pocket and yellow
business_suit),street_background, looking at viewer, dynamic pose, dynamic
angle,(masterpiece:1.4, best quality), unity 8k wallpaper, ultra detailed,
beautiful and aesthetic, perfect lighting, detailed background, realistic,
得到的画面:
A4000显卡,SDWebUI原创生成
可以发现:
·
9张图中,已经有6张图出现了双人。抽卡概率接近60%
·
出现的6张图,仅保证了男和女,其他的特征描述依旧是相互污染了。
如果单用提示词,不用其他任何辅助手段,目前作者在大量实践后,60%~65%的概率是可以得到多人图,但如果对颜色、动作、服饰、背景道具等特征有指定要求时,抽卡率会大幅度降低。那怎么办呢?
这里作者推荐使用区域提示词(Regional Prompter)的方式来进一步提高抽卡概率。
市面上也有其他解决方案,比如最为大家熟悉的“ControlNet+Openpose”的方式,以及“Multidiffusion”,“ Latent Couple”等插件方式。“ControlNet+Openpose”方式虽然学习成本低,但使用成本较高,需要一些参考图。后两种虽然使用成本不高,但学习成本高,上手难。
而今天作者介绍的区域提示词的方式,学习成本低,且使用成本也不高。
区域提示词 - 绘制多人图
先让我们看一下上述提示词在使用区域提示词(Regional Prompter)的方式后的生成效果和抽卡概率。
为了保证真实性,作者直接展现了SDWebUI的全屏截图
可以发现:
·
连续生成的9张图中,全部出现了双人。双人图抽卡概率100%
·
每张图都保证左右的男女位置恒定,且对服装款式,发型等明显特征都被固定了。
·
图1和图6完全按照提示词要求进行图片生成。
使用区域提示词(Regional Prompter)来进行SD的AI绘画是不是很nice?下面作者将介绍这个插件的使用方式和如何利用这个插件进行上述案例的提示词书写。
1.安装方式
Regional Prompter 插件的下载地址:
https://github.com/hako-mikan/sd-webui-regional-promptergithub.com/hako-mikan/sd-webui-regional-promptergithub.com/hako-mikan/sd-webui-regional-prompter
你可以将这个插件下载后,放在Stable-Diffusion-WebUI的本地存储的插件文件夹中。重启SDWebUI后,就可以在插件模块中看到这个插件了。
2.参数简介
在文生图页面的插件区域中,首先单击打开“Regional Prompter”这个插件。我们可以看到上图这样的一个参数配置模块。作者将简单介绍一下这里的参数作用。
生成模式:Generation modeAttention 模式 和 Latent 是两种不同的生成模式,作者并不是深度学习的从业者,对底层原理并不是很了解。就不在这班门弄斧了。作者只能通过实践总结一下这两个模式的区别。
·
Attention 模式:生成的图像画面具有更好的一致性,生成的速度也更快。耗时大概是Latent 模式的三分之一。
·
Latent 模式:生成的图像画面,分区更为明显。如果你想在分区使用LoRA时,建议选择这个模式。如果你想生成一些具有冲击感的画面时,Latent更加合适。
区域提示词:Region Prompt,各个区域对应子提示词。
公共提示词:Common Prompt,各个区域中重复的提示词,即代表公共提示词。公共提示词常用于描述画质画风。
基础提示词:Base Prompt,基础提示词是根据基础比率,插入到各个区域提示词中。基础提示词常用于描述背景和场景。使用基础提示词需要用到基础比率(base Ratio)。基础比率默认是 0.2,代表生成的图像将包含 20%*BASE PROMPT + 80%*REGION PROMPT。基础比率可以指定每个区域的基础提示词的权重。
分割模式:Divide mode,分割方式分为“水平分割(horizontal)”和“垂直分割(Vertical)”;分割维度分为“一维分割”和“二维分割”。分割方法是通过分割比率(Divide Ratio)进行的。
比如你在分割比率中输入1,1,1,图像将被分为三个相等的区域(33,3%, 33,3%, 33,3%);如果输入3,1,1,图像将被分为60%、20%和20%。为了获得最大的精度,你可以输入与高度/宽度(分别为垂直/水平模式)相对应的像素值。
如果你要启用二维分割,你可以使用;分隔符来自动激活 2D 区域模式。例如:
你选中水平分割(horizontal);并在分割比率(Divide Ratio)输入:1,1,1,1;2,1,2
代表:
你将画面分为两行,两行的高度比为“1:2”;
第一行分为三列,三列的宽度比为“1:1:1”;
第二行分为两列,两列的宽度比为“1:2”。
本篇因为不使用蒙版模式和提示词模式,因此将不会进一步介绍。有兴趣的朋友,可以留言给作者,看情况是否要单独开一篇分享一些使用技巧和经验。
3.操作方法
·
第一步:启动“Regional Prompter”插件服务。即勾选“Active”;
·
第二步:选择生成模式,因为作者要生成的图片的背景是需要有连贯性的,所以在“Generation mode”选择“Attention”;
·
第三步:选择使用公共提示词,勾选“Use common
prompt”,其他不用勾选;
·
第四步:因为作者的双人场景是左右布局的,所以在split
mode 选中“Horizontal”;
·
第五步:基于作者的意愿将画布分为左右两个等宽的区域,将“Divide
Ratio”设为“1,1”,
·
第六步:点击“visualize and make
template” ,如上图所示,生成一个水平分成两个相等区域的画布。并标记子区域的编号。
可以看到画布被分为蓝红两个区域,红色区域标记为0,蓝色区域标记为1,并且在左侧的模板展示区域(template)中显示:“ADDCOMM”和“ADDCOL”。那提示词应该怎么写呢?书写格式:
公共提示词部分,ADDCOMM
蓝色区域提示词部分,ADDCOL
红色区域提示词部分,
基于上文的案例,作者在正面提示词中输入下面的内容:
2people\(1boy and
1girl\),walking,(street_background:1.3),(looking at viewer), dynamic pose,
dynamic angle,(masterpiece:1.4, best quality), unity 8k wallpaper, ultra
detailed, beautiful and aesthetic, perfect lighting,detailed background,
realistic,
BREAK
1girl, red long hair and red eyes and (red shirt:1.3),
BREAK
1boy, yellow short hair and yellow eyes and (yellow suit:1.3) and hands in
pocket,
得到画面:
A4000显卡,SDWebUI原创生成
可以看到区域提示词的强大之处了吧。
在作者又给男女角色添加了对应LoRA模型后,最终得到了下面这样的效果。
A4000显卡,SDWebUI原创生成
区域提示词不光在双人场景图中效果显著,在某些特定需求的绘图场景中,依然非常靠谱,比如以下2张图都是使用区域提示词生成的。
御龙少年:Attention 模式&垂直分割
A4000显卡,SDWebUI原创生成
机甲少女:Latent 模式&水平分割
A4000显卡,SDWebUI原创生成
少女与狗:Attention 模式&水平分割
A4000显卡,SDWebUI原创生成
下期预告
对于多人场景的Stable Diffusion 提示词就介绍到这,下一篇将会介绍Stable Diffusion 中另一个很多人都遇到的痛点问题「LoRA模型固定角色的话题」。你可能在使用LoRA模型时总会因为LoRA的特点影响到画面原本的沟通,导致你可能需要不停的找新的LoRA模型去实验。作者将会从另一个角度去介绍LoRA模型的使用“LoRA模型的区域调用”。
A4000显卡,SDWebUI原创生成
出自:https://zhuanlan.zhihu.com/p/648181443