<p class="ql-block ql-indent-1"><span style="color:rgb(255, 138, 0);">最近忙到飞起</span>,今天总算能消停一会儿了😂。前面两课,小伙伴们在吐司中练习了SD文生图的主要流程,但其中有一个核心环节是以抄作业的形式完成的——那就是提示词书写。</p><p class="ql-block ql-indent-1">在AI绘图中,抄作业确实是快速获得优质图像的一条捷径,但正如画师临摹他人画作是为了提升自身画功,我们也不能单纯为抄而抄,毕竟要是连咒文都不会念,又怎么能算法师呢?</p> <p class="ql-block ql-indent-1">那么接下来,就让咱们先弄清楚,上次抄的作业里到底都写了些什么。先看正向提示词:1girl,smirk,curly hair,in the dark,deep shadow——直译:1个女孩,傻笑,卷发,在黑暗中,深深的阴影。</p> <p class="ql-block ql-indent-1">AI绘图中,提示词一般可以分为主体框定、特征描述、环境设置、风格设定、质量控制这六大类。在刚才的提示词中,我们用到了其中三类:</p><p class="ql-block ql-indent-1">1个女孩——主体框定;</p><p class="ql-block ql-indent-1">傻笑,卷发——特征描述;</p><p class="ql-block ql-indent-1">在黑暗中,深深的阴影——环境设置。</p> <p class="ql-block ql-indent-1">可能有的小伙伴要问了,为啥非得一个词儿一个词儿往出蹦呢?直接说整句话它不香么?答案是——<span style="color:rgb(237, 35, 8);">SD不认识整句话</span>,即便你写英文也不行。和传统搜索引擎类似,SD1.5版本采用的仍然是基于关键词检索的输入体系,对于自然语言的识别是非常有限的,它就像一个刚上小学的孩子,面对整段话,只会在其中寻找自己认识的字、词和短语来拼凑出大致的语意——所以想要让它准确理解你的意图,<span style="color:rgb(237, 35, 8);">最好挑那些它认识的词进行输入</span>。当然了,SDXL1.0版本在这方面已经取得了长足的进步,虽然还达不到chatGPT那种大语言模型的程度,但已经基本能够满足生图需求了,这个咱们下期会讲。</p> <p class="ql-block ql-indent-1">肯定还有人要问:那我直接输入中文行不行?其实也不是完全不行,这个咱们同样放在下节课去讲,现在先继续往下来看反向提示词:(worst quality:2),(low quality:2),(normal quality:2),lowres,watermark,badhandv4,ng_deepnegative_v1_75t——直译:(最差质量:2),(低质量:2),(一般质量:2),低分辨率,水印,最后两个不翻译,原因待会儿说。</p> <p class="ql-block ql-indent-1">不难看出,我们输入的反向提示词几乎全部属于质量控制词,无论低质量、低分辨率还是图像带水印都是我们不希望看到的,所以我们就把这些可能出现的结果直接写进反向提示词,以提升成像质量。</p><p class="ql-block ql-indent-1">这里有两个需要注意的点,一是书写格式。可以看到最差质量、低质量和一般质量三个词都采用了(提示词:2)这样的写法,如果认真看过<a href="https://www.meipian.cn/4uhft5nz" target="_blank" style="font-size:18px; background-color:rgb(255, 255, 255);">第四课</a>,可能会发现这和直接通过提示词调用LoRA模型时采用的书写格式<lora:文件名:X>十分相似,这里只不过把尖括号换成了小括号,而最后的数字X所代表的含义大家还记得吗?</p> <p class="ql-block ql-indent-1">没错,是权重。所以这里的小括号和冒号就是SD中调整单个提示词权重的语法。<span style="color:rgb(237, 35, 8);">不加任何符号的情况下,提示词权重为默认值1,每加一个小括号,权重增加10%</span>,也就是从1增加到了1.1,此时这个位于括号内的词就拥有了比其他词更高的地位,它所代表的语意也会更受AI重视。如果想要继续增加权重,一种方式是直接套更多的小括号,就比如<span style="color:rgb(237, 35, 8);">(((提示词)))</span>;另一种方式就是咱们现在使用的<span style="color:rgb(237, 35, 8);">(提示词:X)</span>,冒号后面的X就是这个词的权重值,根据需要直接输入即可。这种方式更常用也更方便,<span style="color:rgb(237, 35, 8);">既可以用于增加权重,也可以输入小于1的值来减少权重</span>。</p> <p class="ql-block ql-indent-1">需要注意的另外一个点,就是刚才没有给大家翻译的最后两个负面提示词。不翻译的原因很简单——<span style="color:rgb(237, 35, 8);">它们并不是提示词,而是两个模型</span>,也就是之前在<a href="https://www.meipian.cn/4u9mmg13" target="_blank" style="font-size:18px; background-color:rgb(255, 255, 255);">第三课</a>末尾提过一嘴但却一直没有讲的embedding模型。</p> <p class="ql-block ql-indent-1">咱们以前讲过,AI成像的过程大致是先把文字转化成空间向量也就是一堆数字,再把这些数字以特定的算法转为图像,而这个把文字变成数字的过程,其实就是embedding(嵌入),所以顾名思义,embedding模型就是作用于文字转换阶段的模型,因为不涉及直接的图像训练,这类模型通常都很小,只有几十到数百Kb,后缀名为.pt,存放在<span style="font-size:18px;">SDwebUI</span>主目录下的embeddings文件夹里。</p> <p class="ql-block ql-indent-1">在SD发展初期,曾经涌现出大量功能各异的embedding模型,其生态分布很像现在的LoRA模型,而当功能更强效果更好的LoRA模型崛起之后,大部分embedding模型都被取而代之,现在常用的,就只剩下为数不多的功能型模型,其作用主要集中在对负面成像效果的修正方面。其中最具代表性也最常见的就是咱们刚才没有翻译的badhandv4和ng_deepnegative_v1_75t,分别用于改善手部表现和修复图像异常,再加上一个万金油模型EasyNegative,就组成了SD反向提示词输入框里雷打不动的冷板凳三兄弟。一般来说,如果你不确定负面提示词应该写点啥,那<span style="color:rgb(237, 35, 8);">把这仨都扔上去就完事了</span>。</p> <p class="ql-block ql-indent-1">由于吐司目前并没有提供embedding模型的调用接口,小伙伴们暂时只能通过手工输入来使用这些模型。为了方便,这里咱们就让三兄弟并排坐好:</p><p class="ql-block ql-indent-1">badhandv4,ng_deepnegative_v1_75t,EasyNegative</p><p class="ql-block ql-indent-1">大家长按复制后打开记事本或者到微信传输助手粘贴收藏,生图的时候再把它粘到反向提示词输入框里就行啦。</p> <p class="ql-block ql-indent-1">那么这节课就结束啦,最近新东西太多,葫芦叔也得抓紧时间学习去喽~下节课我会带领大家整理提示词书写的逻辑,顺便介绍一下SD的官方最新版本XL1.0,感兴趣的小伙伴可以<a href="https://www.meipian.cn/4vgbprbh" target="_blank" style="background-color:rgb(255, 255, 255); font-size:18px;">点这里继续</a>。</p>