通過Lora小模型可以控制很多特定場景的內容生成。
但是那些模型是別人訓練好的,你肯定很好奇,我也想訓練一個自己的專屬模型(也叫煉丹~_~)。
甚至可以訓練一個專屬家庭版的模型(family model),非常有意思。
將自己的訓練好的Lora模型放到stableDiffusion lora 目錄中,同時配上美麗的封面圖。
(plen_me、plen_vivi,這兩個是我訓練的和家裡人的模型~_~)
這樣就可以將你的Lora模型和其他Lora模型融合使用了。
再配上Controlnet基本可以,將自己的pose+特徵融入到其他任何lora模型中。
【1】
下面我們看下如何訓練自己的模型。
(我的煉丹爐設定,win10+i7F+4080 )
首先,Lora模型可以通過lora-scripts 指令碼進行訓練。
倉庫地址:https://github.com/Akegarasu/lora-scripts
找個目錄拉下來,先安裝sd-scripts子專案,然後安裝lora-scripts專案。
(敲黑板)重點看下sd-scripts 子專案:
https://github.com/kohya-ss/sd-scripts/tree/b5c60d7d62d6bb4a174ac09327dc517fc4446523
要嚴格按照作者給的步驟安裝。(要不然會有很多奇怪的問題)
如果順利的話大概安裝需要30min左右。(需要kexue上網應該就不用多介紹了)
【2】
接下來準備需要訓練的圖片。
根據最後的生成效果,要找頭像清晰的,臉部輪廓清楚的,背景最好是白色的。
然後就需要我們將圖片進行預處理。
先將圖片放在一個資料夾裡,然後定一個預處理之後的資料夾名字。
然後在stablediffusion中找到【訓練】【影象預處理】模組
按照說明,填入預處理圖片路徑和目標目錄,然後選擇【Deepbooru生成標籤】。然後點選【Preprocess】,等處理完成。
到目標目錄下,看下生成的標籤資訊。
這些標籤就是訓練模型的圖片特徵了,基本上生成出來的標籤還是要check下。
如果某個重要的標籤丟失,或者識別錯誤(girl識別成boy ~_~)會直接影響煉丹質量。
【3】
將預處理目標資料夾複製到lora-scripts指令碼的主目錄的train目錄中。(如果沒有就建立一個)
如果你有多個訓練集合可以在train中建立一個目錄,然後放到這個目錄中。
訓練自己的專屬模型,需要依賴一個主模型。真人特徵的模型貌似用 chilloutmix_NiPrunedFp32Fix 比較流行(這個模型很強大,你懂的!)。
模型地址:
https://huggingface.co/naonovn/chilloutmix_NiPrunedFp32Fix/tree/main
將下好的模型檔案複製到lora-scripts->sd-models資料夾中。
【4】
準備工作差不多了,我們編輯下訓練指令碼。
lora-scripts目錄中的train.ps1 指令碼檔案。
# Train data path | 設定訓練用模型、圖片
$pretrained_model = "./sd-models/chilloutmix_NiPrunedFp32Fix.safetensors" # base model path | 底模路徑
$train_data_dir = "./train/test" # train dataset path | 訓練資料集路徑
$pretrained_model:就是我們下載的訓練模型的基礎模型,把名字換掉。
$train_data_dir:訓練資料目錄。
# Train related params | 訓練相關引數
$resolution = "512,512" # image resolution w,h. 圖片解析度,寬,高。支援非正方形,但必須是 64 倍數。
$batch_size = 2 # batch size
$max_train_epoches = 20 # max train epoches | 最大訓練 epoch
$save_every_n_epochs = 2 # save every n epochs | 每 N 個 epoch 儲存一次
$resolution:如果你的圖片預處理的時候沒有調整過,這裡就保持預設。
$batch_size、$max_train_epoches:如果你的卡不是很強,這裡的引數可以小一點。(這兩個引數主要控制訓練的次數和視訊記憶體載入的張量資料集)。
# Output settings | 輸出設定
$output_name = "meoutput" # output model name | 模型儲存名稱
$output_name:用預設的也行,最好自定義一個名字,避免重複生成覆蓋原來模型。
儲存,然後右鍵 【使用PowerShell執行】。
(這裡還是要祈禱下,不一定能一次成功。~_~)
指令碼在執行過程中會出現一些'triton'載入失敗的錯誤。
但是其實不影響模型的訓練(我查了下好像是windows電腦就不支援這個模組)。
這裡的錯誤如果不能正常執行,大概率是前面敲黑板的地方你沒有仔細看。
等模型訓練完。(我15張圖,大概跑了10min左右。)
我們看下output目錄輸出的模型檔案。
這裡的模型檔案儲存的個數,是train.ps1指令碼檔案裡設定的。
最後我們要通過驗證這些模型準確度,選用哪一個。
【5】
將這些模型檔案全部複製到
E:\stable-diffusion-webui\extensions\sd-webui-additional-networks\models\lora
對應的擴充套件忙碌下。
如果還沒有安裝 sd-webui-additional-networks 擴充套件,記得先到擴充套件中安裝。
也可以直接用git地址安裝(有時候這個擴充套件查詢有點問題)
https://github.com/kohya-ss/sd-webui-additional-networks.git
然後我們測試下這幾個模型哪一個不錯。
順利安裝外掛之後,就可以在介面上看到 【Additional Networks】功能選單。
要測試自己的模型,基礎模型還是要選用我們訓練的 chilloutmix_NiPrunedFp32Fix 模型。
prompt可以用自己提取的標籤作為測試。
批次可以適當多點,到時候可以選擇。
這個過程大概需要個20min左右。(可以喝點茶等待創作了~_~)。
來一起見證AI的創作吧 ~~!
圖片的上方是每一個模型名稱,左邊是特徵權重,組成的一個二維表格。
有點那個意思 hhh。
下面這些就有點辣眼睛了 。
根據自己的眼光,我們挑選一個相對比較不錯的模型。
整體覺得這個模型不錯,我們記下模型的名字。
將這個模型複製到 E:\stable-diffusion-webui\models\Lora 目錄中。
可以給你的模型配上一個封面,只要檔名和模型名一樣就可以了。
【6】
有了自己的專屬模型,就可以結合其他lora模型一起使用了。
我們試下水墨風格。
下載lora模型:Moxin_10
下載基礎模型:dalcefoPainting_3rd.safetensors
(有些基礎模型在C站沒有,可以到huggingface上找找,再不行github上肯定有)
點開這個紅色的收縮面板。
重新整理一下,讓lora模型檔案重新載入下。
然後選擇我們儲存的lora檔案,此時這個模型的prompt設定會在文字方塊裡。
然後再選擇水墨風模型 Moxin。
調整下每一個模型的權重,此時可以將我們自己的模型特徵調大些。
如果沒啥問題,我們就去C站找這個lora比較好的prompt拿過來用。
這張雖然有點辣眼睛,但是特徵是有了。
這一張比較像我女兒 ~_~。
最後,stablediffusion+lora等AIGC屬於開掛技術,我們還是要遵紀守法做一個好同志!!!