非常感谢Jacky为飞链云版图编写的第一篇用户新手教程——飞链云官方!
前言:
在接触飞链云版图(以下简称飞链云AI)之前,笔者曾使用过 sd(stable diffusion)各版本、 wAIfu diffusion、novel AI等各主流AI绘画工具来跑图。但苦于无论是sd还是novel AI都难以轻易达到要求,只能通过反复调试各项参数去追求心目中最好的质量,直到飞链云AI的推出。简约的ui交互,优秀的模型资源,预设稳定的模型参数,强劲的算力,让笔者能够精准出图,高效出货,辅助笔者真正意义上实现“心想图成”。
这是一篇指南,旨在为刚刚接触飞链云AI的萌新快速上手AI作画。
笔者将简单分析飞链云AI基础逻辑和应用,如有错误或疏漏之处,也请多多包涵。
本文基于笔者对无数高阶魔法测试的经验与tag进行挖掘所得成果总结而成,且包含许多个人理解和主观观点。非常欢迎各位前往交流群讨论。
*由于本指南内容较多且篇幅较长,请妥善利用导航及文档内搜索功能寻找需要的资料。
*以下所有实例均由飞链云AI出图
麻瓜:什么是魔法?
什么是魔法?
在深度学习中,我们使用一段 prompt 来引导 AI 使用“噪点图”叠放然后超量召唤出我们最后的图像。
飞链云AI 是一个基于 stable diffusion 的模型,因此它的工作原理与 stable diffusion 并无两样,依赖prompt(提示词)来帮助AI筛选、融合图片。
prompt通常由各种tag来构成,tag通常由英文构成,主要内容为以逗号隔开的单词/词组/短句。tag也可以包括其它语言的文字,甚至可以识别表情符号。
AI会通过寻找符合关键词描述的方向而有明确指向地去噪点(diffuse)。同样如果包含 negative prompt (负面提示词),AI就会尽可能避免含有负面相关要素的部分。换句话说,prompt + negative prompt就像是魔法世界的神奇咒语,它直接决定了最终我们会得到什么。
AI对于tag的辨识也是有顺序规律的,通常以从前到后为顺序,以逗号为分割。对于基本操作,可以以大括号、小括号、中括号调整权重。在飞链云AI中,小括号()增加为 1.1 倍权重,中括号[ ]减弱为 0.91 倍权重(相当于除以 1.1),多次套括号((()))效果相乘。但大括号{}在飞链云AI中默认并没有用,通常{}会增加为 1.05 倍权重。
因此,一针见血的tag(关键词/标签)才是我们所需要的,也是你施法成功的关键!
麻瓜首选魔法装备:飞链云AI
AI绘画中,要让魔法一次成功可不容易,充分的施法准备,能让你事半功倍。
我们先来看看飞链云AI它帮我们做了哪些施法准备:
1.采样方法优选(sampling method optimization)
采样方法组成了图片生成的第一大要素,它决定同样的 prompt 下 AI 会选择以何种方法去噪点化以得到最终图片。同时,它还会决定运算速度。
而对萌新而言,EULER A、EULER、LDM、LMS、PLMS、DPM2 A / DDIM、DPM++等等一大堆的采样方法,根本无从理解和选择!
而在飞链云AI这里一切都不是问题,因为策划组已经很贴心的进行优化并为特定模型匹配了最适合的采样方法。让萌新可以轻松上手,一键施法!
2.采样次数/迭代数量优化(sampling steps optimization)
对于懂得渲染知识的同学,采样次数肯定不陌生,这一个复杂的参数,会影响各画幅下图像的直接质量,举个例子:例如 DPM A 和 EULER A 都是所谓的非线性迭代方法,它们的结果并不会因为迭代增加而无休止地变得更加优秀,在大于一定的迭代值之后反而质量会快速下滑。而 DDIM / EULER 等线性迭代方法则恰恰相反,质量往往依托于迭代的次数。但也存在边际效应的问题,当迭代大于一定程度时,再增加迭代次数也不会让画面产生显著变化。
如果你觉得完全没听懂,那就对了,因为在飞链云AI这里,策划组已经将采样次数与画幅与模型与采样方法进行了优化绑定,让你无需学习渲染知识和了解算法,从而轻松获取高质量的图片。
3.模型优选(model optimization)
AI绘画中的模型训练是一个费时、费力、费显卡、费硬盘的过程,行业术语叫炼丹,飞链云AI集成了大量训练度高优质稳定的模型,同时保持较高的模型更新频率,极大程度的降低了大家选择、训练模型的时间成本。
魔法师学徒:第一次施法
下面进行我们第一次施法尝试,我们将:
masterpiece, 1 girl, cute face, white hair, red eyes
填入画作想法(prompt)中,英文好的同学会发现,原来是召唤一个白发红眼妹纸(笔者的xp好奇怪啊),然后将:
low res, bad anatomy, bad hands, text, error, missing fingers,
extra digit, fewer digits, cropped, worst quality, low quality,
normal quality, jpeg artifacts, signature, watermark, username,
blurry, bad feet
填入排除(negative prompt)中,这个我们称为通用反咒,主要为了尽量防止出现坏手坏脚,奇怪文字,模糊不清等种种负面状况。注意这里是尽量防止,并不能完全阻止。
然后选择你一个你喜欢的模型,如二次元模型,画布大小1:1,精细度超高,想法匹配度高,开启画面修复+放大,进行召唤吧~
如果充分理解了前文内容,并且吟唱地不那么夸张,那么恭喜你,你的第一次施法无惊无险地获得了成功。现在你已经脱离麻瓜范畴,拥有成为魔法学徒的潜质了,向着魔法世界的大门前进吧!
魔法咒语的进阶吟唱
下面我们讲讲咒语正确吟唱的关键:“权重”,之前有提到关于 ( )、[ ] 的使用。以防刚把魔杖捂热的新魔法师看到这里已经忘了它们是什么意思,我们重新回忆下:
AI对于tag的辨识也是有顺序规律的,通常以从前到后为顺序,以逗号为分割。对于基本操作,可以以小括号、中括号调整权重。在飞链云AI中,小括号()增加为 1.1 倍权重,中括号[ ] 减弱为 0.91 倍权重(相当于除以 1.1),多次套括号如 (( )) , ((( ))) 效果多倍相乘。
这里要重点说明的是,如果因为某些需求而要大量提高某tag的权重,可以对该tag进行多次括号,比如((((red hair)))),这意味着将red hair的权重 * 1.1四次,也就是 1.4641。但这个写法吓人了,数括号也很浪费时间,所以可以直接为这个tag赋予权重:
(tag:权重乘数) 如 (red hair:1.5)
外层一定是小括号而非其它括号,比如 (red hair:1.5) 将直接给 red hair 赋予*1.5权重,清晰简洁,便于自己回顾和他人理解,强烈推荐。
请不要做出诸如 ((red hair:1.5)) 的奇怪写法。虽然权重能够正确叠乘,但在多重权重同时计算的情况下则会导致此权重无效!!!
而除了整词权重之外,也可以进行部分权重,比如如下例子:
1 girl, white long (messy:1.2) hair, red eyes将专门对 messy 部分赋予 *1.2 权重,其它部分不受影响。
(messy是凌乱的意思,以后自己翻译哦)
高权重的元素会在画面中有着“更大的占比”或“更强烈的存在感”或“更多的数量”,是能可观地影响构图的原因之一。笔者非常不建议给出十分离谱的权重值,三个小括号也只有 1.3 左右,而一般来说 1.6 就已经很极端地占据画面了,再高至例如 2.0 只会在大多数情况下让咒语变成召唤古神!
划重点:通常情况下,核心tag权重不要超过1.5
高级咒语解析
上述的小括号、中括号与带权重小括号都属于低阶语法,而接下来要介绍的是更长更复杂一些的高阶语法。
高阶语法都以中括号 [ ] 作为外层包括,
包括分步描绘,融合描绘两种,
使用高阶语法时这一对中括号不会让权重降低。
高阶语法内可以嵌套低阶语法,低阶语法内也可以嵌套高阶语法,在理解高阶语法的时候,大家需要有一个渲染步数的概念。简单点解释,大家可以把渲染步数想象成一个进程。
首先介绍分步描绘的各种形式:
[from:to:step]
[from::step] (to 为空)
[:to:step] (from 为空)
它的作用是让tag在达到step之前被视为from,在达到后视为to。若是在对应位置留空则视为无对应元素。step为大于1的整数时表示步数,为小于1的正小数时表示总步数的百分比。(目前版本的飞链云AI不开放step配置,使用高级咒语时请设定为正小数)
这样讲,有些复杂,举个实例来便于理解:
比如a girl with [green hair:red hair flower:0.2]
如此描述,会在前 20% 步数被视为a girl with green hair,在后 80% 步数被视为a girl with red hair flower。需要注意这两个描述之间的兼容性和覆盖,在步数合适的情况下,最后形成的人物会拥有绿色头发和红色花饰,但也可能因为颜色溢出导致头发也变为红色,毕竟后80%没有绿色头发的限定,AI完全可以自己理解一个随机的发色。
还是不能理解的魔法学徒们,你们需要大量的练习!
对于能够理解以上咒语的小魔法师们,再衍生得复杂一些,形如 [from:[to:end:step2]:step1] 的语句是可以被正确识别的。且分步描绘支持逗号分割,形如 [1 girl, red hair: 2girls,white hair:0.3] 的语句也可以被正确识别。
[from:[to:end:step2]:step1]
的作用是让tag在达到step1之前被视为from
在达到step1后step2前视为to
在达到step2后视为end
分步描绘不特别擅长细化细节,与其分步描绘不如将细化部分直接写入持续生效的部分。分步描绘更擅长在画面初期建立引导,大幅影响后续构图或画面生成!
然后介绍融合描绘的两种形式:
[a|b]
[a:w1|b:w2]
它们还有分别对应的可无限延长版
[a|b|c|…]
[a:w1|b:w2|c:w3|…]
对于形如 [a|b] 的第一种,AI将在第一步画a、第二步画b、第三步画a、第四步画b…如此交替进行。而对于无限延长版,则变为第一步画 a、第二步画 b、第三步画 c…循环往复交替进行。
对于形如[a:w1|b:w2]的第二种带权重版本,它的实际效果便是先画 w1步a然后再画 w2步 b…,相较而言有着支持自定义比例的独特优势。
融合描绘不可嵌套,但同样支持逗号分割。融合描绘擅长将两种事物混合为一起,
比如 a [dog|frog] in black background
让一只狗和青蛙融合成一个新的形象出现在黑色背景中
(又是笔者的恶趣味,呵呵)
这两个高阶语法有着明显的区别,尤其是在高步数下更不可以一概而论。分步描绘的n步a再加上n步b最后可能形成一个带有b基底特征的a,但它会表现出明显的分立感。而融合描绘的n步a再加上n步b最后将形成简直像是化在一起的融合体。
吟唱方式:短元素,中元素与长元素
讲完基础语法,我们来讲讲魔法咒语的吟唱方式,大致有着两种不同形式——最常见的直接吟唱、叙事描述般的长吟唱。
假设要生成一个有着黄色头发、蓝色眼眸、白色上衣、红色裙子、黑色裤袜的全身坐姿二次元美少女,且强调服饰颜色,那么这两种吟唱分别看上去大概是这样的:
直接吟唱(pitch式吟唱):
masterpiece, best quality, 1 girl, (blue eyes), (yellow hair), (white clothes), (yellow skirt), (black leggings), sitting, full body
长吟唱(自然语言吟唱):
masterpiece, best quality, (1 girl with blue eyes and yellow hairwearing white clothes and yellow skirt with black leggings), sitting, full body
首先,不同吟唱方法不会显著改变咒语的解析方式,但是要注意的是:
调换各tag顺序都会显著让图片改变,
再复习下:
AI对于tag的辨识也是有顺序规律的,通常以从前到后为顺序
因此可以证明不同吟唱方法在大方向上是一致的。
实际施法中,魔法师们最常用的直接吟唱通常难以很好地绑定元素颜色。而长吟唱则不会出现明显元素颜色错误,会很好地处理各个颜色与元素的绑定关系
长吟唱能加强主体与元素之间的绑定关系、
提高不同元素之间的区分度,
在有明确绑定需求的情况下优于pitch 式吟唱;
直接吟唱则更擅长处理关系要求不强的情景,
往往能营造更多样化的场面;
长吟唱的关键在于(几乎必须)用一个小括号包括整个句子,以略微提升权重(权重略大于1.0的情况下表现最佳,但太大就有点过头了),否则无法和直接吟唱拉开差距。
这即为“元素污染”这一概念的根本原因和初级应对方法。
吟唱失败:我的魔杖冒烟了
有的时候,你会发现召唤画面严重崩坏,AI自动填充一些奇怪的元素来破坏画面,明明指定了一个角色,却出现残肢断臂和其他的角色。
通常都是以下原因造成的:
1.当一段咒语太过精简、画布太大。(会出现很多你未指定的元素)
2.当一段咒语太过繁杂、画布太小。(图像崩溃)
3.当一段咒语的结构出现明显问题。(各种奇奇怪怪)
这些情况都将有可能导致AI无法完全理解咒语!
AI无法完全理解咒语的最大原因是自由度过高
而缩减画布调整画幅可以降低自由度。
目前版本的飞链云AI还不支持自定义画布大小,当然要解决这个问题也不难。既然它自由度过高,那么加长咒语让它有更多可画之物,限制它的自由度即可。
同时值得一提的是,飞链云AI某些模型比如doll模型具有画面修复+放大功能,也就是常用的:high res. fix 也能解决此类问题,但它是利用先在小分辨率渲染再放大到目标分辨率的方法。最合理的做法还是直接从根源下手。
这即为“元素溢出”这一概念的根本原因和初级应对方法。
最后是一些碎碎念...
不必为每个tag都加上过多小括号来提高权重,如果你发现你真的需要给绝大多数元素都加上四五个小括号才能让你想要的东西确保出现,那么更建议普遍删掉一些括号,在极端情况下,给单个tag加上过多权重,可能会导致自由度过小而崩坏。
另外强调的是:
除非明确清楚重复tag意味着什么、且有强烈的对应需求,否则不建议重复输入tag。重复输入tag的语义相当复杂,不在入门范畴内。
魔法的极致或许是科学
在讲魔法公式入门前,大家需要知晓,了解各类tag的存在并不意味着就掌握了一切,摘抄别人的tag囫囵吞枣地使用也不是上乘。如果想要让AI创作出更佳的作品,那么还需要深入了解各个tag到底有着何等作用,以备日后使用。各个tag之间的互相影响如同魔法反应一样,大多数情况下并不仅仅是字面意义上的互相叠加那样简单!
举个例子,比如an extremely delicate and beautiful girl 其实就会导致不少风格化表达被覆盖;而light用作颜色在很多情况下不是指淡而是发光,甚至在某些稀有的组合里还专指黄光;让一个角色手上握着武器可能不仅仅要holding weapon还需要加上weapon本身,诸如此类。
因此,各类科学分析方法甚至是研究方法都是有必要的。大家不必保持如此神秘的敬畏,一同参与到对于各种魔法的定性/定量分析中来,那么你终将摆脱知其然不知其所以然的桎梏,不再满足于妙手偶得,终将各类魔法随心所欲,得心应手,真正成为一名伟大的魔导师。
请始终记得——魔法的本质是科学,魔法的极致或许也是科学!
魔法公式入门
首先,tag并不可以随意堆积,不是越多越好。模型读取tag有着明确的先后顺序,这体现为理解顺序的不同。比如又一个著名的“少女与壶”试验所展示的:
masterpiece, 1 girl, red eyes, white hair, blue pot
masterpiece, blue pot, 1 girl, red eyes, white hair
masterpiece, blue pot, ((1 girl)), red eyes, white hair
可以发现,当其它参数完全相同的情况下,仅仅是颠倒了1 girl与blue pot的顺序,构图就产生了极大的变化。
1girl在前的情况下,画面围绕着人物展开,
blue pot 体现为环绕着人物的场景物件。
而 blue pot 在前的情况下,画面围绕着盆展开,
人物反而退出了画面中心,
甚至哪怕加大 1 girl 权重也无法让人物比盆在画面中更重要。
这其中的原理不适合在入门魔导书中详细解释,但可以提供启发,tag的顺序将影响画面的组织方式,越靠前的tag对构图的影响越“重”,而越靠后的则往往会成为靠前tag的点缀或附加物。顺序对于构图的影响在大多数情况下甚至大于权重的影响。
虽然这个试验本身只涉及了一个场景,但在更多后续探究与复杂场景构筑中都证明了它具备的有效性。不过它也非绝对保障,在少数情况或极其复杂的场景中,叠加式构图有可能因为其它尚未在此介绍的原因而失效,但总得来说它能增强稳定性。
这就是用于替代“顺序权重论”的“顺序叠加论”。而进一步可以延伸出构筑合理咒语的灵感。
将最着重体现的元素靠前摆放,然后是它的细节,再将抽象、全局化、影响极度强烈的 tag写在靠后处,例如场景和画风滤镜。
所以我们开始构筑一套简单的人像召唤魔法顺序公式。将上述经验总结为:
前缀+需要重点突出的物件/背景+人+人物特征/元素+人物动态+服饰整体+服饰细节元素+大背景+背景元素+光照效果+画风滤镜+微小辅助元素+后缀
这是对“标准三段术式”结合而得出的“标准顺序公式”,包括了 “标准三段术”,是它的进一步发展。不难发现这种公式的构成符合上述理论,每一个相对靠后的部分都是对相对靠前的部分的补充,模块化明确,有着极强的可维护性,且最重要的特性是易于理解与交流。
什么是标准三段术式
简单来说,标准三段术式从构图角度来理解就是:前缀+主体+背景:
前缀:(基本前缀+画风词+整体效果器)
用于确定图片的总体生成质量。基本前缀为强调图片质量的词汇:masterpiece, best quality, best 8k wallpaper等;
画风词用于凸显图片的画风:
(插画)illustration,(水彩)watercolor medium,(厚涂)impasto等;
效果器为光线效果,用于图像整体光效的:
best lighting,(炫光)lens flare,(景深)depth of field等;
这里给出一个标准前缀(偏绚丽):
(masterpiece, extremely detailed 8k wallpaper,best quality), (best illumination, best shadow, extremely delicate and beautiful), dynamic angle, floating, finely detail, Depth of field (bloom), (shine), glinting stars, classic, (illustration), (painting), (sketch),
主体(画面中的主体部分):
主体为图画想要凸显的主体,可以是人物,建筑,景物等,
主体部分要进行丰富的描述才能获得细节丰富的图像。
主体部分要进行详细的描述才能获得重视,
通常我们对主体词要加权重,以提高主体的清晰程度。
对于角色来说,通常包括了面部,头发,身体,衣着,姿态等描写。
没有角色时,可以将场景中的重要点即高耸如云的城堡,绽放的花朵,破碎的钟表等,想要位于画面中心的物体进行描述。
场景(背景,环境):
场景是主体存在的周围场景,没有场景描述时容易生成纯色背景或者是效果tag相关的背景,且主体会显得很大。
部分主体会自带场景内容,例如建筑,景物。
单独的环境词汇会形成环绕与主体周边充斥整个画面的场景。
如(繁花草甸)flowering meadow,(羽毛)feather,(阳光)sunlight,
(河流)river,(碎玻璃)broken glass等。
环境词汇进行堆叠就能丰富整个场景,主要不要让主体内容太少。
背景词汇即环境词添加background做背景,例如:clock background,这样的描述可以稳定让背景词出现与主体的背后
我们来做个施法练习:
想象一个画面:一个漂亮国风的贫乳女孩(咳咳),裸露着肩膀,在一个宫殿式的广场上,周围燃烧着火焰,一些火焰变化成火蝴蝶围绕着她。广场上有一座古朴的大钟,在敲响的那一刻,女孩将幻化成蝶。
//前缀:
(masterpiece, extremely detailed 8k wallpaper,best quality), (best illumination, best shadow, extremely delicate and beautiful), dynamic angle, floating, finely detail, Depth of field (bloom), (shine), glinting stars, classic, (illustration), (painting), (sketch),
//主体:
(a girl), solo, bare shoulders, flat_chest, diamond and glaring eyes, beautiful detailed cold face, very long blue and sliver hair, (floating feathers), wavy hair, extremely delicate and beautiful girls, beautiful detailed eyes, glowing eyes,
//背景:
palace, the best building, ((Fire butterflies, Flying sparks, Flames)), clock background
//反咒:
((((ugly)))),lowres, bad anatomy,
bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, Missing limbs, three arms, bad feet, text font ui, signature, blurry, malformed hands, long neck, mutated hands and fingers :1.5).(long body :1.3),(mutation ,poorly drawn :1.2), disfigured, malformed, mutated, multiple breasts, futa, yaoi, three legs, huge breasts
国风模型,通用风
精细度高,想法匹配度高,面部优化开启
这段三段术式的编写,给了AI充分的自由度,除了一些细节方面做了描述和权重强化,整段术式并未对人物动态,人物细节进行非常细致的描绘。
基础三段式的编写方法,也是比较适合这类:有个大概想法却没有确切画面感的构思。
而前文提到的“标准顺序公式”则是对“标准三段公式”的进阶术式,
熟悉或熟练这种公式能令一个刚接触 AI的新手更顺畅地表达自己想要表达的画面,要是悟性够好生活经验够丰富则还可以触及高表现力。比如它可以生成:
一个二次元美少女+收束的长发/飘散的长发/占满屏幕的长发+复杂的哥特服饰/长裙/旗袍/等一系列可以上花纹或褶皱的衣服+一个帅气或优雅的动作/看淡生死面无表情+复杂的建筑物或自然风景或宇宙空间或阴暗背景+强大或温柔的+画风滤镜
等等诸如此类作品。在有经验验证的理论基础上进行自由创作,往往能取得令人感到满意的结果。
不过标准顺序公式也有许多缺陷,它对于某些独特的情况可能不适用,即使作为特解也一定会在将来被更先进的经验所替代。
实际运用过程中应当根据要求进行灵活调整,比如根据实际使用情况简化/删去某些环节,或根据实际要求进一步增加某些环节,甚至为了某些特殊效果而部分违反公式顺序。但它的“叠加式”思路,与其背后所蕴含的分析思想才是精髓。
笔者坚信魔法的终极形态是基于顺序和关系的模块化发展、本质是对于经验进行总结所得出的具体规律,是可以使用科学方式进行一定程度上的研究的。
魔法公式进阶
掌握上文的标准顺序公式,其实也只是开始中的开始。
大致顺序固然很重要,但它太过大致了。不难发现实际应用并不是那么简单的“后者叠加在前者之上”关系,更像是每一个元素都以某种规律叠加在它之前甚至附近稍后一些的元素上,与理想中的一一对应式相差甚远。
既然现实与理想不符合,那么是时候想想为什么会这样了。
虽然现在的各类二次元模型普遍更适合采用直接吟唱的方式,但不难发现输入的咒语依然一定程度上具备自然语言的特征——以逗号隔开,词与词之间有着形如自然语言间隔一样的距离,而且在一定程度上的顺序加持下表现更好。
那么有没有一种可能,一段咒语之内每个吟唱词之间的“距离”会影响它们的相关性,正如自然语言处理所做的那样?
我来试一下:
假设现在我们需要生成一个站在花田里的二次元少女,但是不想这个少女身上出现花饰。但是因为是花田,同时我们需要在画面中生成特别特别多的花,那么就应该给 flower 一个比较高的权重,比如 1.35:(简单的编写一段咒语如下)
masterpiece, 1 girl, blue eyes, white hair, (flower:1. 35), in field, blue sky, sun, cloud
从结果看出,情况不符合没有人物没有花饰的预期。事实上不仅仅是这一张图,上述咒语生成的大多数图片都会让人物带上花饰。
这不难理解,flower 的权重过大,导致它在画面中倾向于占有更大的比率、更强的表现,迫使元素与元素被错误地绑定了一一是与上文提及的元素不绑定相反的情况。
降低 flower 的权重可以一定程度上解决问题,但在实际应用中,很可能出现某个物件必须要有较高权重才能达成预期效果的情况(比如现在是花田,总不能没有花吧),或者权重已经非常低了依然出现这种尴尬情况。既然不可以降低权重,那还能怎么办呢?
根据自然语言处理机制来推测,可能是因为 flower 与 hair 的距离太近了,它们被处理为关联性较强的部分,最终在叠加式构图模式下把它们生成到了一起。所以移动 flower 的位置也许能解决问题:
masterpiece, 1 girl, blue eyes, white hair, in field, blue sky, sun,cloud, (flower:1.35)
对于更多生成的图片进行统计,修改过的咒语将花生成在头发上的概率大大降低了。
实验部分成功。这说明在考虑到了顺序的大关系之后,词与词之间的距离这一更细节的构成也是十分重要的。
距离较近的词的确更容易产生关联、进行叠加,
而更远的则倾向于降低互相的关联性、进而互相隔离。
占位词:ai is sb
看到这里,个别聪明的魔法师同学就会问,那我能否认为的拉远两个tag之间的距离来将次互相的关联性呢?
如果继续维持权重不可改变的限制,也不应用其它技巧,那么最简单的思考方向是让 flower 和一切形容人物的咒语部分都拉开更远的距离,加上一些用于描绘其它画面元素的词就能做到。但如果情况要求不应该为画面引入新元素,就不能这么做。
注意到此时加入词的目的仅仅是为了拉开两个tag的距离。那我们首先定义一下什么是“距离”——
它严格的叫法其实是这段咒语“生成的“向量/token数”,简称 “物量”就行了。
物量可以用来衡量咒语的长度,而两个tag之间的间隔物量数就是它们的距离。
新加入的词本身应该是尽可能无意义的,并且在此基础上多占用一些物量来产生距离骗过自然语言处理部分,我们将这样的词称之为占位词。
国内社区最流行的占位词是 ai is sb,精简的短却能占四个物量,所以这个短句在大多数情况下都没有意义(在少数某些情况是有的,因为“ai”可能被拆出来),很适合用作纯粹的占位。
看下效果:
masterpiece,1 girl, blue eyes, white hair, ai is sb, in field, blue sky, sun, cloud, ai is sb, ai is sb, ai is sb, (flower:1.35)
距离被拉远后,tag间关联度的下降引导AI将花饰变成了花状的服饰,可谓是精妙无比!
当然,tag与tag之间也不能毫无节制地加入占位词来降低关系。根据测试,tag之间的关联度似乎和距离有着一定程度上的反比例关系或保底关联度,因此加入过多占位词不会有额外的好处,适量添加即可。
而这也表明了不是所有tag都是“有效tag”,被误认为有些实际上占位成分较大的tag其实随处可见。在从各类渠道选取tag的时候,应当注意分辨哪些tag是真正有效的而哪些只是前人互相复制粘贴时不加思考就带上的tag。
魔法是有思想的
既然提到了tag的关联度,再来引申一个概念:tag的联想性
如果有魔法师同学仔细研究过模型的tag 标识,那么不难发现一些有趣的现象——许多 tag 有着逻辑上合理的“前置”关系,比如存在 sword 这个tag的作品往往还存在 weapon 这个 tag、存在sleeves past finger 这个 tag 的作品往往还存在 sleeve past wrists 这个 tag,这些共存且有强关联的 tag,最终会让模型处理包含它的咒语时产生一层联想关系。
不过上述联想关系似乎不够令人感兴趣,毕竟这些联想的双方都是同一类型,哪怕sword 联想了weapon也只是无伤大雅。那么是否存在不同类型的联想呢?
答案是存在的:
masterpiece,1 girl, blue eyes, white hair, white dress, dynamic, full body,simple background
masterpiece,1 girl, blue eyes, white hair, white dress, (flat chest), dynamic, full body, simple background
不难发现 flat chest 除了影响人物的胸部大小之外还影响了人物的头身比,让人物的身高看上去如同儿童身高一般,如果调整画布为长画布还会更明显。因此称flat chest 与 child 有着联想关系。人物胸部大小和身高是不同的两个类型,两个看似类型完全不同的词也可以产生联想关系。对 flat chest 加大权重,会让这种联想关系会表现地更为突出。
它的原理和上述同类型的联想一样,都是训练来源导致的。平胸美少女和儿童身高在同一个作品内出现的概率非常大,所以 AI 逐渐对这两个词产生了联想关系,还是强联想关系。这种联想关系在社区中曾被称为“零级污染”。
在出现联想关系的情况下,词与被联想的词的距离是最小的
联想词之间极易互相强化,进而提高画面的稳定性。例如给人物稳定添加一把剑的最好做法不是仅加上 sword,而是加上 weapon,sword。同理,其他存在强联想且希望出现的元素也推荐同时在咒语内连续出现。
为了在画面内取消两个词之间的联想,最简单但不一定有效的做法是将被联想词写入负面咒语并加上较高权重。如果没有效果,那么不妨试一试在咒语内加上被联想词的对立面,比如用 aged up 对抗 flat chest 对于 child 的强联想。
不难发现,上文提及的tag与tag之间的关联其实也是联想的一种特殊情况。在上文的实验中,flower 被联想到了 hair flower,而当它们靠得够近时,哪怕它们中间存在逗号也满足了联想词之间的互相强化条件,进而让人物的头上出现花。
高级咒语进阶
既然上文补充了“标准顺序公式”遗漏的细节,那现在能不能让它再给力一点?
当然能!
我们再仔细想想上文的“标准顺序公式”是怎样的思路——浓缩到极致,就是引导质量、突出物、人、细节、背景、修饰。不错,但当初为什么要把人和突出物分开?为什么修饰一定要在后方?背景又是怎样界定的?
无数个疑问都指向了由词性分析与联想关系理论所引发的新思考方式。
既然用于描述一个元素的词与用于描述另一个元素的词之间的距离会影响叠加的程度,那么不如直接将一切元素与其对应描述词的组合都抽象为一个“物”。人是一个物,人身上的一些小挂饰也是一个物(无论这个挂饰的数量是多少),背景里的建筑也是一个物,诸如此类。物!
每个物都有能力成为主要描绘对象。如果是人,那么可以是人的立绘或特写,如果是挂饰,可以是它的展览模样,甚至背景大建筑也可以成为全景的视觉中心。
而当画面中存在多个物时,将不可避免地分出主要的物和次要的物,次要的物还可以有相对它而言更次要的物。这和此前的“基础顺序公式”不同,因为“基础顺序公式”默认一切事物都可以互相叠加——但事实证明不是那样。
不难注意到有些“物”像是无视了叠加式构图原则那样,除非权重高到让它占满屏幕,否则往往只能作为配角存在、难以被其它“物”作为叠的目标。这些“物”天生有着被视作次要的特征,和许多能做主能做次的物并不相同。
那么什么因素决定哪些物更倾向于被视为次要呢?终极答案是生活经验!
当1 girl 和earring 简单结合时,无论两者谁先谁后,最后都会变成“一个二次元美少女带着耳环”的样子,不会在简短描述下就轻易地出现诸如“美少女向前抬手捧着耳环、耳环在镜头前是一个特写、美少女的身体被景深虚化”的情况。
因为在我们的生活常识中,大多数这两个“物”结合的情况都是前者,后者在作品描绘里出现的情况极少,因而这两者即使是顺序调换也只是让美少女是否摆出展示耳环的姿势,无法轻易地切换主次。
masterpiece, 1 girl, earring
masterpiece, earring, 1 girl
但当1 girl和 lake结合就不一样了。lake虽然往往被当做背景,但它完全可以成为风景画的主要描述对象,所以在除去刻意设置了镜头的情况下——当1 girl在前,重要的“物”为人物,所以画面往往会让人物占据主要部分 (包括人物全身像站在景物前、人物半身像加远景,甚至人物直接泡水),而当lake在前,重要的“物”为湖,湖在我们的生活经验中的确可以成为主要对象,因此画面往往会让人物显得更小、更融入风景或距离视角更远。
masterpiece, 1 girl, lake
masterpiece, lake, 1 girl
无论怎么说,它从原理和实际表现效果都和人有(一点点)相似之处。虽然 AI 绘画看上去是一步成型,但它一定程度上还是会根据“物”与“物”之间的关系来决定构图,并结合场景与反常情况无视部分顺序
所以我们先总结出某种通用顺序公式的雏形
前缀+“物1”+“物1的各种次要物”+“物2”+“物2的各种次要物”+“物3”+“物3各种次要物”+...
其中“物1、2、3...”是逻辑上能轻易成为主要聚焦点、占据大画面比率的物件,“次要物”则反之。主要物按照希望的构图主次顺序排列,而将次要物顺序放在其附着对象之后是为了结构简洁明确,也是为了避免超出预期的反常强调。
“次要物”往往都具有能以各种存在形式附着于多种主要物件之上的特性,因此单个主要物的多个次要物按顺序集群排列,有助于避免相对重要的次要物错误绑定的情况。
不难发现它是对基础顺序公式“”的进一步抽象化,但有一些细节处理不同。
远近、光影与其它今人惊讶的东西
先来看个例子:
masterpiece, 1 girl, medium shot, backlight, lake, panorama, night moon
close up、close shot、medium view、panorama 这几个镜头控制十分好用,但它们在不同的位点影响力不同。光照也类似,在不同位点的 backlight 和 Rembrandt lighting 对于人物或全画面的立体感影响也并不一样。
在按顺序构图的情况下,根据需求选择镜头与光照对于画面质感与效果的提升有极大帮助。而更重要的是,通用顺序公式的雏形可以进化一次了:
前缀+前置镜头效果+前置光照效果+[带描述的物x+物x的各种次要物+镜头效果和光照(如果必要)]*X+全局光照效果+全局镜头效果
镜头效果和光照效果勿过频,因为 AI 还不能很好地处理多个物体分别在不同镜头下的情况,而光照更是往往会影响图片的大部分区域。紧挨着的每个镜头与光照的正反顺序影响不大,但笔者个人感觉上述顺序的质量更佳,实际上可酌情调整。
高级咒语的最后一块拼图
掌握里以上的内容,现在来讲讲高级咒语的最后一块拼图:画风。
masterpiece, watercolour, 1 girl
画风其实很好理解,这里想要着重说是除了sketch、oil painting、watercolour 此类明确表示画风的tag之外,还存在着诸如wallpaper、illustration、anime等看似一点都不画风但又难以简单被归类为质量补正的东西。在许多魔法师眼中,wallpaper 等要素应该和 masterpiece 算在一起作为前缀,可实际上它们往往能对画面产生质变,混合使用还可能产生可怕的化学反应。
更何况还有许多未在此列出的东西,比如highly detailed本就会让画面部分地偏向于厚涂甚至油画,anime会让画面线条向粗糙手绘但又不像sketch那样痕迹明显。
masterpiece 本质上也有一定因素是通过改变质感表现来提高画质的,它甚至可能在咒语极短的情况下为画面加上画框。再深想下去会让问题变成“到底怎样算美”。所以干脆根据使用率来做区分,将masterpiece/best quality 之外的一切“类质量前缀”算为画风引导。
所以我们得到了最终高级咒语通用模版:
质量前缀+前置画风引导+前置镜头效果+前置光照效果+[带描述的主物+主物的各种次要物+镜头效果和光照]*X+全局光照效果+全局镜头效果+画风滤镜
其中,各主物之间优先按预期构图重要度顺序排序,各次要物优先按含主物的联想关系顺序排序,在无明显顺序差异时颜色相同的主物或次要物应靠近。例外在于存在错误元素绑定,需要隔离时,相关元素尽可能互相远离。所有镜头,光照和画风均为可选项,且为避免反应过于复杂而建议各不超过3种。
这就是标志着真正入门的“万能魔法公式”。“万能魔法公式”结合了“标准顺序公式”的全部内容,并体现了对于“物”之间关系的进一步思考,也将镜头处理纳入公式内。将顺序公式与前文提及的长短吟唱等技巧相结合,熟练运用,是一个高阶魔法师的必备素养。
是结束也是开始
通用顺序公式显然也不是一切的答案,毕竟它标志的是入门而不是大成——本指南详细解释的一切内容都是入门级内容。它更像是对于如何理解 飞链云AI 运作方式的思考帮助,而不是能无脑解决所有难题的万用工具,实际操作依然需要更多经验总结来灵活变通。
魔法的殿堂恢宏而瑰丽,无尽的回廊里昭示着无限的可能性~
朝更远处进发吧。
彩蛋
还记得最开始笔者提到过,tag可以识别一些特殊符号吗?
看个例子:
先直接说结论。emoji可以直接作为 tag的部分输入,作为 prompt 自然兼容上文提及的一切低阶语法、高阶语法,而且单词效果强到可怕.
笔者发现emoji符号的确没有被转义为英文,而是原原本本地就以字符形式被处理。笔者不知道到底是什么人以什么样的精神状态将 emoji 作为 tag 进行训练,但总之这件事情就这么发生了,emoji 它就是可以当作tag用。
那么为什么 emoji 如此强大昵?这里解释部分理由:
Emoji 是单个字符,可以无视AI对它识别时的一切拆分尝试,以最短的字符长度代表出一个概念。
它的信息密度的分母是最小的,信息量与其它词相比却差不多,所以信息密度高到吓人,因而导致其准确度高到可怕。
而还因为它信息密度如此之高,它受权重影响也大得难以描述,一对小括号就能体感上产生(tag:1.35)左右的强大效果。
想要修手?请大胆使用手势表情。想要群像?双人表情屡试不爽。
想要烟花背景?烟花表情驱散一切问题。
想要难以被描绘的头骨?头骨表情不屑一顾。
铅笔画风?铅笔表情瞬间拿捏!
浮世绘?鱼旗表情分分钟搞定。
哪怕是最难凹的海盗船,也只需要一个海盗表情就能展现了!
轮椅表情+动态模糊(motion blur)的描述,就能即时上演轮椅漂移的戏码。
想要解决一切问题?看看有没有emoji可以表达它。
不信?来感受下:
结语
非常感谢各位的观看,这本指南是笔者个人经验集,并非原创,仅希望为新人提供从入门到精通的一条路径。世界之大无奇不有,五花八门的技巧总会迭代,期待各位魔法师大人不吝分享新的技术,新的技巧,新的经验。
PS. 之后会分享完整的tag案例集,以供各位魔导师参详精进,相互印证,早日封神!
wx小程序搜索:飞链云版图即可体验AI绘画的魔法🪄