今天來聊一個我覺得是Script(腳本區)裡面最好用,也是最常用,但是有點複雜的進階功能,X/Y/Z plot。
前言
很多時候,我們有許多重複跑圖,但是一次只改一點點的需求,例如你算到了一個你很喜歡的角色形象,想要使用一樣的提示詞,但是一次改一點東西,例如改變髮色比例,更改服裝,更改一些動作,然後製造大量的圖用做訓練LoRA的範例圖。或者單純是想跑出一個你更喜歡的變體。
或者,你剛訓練完一個新版的LoRA,想要比較新舊版之間的差別,例如權重高低時影響畫面的程度,CFG Scale不一樣會造成什麼改變,改變提示詞會不會被新版LoRA覆蓋掉。
在什麼都不知道的情況下,我們只能一張一張生產,等上一張算好之後再手動更改提示詞,然後繼續跑下一張。這種作法不只無聊,也很容易出錯,如果要測量的選項太多還會累死人,消耗時間與熱情。所以Automatic1111非常貼心地幫我們準備了一個功能,讓我們可以一次跑出大量有細小差別的圖,那就是X/Y/Z plot。
用法
X/Y/Z plot是什麼意思?它的XYZ指的是,我們可以最多設定三種方向的變數讓我們跑圖,例如X方向上選擇提示詞,Y方向上選擇Sampling Steps,Z方向上選擇模型,這樣就能測試在不同模型上,不同Sampling Steps對上不同提示詞所造成的影響。
舉一個例子,當我算出了一個猛男戰士之後,想要快速嘗試不同動作加上不同衣著上的表現,我們就可以選擇X方向上是一組動作提示詞,Y方向上是一組衣著的提示詞。
當我們在Script選單選擇X/Y/Z plot之後,會出現這樣的選單:
打開X type,裡面有一堆選項,裡面比較常用到的是:
- Nothing:什麼都不做
- Steps:訓練步數
- CFG Scale:CFG程度
- Prompt S/R:提示詞搜尋並取代
- Sampler:採樣器
- Checkpoint name:模型
- Styles:你儲存的提示詞
這裡面Prompt S/R是最常用,但也是最難理解的選項,它的用法就是用逗號隔開一組提示詞,而第一個提示詞必須符合一個你的正面或負面提示詞,只要它能找到,就會在之後的圖取代這個提示詞。
例如我的正面提示詞中有(resting)這個提示詞,我就能用這樣的Prompt S/R來取代它:
(resting), (sitting), (standing), (fighting), (angry), (riding horse)
於是Automatic1111就能先跑出該角色休息的圖,然後下一張換成坐下的圖,以此類推。
而且X/Y/Z plot並不限制你只能用一次Prompt S/R,所以理論上XYZ三個軸都能用不同的詞來探索。以我的例子,我的X/Y/Z plot會像是這樣:
而我為了讓每次跑的時候出現的圖盡量產生差異,我會勾選Keep-1 for seeds,讓每張圖都使用亂數種子算圖。
當你按下Generate鈕之後,就可以去睡個午覺了,通常一次都可以跑個十幾二十張。等到你回來,Automatic1111會給你一個拼接的預覽圖:
在這圖上,從左到右是X軸,從上到下是Y軸。 而這些算出來的圖,則是會放在一般圖生圖的目錄內。
LoRA比較
我個人在用X/Y/Z plot時,最常用的情況是在訓練LoRA時。當我們用了不同的素材,不同的參數或不同的程式版本烘焙LoRA的時候,比較新舊版本的優劣,尤其是LoRA在不同模型時能否正確產生我們要的角色,又不會強烈改動模型風格,就是決定人物型LoRA品質的指標,這時候X/Y/Z plot就非常有用。
例如我想要查看我的舊版LoRA與新版LoRA在不同模型下,不同動作的樣子,我就會設定成:
- X軸:Checkpoint name = 三個不同模型
- Y軸:Prompt S/R = 五個不同動作
- Z軸:Prompt S/R = 新的與舊的LoRA,權重都是0.3
下面就是我跑出來的成果:
預覽圖會有兩種版本,檔案較小的JPG檔,和非常巨大但無失真的PNG檔案。要做深度比較的時候,可以開啟PNG檔在大螢幕上仔細比較。
另外,LoRA自己也能跟自己不同權重做比較,讓你找出在不同模型下,哪個權重是甜蜜點:
順帶一提,我的舊版LoRA在權重0.8的時候就全部崩潰了,不管是哪個模型,出來的動作與背景都一樣。這表示舊版的LoRA品質不佳,而在我新訓練的LoRA上就不太會出現這種情形。這就可以讓我有足夠信心了解我的新版LoRA品質較穩定,可以順利取代舊版。
結語
以上就是我常用的X/Y/Z plot情境,希望可以節省大家手動輸入各種設定,無聊等待跑圖出結果,然後又改詞改設定再跑的時間。
祝大家AI算圖愉快!
進階技巧目錄: