<p class="ql-block ql-indent-1"><span style="color:rgb(255, 138, 0);">最近忙到飛起</span>,今天總算能消停一會兒了??。前面兩課,小伙伴們在吐司中練習(xí)了SD文生圖的主要流程,但其中有一個核心環(huán)節(jié)是以抄作業(yè)的形式完成的——那就是提示詞書寫。</p><p class="ql-block ql-indent-1">在AI繪圖中,抄作業(yè)確實是快速獲得優(yōu)質(zhì)圖像的一條捷徑,但正如畫師臨摹他人畫作是為了提升自身畫功,我們也不能單純?yōu)槌?,畢竟要是連咒文都不會念,又怎么能算法師呢?</p> <p class="ql-block ql-indent-1">那么接下來,就讓咱們先弄清楚,上次抄的作業(yè)里到底都寫了些什么。先看正向提示詞:1girl,smirk,curly hair,in the dark,deep shadow——直譯:1個女孩,傻笑,卷發(fā),在黑暗中,深深的陰影。</p> <p class="ql-block ql-indent-1">AI繪圖中,提示詞一般可以分為主體框定、特征描述、環(huán)境設(shè)置、風(fēng)格設(shè)定、質(zhì)量控制這六大類。在剛才的提示詞中,我們用到了其中三類:</p><p class="ql-block ql-indent-1">1個女孩——主體框定;</p><p class="ql-block ql-indent-1">傻笑,卷發(fā)——特征描述;</p><p class="ql-block ql-indent-1">在黑暗中,深深的陰影——環(huán)境設(shè)置。</p> <p class="ql-block ql-indent-1">可能有的小伙伴要問了,為啥非得一個詞兒一個詞兒往出蹦呢?直接說整句話它不香么?答案是——<span style="color:rgb(237, 35, 8);">SD不認(rèn)識整句話</span>,即便你寫英文也不行。和傳統(tǒng)搜索引擎類似,SD1.5版本采用的仍然是基于關(guān)鍵詞檢索的輸入體系,對于自然語言的識別是非常有限的,它就像一個剛上小學(xué)的孩子,面對整段話,只會在其中尋找自己認(rèn)識的字、詞和短語來拼湊出大致的語意——所以想要讓它準(zhǔn)確理解你的意圖,<span style="color:rgb(237, 35, 8);">最好挑那些它認(rèn)識的詞進行輸入</span>。當(dāng)然了,SDXL1.0版本在這方面已經(jīng)取得了長足的進步,雖然還達不到chatGPT那種大語言模型的程度,但已經(jīng)基本能夠滿足生圖需求了,這個咱們下期會講。</p> <p class="ql-block ql-indent-1">肯定還有人要問:那我直接輸入中文行不行?其實也不是完全不行,這個咱們同樣放在下節(jié)課去講,現(xiàn)在先繼續(xù)往下來看反向提示詞:(worst quality:2),(low quality:2),(normal quality:2),lowres,watermark,badhandv4,ng_deepnegative_v1_75t——直譯:(最差質(zhì)量:2),(低質(zhì)量:2),(一般質(zhì)量:2),低分辨率,水印,最后兩個不翻譯,原因待會兒說。</p> <p class="ql-block ql-indent-1">不難看出,我們輸入的反向提示詞幾乎全部屬于質(zhì)量控制詞,無論低質(zhì)量、低分辨率還是圖像帶水印都是我們不希望看到的,所以我們就把這些可能出現(xiàn)的結(jié)果直接寫進反向提示詞,以提升成像質(zhì)量。</p><p class="ql-block ql-indent-1">這里有兩個需要注意的點,一是書寫格式??梢钥吹阶畈钯|(zhì)量、低質(zhì)量和一般質(zhì)量三個詞都采用了(提示詞:2)這樣的寫法,如果認(rèn)真看過<a href="http://m.kamkm888.com/4uhft5nz" target="_blank" style="font-size:18px; background-color:rgb(255, 255, 255);">第四課</a>,可能會發(fā)現(xiàn)這和直接通過提示詞調(diào)用LoRA模型時采用的書寫格式<lora:文件名:X>十分相似,這里只不過把尖括號換成了小括號,而最后的數(shù)字X所代表的含義大家還記得嗎?</p> <p class="ql-block ql-indent-1">沒錯,是權(quán)重。所以這里的小括號和冒號就是SD中調(diào)整單個提示詞權(quán)重的語法。<span style="color:rgb(237, 35, 8);">不加任何符號的情況下,提示詞權(quán)重為默認(rèn)值1,每加一個小括號,權(quán)重增加10%</span>,也就是從1增加到了1.1,此時這個位于括號內(nèi)的詞就擁有了比其他詞更高的地位,它所代表的語意也會更受AI重視。如果想要繼續(xù)增加權(quán)重,一種方式是直接套更多的小括號,就比如<span style="color:rgb(237, 35, 8);">(((提示詞)))</span>;另一種方式就是咱們現(xiàn)在使用的<span style="color:rgb(237, 35, 8);">(提示詞:X)</span>,冒號后面的X就是這個詞的權(quán)重值,根據(jù)需要直接輸入即可。這種方式更常用也更方便,<span style="color:rgb(237, 35, 8);">既可以用于增加權(quán)重,也可以輸入小于1的值來減少權(quán)重</span>。</p> <p class="ql-block ql-indent-1">需要注意的另外一個點,就是剛才沒有給大家翻譯的最后兩個負(fù)面提示詞。不翻譯的原因很簡單——<span style="color:rgb(237, 35, 8);">它們并不是提示詞,而是兩個模型</span>,也就是之前在<a href="http://m.kamkm888.com/4u9mmg13" target="_blank" style="font-size:18px; background-color:rgb(255, 255, 255);">第三課</a>末尾提過一嘴但卻一直沒有講的embedding模型。</p> <p class="ql-block ql-indent-1">咱們以前講過,AI成像的過程大致是先把文字轉(zhuǎn)化成空間向量也就是一堆數(shù)字,再把這些數(shù)字以特定的算法轉(zhuǎn)為圖像,而這個把文字變成數(shù)字的過程,其實就是embedding(嵌入),所以顧名思義,embedding模型就是作用于文字轉(zhuǎn)換階段的模型,因為不涉及直接的圖像訓(xùn)練,這類模型通常都很小,只有幾十到數(shù)百Kb,后綴名為.pt,存放在<span style="font-size:18px;">SDwebUI</span>主目錄下的embeddings文件夾里。</p> <p class="ql-block ql-indent-1">在SD發(fā)展初期,曾經(jīng)涌現(xiàn)出大量功能各異的embedding模型,其生態(tài)分布很像現(xiàn)在的LoRA模型,而當(dāng)功能更強效果更好的LoRA模型崛起之后,大部分embedding模型都被取而代之,現(xiàn)在常用的,就只剩下為數(shù)不多的功能型模型,其作用主要集中在對負(fù)面成像效果的修正方面。其中最具代表性也最常見的就是咱們剛才沒有翻譯的badhandv4和ng_deepnegative_v1_75t,分別用于改善手部表現(xiàn)和修復(fù)圖像異常,再加上一個萬金油模型EasyNegative,就組成了SD反向提示詞輸入框里雷打不動的冷板凳三兄弟。一般來說,如果你不確定負(fù)面提示詞應(yīng)該寫點啥,那<span style="color:rgb(237, 35, 8);">把這仨都扔上去就完事了</span>。</p> <p class="ql-block ql-indent-1">由于吐司目前并沒有提供embedding模型的調(diào)用接口,小伙伴們暫時只能通過手工輸入來使用這些模型。為了方便,這里咱們就讓三兄弟并排坐好:</p><p class="ql-block ql-indent-1">badhandv4,ng_deepnegative_v1_75t,EasyNegative</p><p class="ql-block ql-indent-1">大家長按復(fù)制后打開記事本或者到微信傳輸助手粘貼收藏,生圖的時候再把它粘到反向提示詞輸入框里就行啦。</p> <p class="ql-block ql-indent-1">那么這節(jié)課就結(jié)束啦,最近新東西太多,葫蘆叔也得抓緊時間學(xué)習(xí)去嘍~下節(jié)課我會帶領(lǐng)大家整理提示詞書寫的邏輯,順便介紹一下SD的官方最新版本XL1.0,感興趣的小伙伴可以<a href="http://m.kamkm888.com/4vgbprbh" target="_blank" style="background-color:rgb(255, 255, 255); font-size:18px;">點這里繼續(xù)</a>。</p>