多数时候我们向 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 操作技术及运气了… 希望大家都能训练出理想的小模型!
??

影像仅用于学术研究目的,以上教学仅供参考。

发表回复

后才能评论
casibom