Stable Diffusion web UI 訓練超網路(Hypernetwork)教學,讓 AI 學習畫風!

2022/11/20 13,434 2 軟體應用 , 人工智慧 , AI繪圖

多數時候我們向 Stable Diffusion、Waifu Diffusion 等的大型模型輸入提詞(Prompt)以產生圖片,但這樣的模型是用大量實驗室等級的電腦運算出來的,隨便就動輒數 GB 大小,如果有沒收錄到的畫風就沒辦法畫出來,這時候就會用到 Stable Diffusion web UI 訓練小模型的功能了!所謂的小模型就是使用者可以基於大型模型,用不多的素材樣本進行訓練,最後可輸出一些原來無法輸出的圖,如特殊畫風或角色特徵。目前可自行訓練的小模型有兩種,分別是 embedding(Textual Inversion)hypernetwork,模型空間占用是前者較小後者較大,前者適合學習單個物體、角色及簡易的畫風,後者則是適合學習整體畫風用。

這次主要來做訓練超網路(Hypernetwork)的教學,它是一種小型模型,副檔名為 .pt。首先您電腦需要有非常大的 GPU VRAM 可以用(建議 > 10GB),訓練模型非常吃 VRAM,因此如果您準備添購顯示卡來玩 AI,甜品卡 RTX 3060 12G VRAM 會是不錯的選擇。以前就一直非常欣賞常繪製東方角色的繪師60枚,想說利用這個學術研究的機會讓 AI 學習該繪師的畫風,看能做到什麼程度!首先要準備一些要進行訓練的素材樣本,借用繪師公開在平台上的作品,再裁切為 1:1 並建議為 512 x 512 px 的解析度,這邊可用喜歡的軟體或線上工具 Birme 進行,然後建立一個資源集的路徑,可參考我的設置方式:

D:\ai\source -> 原始素材樣本放置區(來源目錄)
D:\ai\destination -> 預處理素材樣本放置區(目標目錄)

※ 備註:建議原始素材樣本要有 30 張或以上,若為角色請只有單人(排除多人),品質高比數量多來的重要。這次我總共處理了 30 張,訓練結果就非常理想,一致性跟高品質的樣本是很重要的。

接著就是打開 Stable Diffusion web UI 開始以下步驟。


▲  進入介面,上方「Stable Diffusion 模型權重存檔點」選取基礎的大型模型以利後續訓練小模型用。選到「訓練」頁籤,進入「生成超網路(Hypernetwork)」,我們要在這邊建立新的 Hypernetwork,名稱自訂好辨識即可,我用 60mai 作為該模型名稱,其他參數就預設值即可,好了就點「生成超網路(Hypernetwork)」,右側會有生成成功提示:

Created: D:\stable-diffusion-webui\models\hypernetworks\60mai.pt


▲  來到「圖像預處理」的部分,這邊要將來源目錄跟目標目錄指定好,這邊主要是做原始素材樣本的預處理,寬高請跟您處理過後的解析度一樣,一定要為 1:1 的比例!勾選「生成鏡像副本」會將原始圖左右水平翻轉產生兩倍樣本,再勾選「使用 deepbooru 生成說明文字(標記)」以產生相關提詞(這邊是針對二次元角色才勾這個,要先安裝這個外掛才能用),點「預處理」開始跑!

▲ 預處理完後可以在指定目錄中看到相關檔案,軟體已經自動生成每張圖可能的對應提詞了!

▲  最後來到「訓練」,超網路(Hypernetwork)選剛剛建立的,其餘參數就先不動,資料集目錄填入預處理完的路徑(我是 D:\ai\destination)。

▲ 日誌目錄建議用預設的,提示詞模版檔案跳過,寬高跟預處理圖像一樣即可(要 1:1 別忘記!),最大疊代步數可自行設定,建議為 10000,這種小模型差不多訓練個一萬步就能用了!RTX 3060 12G 大概要跑 1 個半小時,還算蠻快的。點「訓練超網路(Hypernetwork)」開始訓練。接著就是漫長的等待。

