本篇文章介紹 Stable Diffusion web UI 提示詞 (Prompt) 的特殊語法。提示詞為我們描述要產生圖片的主要內容,除了一般的描述用法之外,還有一些特殊的寫法和功能。

權重

提示詞和反向提示詞都可以使用括號來修改特定的關鍵字權重:

1
2
(apple:1.5)
(banana:0.8)

原始的文字權重都是 1,使用括號可以修改權重,上面例子 apple 權重提高為 1.5,banana 則降低為 0.8。

另一種方式是直接提高或降低 1.1 倍:

1
2
(apple)
[banana]

上面例子 apple 使用括號提升 1.1 倍,banana 使用中括號降低為 1 / 1.1 = 0.9090909…

上面這方式可以多次包裹來疊加:

1
2
((apple))
[[banana]]

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 試試看:
權重 1.5

以下是持續提升 phone 權重的結果:

1.61.8
權重 1.6權重 1.8
23
權重 2權重 3

可以看到結果越來越奇怪,到 3 已經看不到東西了。反過來使用負數的結果如下:

-1-2
權重 -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]
dog:cat:0.5dog:cat:0.2

0.5 畫到一半的時候才改成貓,結果來不及,會像是兩者融合。0.2 則來得及更改為貓。

另一個用法也可以不填入 from:

1
[to:when]

to 和 when 定義和前面一樣,由於沒有 from,這裡表示在第幾個 step 才開始帶入 to。例如 [cat:0.5] 表示畫到一半的時候,才開始畫貓。下面為一張隨意生成的圖片:
風景原圖

加入 [cat:0.5] 之後的結果:
cat:0.5

第三種用法是不填入 to:

1
[from::when]

這表示原本有帶入 from 關鍵字,但在途中移除這個字。例如 [dog::0.5] 表示一開始有要求畫狗,但畫到一半的時候就不用畫狗了。下面為提示詞 dog, cat 生成的圖片:
貓狗原圖

改成 [dog::0.2], cat 之後的結果:
dog::0.2

交替文字

可以使用以下的寫法,讓每個 step 帶入的關鍵字都不同

1
[文字1|文字2|....]

例如 [dog|cat] 表示第一個 step 畫狗,第二個 step 畫貓…如此交替到結束。以下為一個 [dog|cat|cow] 的範例
dog|cat|cow

子模型

提示詞也可以使用大於小於的寫法,標示出要使用 Lora 之類的子模型:

1
2
<lora:filename:multiplier>
<hypernet:filename:multiplier>

使用提示詞檔案須放置在下面路徑,詳細說明可以參考 Stable Diffusion 教學 - web UI Extra Networks

1
2
stable-diffusion-webui/models/Lora
stable-diffusion-webui/models/hypernetworks

延伸閱讀

上一篇 Stable Diffusion 教學 - web UI 批次圖生圖 (Batch)
下一篇 Stable Diffusion 教學 - 種子 (Seed)