Stable Diffusion Prompt(提示詞)語(yǔ)法控制【提示詞語(yǔ)法篇】

前言
閱讀本篇之前,已假定你有了一定的Stable diffusion的創(chuàng)作基礎(chǔ),已經(jīng)知道怎么去輸入自然語(yǔ)言表達(dá)和標(biāo)簽語(yǔ)言表達(dá),現(xiàn)在為追求更細(xì)節(jié)的權(quán)重控制和邏輯控制。

權(quán)重控制
提示詞tag元素的權(quán)重總體原則是有先后順序的,越靠前的提示詞,影響會(huì)越大,這也就是我們常常見到的提示詞一般都是遵循先描述整體畫風(fēng)畫面,再描述局部畫面,最后控光影效果,但通過實(shí)踐來看如果不對(duì)個(gè)別元素加以控制,只簡(jiǎn)單的堆砌提示詞,權(quán)重效果并不是那么明顯,因此我們需要通過使用語(yǔ)法,來使得我們更精細(xì)的控制我們想要的輸出結(jié)果。
加權(quán)
1. "()",小括號(hào),指的是將括號(hào)里的元素提升1.1倍權(quán)重,可以通過嵌套的方式進(jìn)一步加權(quán),比如(red dress)代表red dress提升1.1倍權(quán)重,((red dress))則代表1.1*1.1=1.21倍權(quán)重,但是這樣調(diào)整起來也會(huì)比較麻煩,實(shí)踐當(dāng)中一般用(red dress: 1.5)這樣的方式來控制權(quán)重。
2. "{}",大括號(hào),指的是將括號(hào)里的元素提升1.05倍權(quán)重,同理,也可以通過多層嵌套實(shí)現(xiàn)復(fù)數(shù)加權(quán),但是與小括號(hào)不同的地方是,并不支持{red dress: 1.5}這樣的表達(dá)。
- 實(shí)際運(yùn)用中,較少使用大括號(hào),用小括號(hào)居多,因?yàn)檎{(diào)整起來也比較便捷。
降權(quán)
“[]”,中括號(hào),指的是將括號(hào)里的元素權(quán)重除以1.1,也就相當(dāng)于1/1.1=0.90909090……,大約相當(dāng)于降成0.9權(quán)重,同理,也支持多層嵌套的方式,但是,與大括號(hào)類似,也不支持[red dress:0.8]這樣的表達(dá),實(shí)踐當(dāng)中,如果想方便調(diào)整,降權(quán)也是用小括號(hào)里加數(shù)字會(huì)比較方便
小結(jié)
實(shí)踐當(dāng)中,無論是加權(quán)或者是降權(quán),都習(xí)慣用小括號(hào)居多,方便調(diào)整,書寫簡(jiǎn)單。

邏輯表達(dá)
邏輯表達(dá)會(huì)用到+、|、:等邏輯表達(dá)符號(hào),往往用來控制一些細(xì)節(jié)或者實(shí)現(xiàn)融合體等效果。
元素融合
元素融合一般采用"|"或者“:”符號(hào)。
1. "|",用豎杠的話,會(huì)在兩個(gè)元素之間循環(huán)往復(fù)繪制,相當(dāng)于邏輯OR,以此來達(dá)到元素融合的效果。比如,我想實(shí)現(xiàn)紅色和藍(lán)色頭發(fā)漸變效果,可以寫成red hair | blue hair,Stable diffusion處理這兩個(gè)tag時(shí),會(huì)按照畫一步紅頭發(fā),畫一步藍(lán)頭發(fā)循環(huán)往復(fù)的方式進(jìn)行。這種這種表達(dá)方式也支持加權(quán)(red hair:1.2) | (blue hair:1.3),用豎杠來元素融合,可以不必考慮兩個(gè)元素之間的權(quán)重之和是否等于100%。
2. ":",用冒號(hào)的話,書寫起來跟豎杠有一些差異,表達(dá)式為:"tag1:tag2:權(quán)重1:權(quán)重2",比如,我想畫一個(gè)現(xiàn)實(shí)中不存在的生物,可以寫成cat:dog:0.5:0.5,要特別注意的是,權(quán)重總和要為100%,如果超過了100%,容易出現(xiàn)失控的現(xiàn)象,雖然我試過小于100%,肉眼沒看出什么問題,但建議還是控制總和為100%比較好。
3. 用":"的另一種方法,"tag1:tag2:切入時(shí)機(jī)",其中,切入時(shí)機(jī)為0~1之間的一個(gè)數(shù)值,舉例:red hair:blue hair:0.5,會(huì)在前面50%的步驟畫紅頭發(fā),后面50%的步驟畫藍(lán)頭發(fā),假設(shè)你的采樣步數(shù)是30,那么30*0.5=15,代表前15步畫紅頭發(fā),后面15步畫藍(lán)頭發(fā)。切入時(shí)機(jī)也可以直接寫步數(shù)比如red hair:blue hair:15。
元素控制
1. 多元素控制,"+",用加號(hào)表示的是同時(shí)滿足兩個(gè)元素條件,"+"與"AND"作用一樣,一般來說,用來控制一些微觀細(xì)節(jié),比如beach AND umbrella
2. 單元素控制,控制什么時(shí)候開始畫什么元素,表達(dá)式:"[tag:切入時(shí)機(jī)]"、"[tag::退出時(shí)機(jī)]"。舉例:hat:5,表示第五步時(shí)開始畫帽子,直到結(jié)束,hat::20,代表是從一開始就開始畫帽子,但是到第20步停止。用這種方式的時(shí)候,要注意采樣步數(shù)不能太短,那么問題來了,如果我希望從第5步開始畫,第20步結(jié)束呢?那得寫成[[hat::20]:5]這樣。
小結(jié)
實(shí)踐當(dāng)中,邏輯表達(dá)主要是控制元素之間的細(xì)節(jié)呈現(xiàn),但建議不要搞的太復(fù)雜,一來投入產(chǎn)出比不合適(肉眼也難分辨細(xì)節(jié)),而來太復(fù)雜自己也會(huì)暈。

總結(jié)
無論是賦權(quán)或者邏輯表達(dá),都受限于模型本身影響、采樣方法、采樣步數(shù)等因素的影響,上述內(nèi)容為一般通用的控制方法,有些模型,作者本身會(huì)額外提供一些控制方式和表達(dá)方式,使用期,要仔細(xì)閱讀作者提供的文檔,應(yīng)根據(jù)具體模型的文檔確定正確用法。
此外,Prompt關(guān)鍵詞tag也不是越多越好,跟圖片分辨率之間也有很大的影響關(guān)系,如果分辨率低,tag過多,會(huì)產(chǎn)生tag元素“相互污染”。