这是一个有关从满是男孩子的矩阵中找出一位女装子的游戏试验。
这是一个有关AI绘图工具Stable Diffusion(AUTOMATIC1111版WebUI)的插件Latent Couple中,weights这一参数效果的测试。
Stable Diffusion以及Latent Couple是什么?
Stable Diffusion是个AI绘图的工具软件,AUTOMATIC1111开发并分享了一个基于网页端的运行方式,被称为Stable Diffusion WebUI。有许多开发者为该网页运行方式打造了各种功能的插件,而本文中主要分析的就是一款名为Latent Couple extension (two shot diffusion port)的插件,由opparco提供。
由于整个AI绘图工具的世界都正在发生着日新月异的变化,因此本文也只涵盖当下时间点(2023年3月下旬)的测试效果。
有关的Latent Couple一些参数
Latent Couple,从其标题中的括号来看,是双人合影插件。其实不仅限于此,其实这是一个用于分割画面、分区域指定AI绘图的插件。至少我第一天上手,就已经很容易地做出三人图绘,乃至人+人+物的分割区域绘图了。
目前,在Latent Couple模块界面上,共有如下几个数值区域:Divisions、Positions、Weights、end at this step。前两个应该是有关分割区域的比例,以及指定区域位置,这两个参数已经有一些人给出了研究成果,甚至还有人做了Latent Couple 助手这样方便好用的辅助分割工具。我这里就不加赘述了。Weights似乎是分区域的权重,而end at this step则从字面上看,应该是停止步骤的意思。
本文主要是以一个实际例子,来研究Weights中参数对画面的影响。
在Latent Couple插件安装后默认状态下,divisions=1:1,1:2,1:2 positions=0:0,0:0,0:1,也就是将画面氛围2个区域,左右均等。其实不仅是二等分,还可以分为更多区域。为了方便起见,本次就控制条件,以这种默认的二等分形式作为分区方式。
Latent Couple的各项参数,其中字符串都是以半角字符逗号「,」来分割的,第一项表示整体,其后依次表示各个分区。
因此根据我的理解和观察,在Weights中,假设weights=0.2,0.8,0.8,那么0.2就表示整体画面的表达权重,第一个半角字符逗号后的0.8表示第一个区域的表达权重,第二个半角字符逗号后的0.8表示第二个区域的表达权重。如果区域更多,则可以继续往后写。
经试验,这些数值可以是大于1的数字,乃至是负数。这里是指程序上允许填入这样的数字,但并不意味着AI生成的图片一定美观且合理。
本次就通过固定标签、负面标签、采样步数(Steps)等一系列变化量,观察在一个由Latent Couple插件进行一分为二等分的图片中,weights后的参数(3个数值)的变化对AI产生图片的影响。
绘图目标
本次设计了这样一个实例。
背景:教室
人物(左):女装子BOY
人物(右):普通,黑白T-shirt的BOY
(masterpiece), ((best quality)), detailed,2boy,classroom,front view, looking at viewer, standing,front view
AND 2boy,young man face,tom girl , crossdressing , feminine , feminine boy,otoko no ko , otokonoko,Japanese idol clothes,colorful clothes,colorful hair,long hair,((makeup)),seductive smile,
AND 2boy,short hair, black hair, white T-shirt, panic
大致解释:
(masterpiece), ((best quality)), detailed | 提高画质用 |
2boy | 2个男孩 |
classroom | 教室 |
front view | 前面图 |
looking at viewer | 看向看图者(屏幕前的你) |
standing | 站立 |
front view | 前面图(我发现自己写重复了……) |
AND | |
2boy | 2个男孩 |
young man face | 年轻男人的脸 |
tom girl , crossdressing , feminine , feminine boy,otoko no ko , otokonoko | 女装子、男の娘 |
Japanese idol clothes,colorful clothes | 日本偶像服装、彩色服装 |
colorful hair,long hair | 彩色的头发、长发 |
((makeup)) | 化妆 |
seductive smile | 魅惑的笑容 |
AND | |
2boy | 2个男孩 |
short hair, black hair | 短发,黑发 |
white T-shirt | 白色T恤 |
panic | 慌张 |
Negative prompt: (worst quality:1.6),(low quality:1.6), easynegative,extra limbs,((((nsfw)))),more than 2boy,more than 2 people
*备注:若要使Negative prompt中的easynegative一词生效,需安装easynegative插件。
Steps: 25,
Sampler: DPM++ SDE Karras,
CFG scale: 7,
Seed: 2367890522,
Size: 1024×768,
Model hash: 5c4787ce13,
Model: Elysium_Anime_V2,
Latent Couple: "divisions=1:1,1:2,1:2 positions=0:0,0:0,0:1 weights=?,?,? end at step=20"
Used embeddings: EasyNegative [119b]
以下,对weights的3个数值,分别取1、0.666、0.333、0,这4个阶段,以此递减,排列组合得64种可能性,整理在4张表格中。注:测试时略有失误,有时会将0.333写作0.3333、0.666写作0.6666。由于推测小数点后第4位对画面表达差异不大,因此就不重新生成图片了。
weights=1,?,?
*您可以横向滚动页面查看表格,或使用网页浏览器的「阅读器视图」来查看整张表格。
*表を表示するには、水平方向にスクロールするか、Webブラウザーの「Reader View」を使用して表全体を表示できます。
*You can scroll horizontally to view the table or use the "Reader View" of your web browser to see the entire table.
weights=1,1,1 |
weights=1,1,0.666 |
weights=1,1,0.333 |
weights=1,1,0 |
weights=1,0.6666,1 |
weights=1,0.6666,0.6666 |
weights=1,0.6666,0.3333 |
weights=1,0.6666,0 |
weights=1,0.3333,1 |
weights=1,0.3333,0.6666 |
weights=1,0.3333,0.3333 |
weights=1,0.3333,0 |
weights=1,0,1 |
weights=1,0,0.6666 |
weights=1,0,0.3333 |
weights=1,0,0 |
注:在创建图片时出现了一次输入错误(输入成了1,1,0666),因此00074-2367890522.png是出错后的图片,故该编号的文件名跳过。
分析:由于在整体的weights=1,因此有如下表现:(1)每一张图都有教室背景的充分表达;(2)每一张都是2boy,左侧区域的女装子要素被压抑住了。即使在weights=1,1,0时,还是基本上是2个男孩的构图。
此外,随着控制右侧区域表达的weights的第三个数字越来越小,可以发现在整体表格的右侧,右侧的普通男孩子的存在感逐渐变得稀薄,例如没有脸(weights=1,0.3333,0.3333),甚至到了最右下角(weights=1,0,0),整个人都消失了,画面表达完全被整体的教室场景所占据。
weights=0.6666,?,?
weights=0.6666,1,1 |
weights=0.6666,1,0.6666 |
weights=0.6666,1,0.3333 |
weights=0.6666,1,0 |
weights=0.6666,0.6666,1 |
weights=0.6666,0.6666,0.6666 |
weights=0.6666,0.6666,0.3333 |
weights=0.666,0.666,0 |
weights=0.6666,0.3333,1 |
weights=0.6666,0.3333,0.6666 |
weights=0.6666,0.3333,0.3333 |
weights=0.6666,0.3333,0 |
weights=0.6666,0,1 |
weights=0.6666,0,0.6666 |
weights=0.6666,0,0.3333 |
weights=0.6666,0,0 |
分析:随着整体画面表达权重开始从第一张表格的1,降低到0.6666,女装子的灵魂得到了解放左侧画面的表达式(女性形象)开始得到表达。但由于在整体、左侧和右侧的标签中,都写有2boy,而对于女装、色彩亮丽的服装等的表现只写在了左侧区域的标签中,因此在这张weights=0.6666,?,?的表格中,仅有整体和右侧的表达权重都降低到一定程度,左侧的表达权重才显露出那么一点点,这主要体现在本表格的右上方,也就是weights=0.6666,1,0.3333与weights=0.6666,1,0这两张。
此外,与第一张表格(weights=1)一样,本表(weights=0.6666)中,也体现出了越是到右下角,右侧普通男孩的表达越是稀薄这一趋势现象。
weights=0.3333,?,?
weights=0.3333,1,1 |
weights=0.3333,1,0.6666 |
weights=0.3333,1,0.3333 |
weights=0.3333,1,0 |
weights=0.3333,0.6666,1 |
weights=0.3333,0.6666,0.6666 |
weights=0.3333,0.6666,0.3333 |
weights=0.3333,0.6666,0 |
weights=0.3333,0.3333,1 |
weights=0.3333,0.3333,0.6666 |
weights=0.3333,0.3333,0.3333 |
weights=0.3333,0.3333,0 |
weights=0.3333,0,1 |
weights=0.3333,0,0.6666 |
weights=0.3333,0,0.3333 |
weights=0.3333,0,0 |
分析:在本表(weights=0.3333,?,?)中,首先观察整体背景的表达。可以看到,尽管背景表达的权重已经较低(0.3333)了,但依然会随着整体数值与左侧、右侧数值的比例关系,而呈现出不同表达。例如在表格的右下角(weights=0.3333,0,0)左侧与右侧的数值都为0,而此时画面整体呈现出颜色较为淡薄朦胧的教室场景;然而在表格的左上角(weights=0.3333,1,1),控制左侧区域与控制右侧区域的表达为1,相对于控制画面全体(0.3333)要高不少:尽管在左侧与右侧的指定标签中并没有写上有关背景的描述(比如white background或simple background),但背景依然呈现一片白色,没有教室被表达出来。
而至于为什么在表格的右下角(weights=0.3333,0,0)中,是左侧出现了1位男孩,而不是全都消失仅剩下教室,或是出现2位男孩,那就不清楚了。推测可能与该Seed生成的噪点图在左侧恰好有一团黑色吧。从下一张表格的(weights=0,0,0)中也可以看到,随机图像中,左侧确实比右侧要黑一些。
weights=0,?,?
weights=0,1,1 |
weights=0,1,0.6666 |
weights=0,1,0.3333 |
weights=0,1,0 |
weights=0,0.6666,1 |
weights=0,0.6666,0.6666 |
weights=0,0.6666,0.3333 |
weights=0,0.6666,0 |
weights=0,0.3333,1 |
weights=0,0.3333,0.6666 |
weights=0,0.3333,0.3333 |
weights=0,0.3333,0 |
weights=0,0,1 |
weights=0,0,0.6666 |
weights=0,0,0.3333 |
weights=0,0,0 |
分析:在weights=0的这张表格中,首先可以看到的是:背景(教室)完全没有表达出来。可以认为:写在标签中的第一个AND前的一段,也就是针对整体画面的指示完全没有得到表达。而同样的「无表达」现象,也出现在了左侧与右侧图像上,在最极端的情况(weights=0,0,0)时,即画面右下角,画面上无一内容被表达出来。
不过,即使是「无表达」的情况,那团随机的图像色调似乎还是会收到其他有所表达的部分的影响。例如在本表格最下方一行,未被表达的是左侧女装子的彩色服装,被表达的是右侧普通男孩(白色T-shirt),此时随机图像呈现灰白色;另一方面,本表格的最右侧一列,未被表达的是右侧普通男孩,被表达的是左侧女装子(彩色服装),因此随机图像也呈现彩色条纹。
另外,还可以观察到,左侧女装子的服装虽然都是符合「Japanese idol clothes,colorful clothes」这一标签,但越是接近表格左下单元格,服装越显得沉稳,男性化;越是接近表格右上单元格,服装越是显得花哨、女性化。这应该是受到了左侧表达与右侧表达之间数字比例的影响。
对于weights的各项数值在0~1区间的4阶段变化(共计64张图)的观察就到这里了,下面是一些超越0到1这个区间的测试图:
weights=数值各项相等,且都大于1或小于0
weights=1.5,1.5,1.5 |
weights=2,2,2 |
weights=5,5,5 |
weights=9,9,9 |
weights=99,99,99 |
weights=-1,-1,-1 |
weights=-9,-9,-9 |
weights的3项中,2个1,1个2
weights=2,1,1 |
weights=1,2,1 |
weights=1,1,2 |
weights的3项中,2个2,1个1
weights=2,2,1 |
weights=2,1,2 |
weights=1,2,2 |
weights=2,2,2
weights=2,2,2 |
weights=其他/Others
weights=0,2,0 |
weights=0,2,1 |
weights=0,2,0.5 |
weights=0,1.5,0.5 |
weights=0,3,1.5,0.5 |
weights=0.5,2,0.5 |
weights=0.5,1,5,0.5 这里输入错误,将小数点「.」打成了逗号「,」。 |
weights=0.5,1.5,0.5 |
weights=0.2,2.2,0.6 |
最后,就本次测试的绘图目标(教室中+左侧女装子男孩+右侧普通白T-shirt男孩)来说,最满意的就是本文的题图:weights=0.5,2.2,0.6!
感谢阅读。御閲覧有り難う御座います。Thanks for reading.
作者wildgun主张对本文及图片的著作权。
希望你也能用到AI绘图工具及Latent Couple插件创造出自己的有趣作品 :)