▲ 完成後預設會將最後訓練出來的模型檔放入軟體根目錄 models\hypernetworks 下,這樣就能在「設定」頁籤的「超網路(Hypernetwork)」項目中找到,找不到可點「🔄」重新載入清單,最後記得到上方點「儲存設定」,接著就能以這個超網路小模型生圖了!

▲ 由 500 步訓練到 10000 步的預覽圖,這次訓練成果很理想,AI 有確實學習到特殊的畫風。

▲ 預設日誌在軟體根目錄下的 textual_inversion 中,會用日期再分子目錄,進入後才是小模型名稱的目錄,hypernetworks 目錄放的是指定每幾步(預設 500 步)產生的 .pt 小模型,images 目錄放預覽圖(剛剛秀給大家看的),hypernetwork_loss.csv 檔案存訓練完整過程記錄,我此次的結果如下:

step,epoch,epoch_step,loss,learn_rate
500,8,20,0.2029166,1e-05
1000,16,40,0.1839280,1e-05
1500,24,60,0.2266962,1e-05
2000,33,20,0.1809429,1e-05
2500,41,40,0.2151944,1e-05
3000,49,60,0.2457536,1e-05
3500,58,20,0.1882944,1e-05
4000,66,40,0.2001344,1e-05
4500,74,60,0.2098990,1e-05
5000,83,20,0.1939295,1e-05
5500,91,40,0.1465946,1e-05
6000,99,60,0.1900364,1e-05
6500,108,20,0.1813054,1e-05
7000,116,40,0.1496066,1e-05
7500,124,60,0.1841173,1e-05
8000,133,20,0.2041402,1e-05
8500,141,40,0.1839602,1e-05
9000,149,60,0.1743100,1e-05
9500,158,20,0.1775405,1e-05
10000,166,40,0.1903121,1e-05

一般來說 loss 越低越好,但還是要依照情況去調整使用的小模型。


▲ 軟體讀取超網路小模型的路徑就是 models\hypernetworks,您可以直接將指定訓練步數的模型檔案放進去,就能到「設定」中切換使用。畫面中就是我將最終訓練模型、500 步模型及 5000 步模型放入目錄中給軟體讀取。

來看看最終產圖結果及畫風的變化吧!我使用相同種子碼及各種相同參數去生東方角色「風見幽香」的畫作!

提詞:masterpiece, best quality, best quality,Amazing,beautiful detailed eyes,1girl, solo,finely detail,Depth of field,extremely detailed CG unity 8k wallpaper, {solo focus},(Touhou), (kazami_yuuka:1.2), yellow_ascot, ascot, bangs, breasts, medium_breasts, day, eyebrows_visible_through_hair, field, sunflower, flower_field, frilled_skirt, frills, green_hair, short_hair, hair_between_eyes, long_sleeves, looking_at_viewer, petals, plaid, plaid_skirt, plaid_vest, red_eyes, red_skirt, red_vest, shirt, skirt, standing, vest, wavy_hair, white_shirt, wing_collar. (來源:萌芽二次元)


▲ 左邊是原始不用超網路小模型生出來的圖,右邊是用最終訓練一萬步之超網路小模型生出來的圖,可見 AI 學習到我指定給它的畫風。

▲ 附給大家用訓練了 500 步 (左) 及 5000 步 (右) 之超網路小模型生出來的圖,看來步數越多,畫風影響越明顯。也許再往下訓練會更接近指定繪師的畫風,但也難保證會不會訓練過頭變成鬼畫符,這就考驗 AI 操作技術及運氣了... 希望大家都能訓練出理想的小模型!👍😁

影像僅用於學術研究目的,以上教學僅供參考。

另外用了幾種畫風訓練後得到以下作品,歡迎大家參考:

【AI 繪圖】二次元小蘿莉(第一彈)
【AI 繪圖】二次元小蘿莉(第二彈)
【AI 繪圖】二次元小蘿莉(第三彈)
【AI 繪圖】二次元小蘿莉(第四彈)
【AI 繪圖】二次元小蘿莉(第五彈)

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