Stable Diffusion 教學 - web UI 提示詞 (Prompt)
本篇文章介紹 Stable Diffusion web UI 提示詞 (Prompt) 的特殊語法。提示詞為我們描述要產生圖片的主要內容,除了一般的描述用法之外,還有一些特殊的寫法和功能。
權重
提示詞和反向提示詞都可以使用括號來修改特定的關鍵字權重:
1 | (apple:1.5) |
原始的文字權重都是 1,使用括號可以修改權重,上面例子 apple
權重提高為 1.5,banana
則降低為 0.8。
另一種方式是直接提高或降低 1.1 倍:
1 | (apple) |
上面例子 apple
使用括號提升 1.1 倍,banana
使用中括號降低為 1 / 1.1 = 0.9090909…
上面這方式可以多次包裹來疊加:
1 | ((apple)) |
apple
相當於 1.1 * 1.1 = 1.21,banana
則相當於 1 / 1.1 / 1.1 = 0.826446280991736。基於這個規則下面兩個寫法意思相等
(apple)
等於(apple:1.1)
((apple))
等於(apple:1.21)
權重範圍
建議範圍 0 ~ 1.5,要寫很大的數字,甚至負數都可以運作。不過數字超過 1.5 之後圖片有機會開始逐漸崩壞,數字到 2 的時候可能出現一些很詭異的結果。例如使用提示詞 banana, phone, cherry, candle, table
產出結果如下:
由於沒出現 phone,所以提升權重 1.5 試試看:
以下是持續提升 phone 權重的結果:
1.6 | 1.8 |
---|---|
2 | 3 |
---|---|
可以看到結果越來越奇怪,到 3 已經看不到東西了。反過來使用負數的結果如下:
-1 | -2 |
---|---|
可以看到 -2 也已經不知道 AI 在想什麼了。
跳脫字元 (Escape Character)
有時候有些關鍵字也包含括號,例如:asuna_(sao)
。為了讓程式能區別這不是要加強權重,可以使用反斜線 (\
) 來表示他是提示詞的內容,而不是加強權重。於是我們可以寫成 asuna_\(sao\)
,這裡我們稱反斜線為跳脫字元或逸出字元 (Escape Character)。
提示詞編輯 (Prompt editing)
提示詞可以使用下面的特殊寫法,讓 AI 在製圖過程中替換關鍵字:
1 | [from:to:when] |
- from: 原本的關鍵字
- to: 新的關鍵字
- when: 在第幾個 step 的時候變換,可以是整數表示明確的 step 數,或者是小數表示百分比。例如 10 表示第 10 step,0.5 表示 50% 的時候。
例如 [dog:cat:0.5]
表示先畫狗,在畫到一半之後,改畫貓。下面我們先畫完整的狗:
接著我們分別測試下面兩種比例
[dog:cat:0.5] | [dog:cat:0.2] |
---|---|
0.5 畫到一半的時候才改成貓,結果來不及,會像是兩者融合。0.2 則來得及更改為貓。
另一個用法也可以不填入 from:
1 | [to:when] |
to 和 when 定義和前面一樣,由於沒有 from,這裡表示在第幾個 step 才開始帶入 to。例如 [cat:0.5]
表示畫到一半的時候,才開始畫貓。下面為一張隨意生成的圖片:
加入 [cat:0.5]
之後的結果:
第三種用法是不填入 to:
1 | [from::when] |
這表示原本有帶入 from 關鍵字,但在途中移除這個字。例如 [dog::0.5]
表示一開始有要求畫狗,但畫到一半的時候就不用畫狗了。下面為提示詞 dog, cat
生成的圖片:
改成 [dog::0.2], cat
之後的結果:
交替文字
可以使用以下的寫法,讓每個 step 帶入的關鍵字都不同
1 | [文字1|文字2|....] |
例如 [dog|cat]
表示第一個 step 畫狗,第二個 step 畫貓…如此交替到結束。以下為一個 [dog|cat|cow]
的範例
子模型
提示詞也可以使用大於小於的寫法,標示出要使用 Lora 之類的子模型:
1 | <lora:filename:multiplier> |
使用提示詞檔案須放置在下面路徑,詳細說明可以參考 Stable Diffusion 教學 - web UI Extra Networks:
1 | stable-diffusion-webui/models/Lora |
延伸閱讀
上一篇 Stable Diffusion 教學 - web UI 批次圖生圖 (Batch)
下一篇 Stable Diffusion 教學 - 種子 (Seed)