Stable Diffusion的Lora使用和訓練(Stable Diffusion研習系列05)

LoRa的概念
在我們使用LoRa之前,我們需要先介紹下LoRa的概念和作用。
LoRa是基于大模型基礎上,對產(chǎn)生的畫面的一種微調(diào)手段的小模型。如果把基礎模型比喻為游戲引擎,那么LoRa就是相當于游戲mod的存在。他是基于基礎模型上對畫面更具有可控性的一種微調(diào)方式,如果你用的是二次元基模,那么通過真人LoRa也不能出現(xiàn)真人畫面。他只是一個輔助、做些美化,不可能對畫面畫風進行大幅度的修改。
LoRa有很多種類型,有場景LoRa、畫風LoRa、姿勢LoRa、服裝LoRa、汽車LoRa、人物LoRa、甚至有專門某個部位的如眼睛的LoRa、手部的LoRa以及調(diào)光影的影調(diào)LoRa。
LoRa這個名稱可以理解為一個微調(diào)模型的統(tǒng)稱,我們一般說的LoRa模型,其實包括:LyCORIS、LoHa、LoRa、LoCon、LoKR 和 DyLoRA 等,他們的區(qū)別在于因微調(diào)技術的分類和其算法不同。
目前用的較多的還是,傳統(tǒng)的LoRa和LyCORIS兩種,而LoHa模型又是基于LyCORIS上的技術。LyCORIS的表現(xiàn)比傳統(tǒng)的Lora會好些,當然他的模型大小也相對大點,在344M左右,傳統(tǒng)的LoRa則一般在144M或者更小。
?===========================
LoRa的用處
類比大語言模型基礎上,再訓練屬于自己領域特性的微調(diào)語言模型的道理一樣,訓練LoRa模型,是基于大模型基礎上的微調(diào)模型。
最常用的是通過訓練比如特定人物或衣服的 LoRA模型后,就可以在 Prompt 中用一個觸發(fā)詞調(diào)用這微調(diào)模型,從而獲得特定人物或衣服的圖片。
有如下的作用與優(yōu)點:
節(jié)省訓練時間:
可以讓我們用不多的時間里,對特定的目標進行快速地通過模型訓練讓AI學習到后并在之后的使用中可以精準調(diào)用。而不用投入過多的時間精力去訓練大模型。
提高準確性:
使用LoRa模型微調(diào),可以在保持低層模型的特征提取能力的同時,針對具體任務進行優(yōu)化,從而提高模型在特定任務上的準確性。
加快創(chuàng)作速度:
LoRa 模型可以快速生成想法的效果,這些結果可以為創(chuàng)作者提供新的創(chuàng)作靈感,開拓新的設計思路和方向,從而更好地實現(xiàn)自己的設計目標。
可遷移性:
可遷移性意味著可以在不同任務之間共享底層模型,從而減少重復訓練,提高工作效率,使其能夠更快速地從一個任務轉移到另一個任務。
?===========================
LoRa訓練的6個環(huán)節(jié)

我們這里介紹的是傳統(tǒng)的LoRa模型的訓練方式和參數(shù),你們可能會看到不少不同的參數(shù)和訓練方式的內(nèi)容,那是或許是不同的細分模型類型的不同,微調(diào)技術的分類和其算法不同,但訓練步驟和環(huán)節(jié)都基本差不多。
在此我們先將整個訓練過程做個梳理和講解,實操階段可以學習完這篇后,再結合我們推薦的視頻內(nèi)容,你會更容易上手。
01.訓練環(huán)境搭建
我們可以到B站“秋葉aaaki”的視頻內(nèi)容中獲取鏈接,或者到他在GitHub上的鏈接下載安裝訓練所需的腳本。當然,這之前你需要已裝有Python,這在使用Stable Diffusion前已經(jīng)搭建了的環(huán)境。
訓練包LoRa-scripts下載:https://pan.quark.cn/s/d81b8754a484
GitHub地址:https://github.com/Akegarasu/LoRa-scripts
將訓練包下載后解壓縮到自己指定的路徑下即可。我是放在D盤的根目錄下,方便后面訓練調(diào)用和訓練集存放不用挖太深。
02.訓練素材準備
訓練集素材的搜集很重要~!很重要~!很重要~!
對要用于訓練的圖片素材:例如在角色訓練素材中,需要清晰的、多角度的、正臉的、側臉的、最好是背景干凈的、各種表情的、擺頭的。就是需要各種角度(不要有俯視的,盡量都是平視圖避免比例失調(diào))、景別、姿勢、光照。臉部不要有被遮擋的圖片。這樣增加訓練集的多樣性,提高模型的泛化性。



如果是角色訓練集控制在20-50張圖左右,太多會導致過擬合。
如果是訓練其他風格,有說法是圖片越多效果就越好,相應的訓練時長也會增加,建議在50~80張。

影響訓練出的LoRa模型的好壞,訓練集是最最最重要的~!
如果是角色訓練,也建議將需要訓練的人物及相關的特征裝飾都摳出來,背景盡量簡單或直接是純色背景,建議白底或黑底,但不要是透明底。
*素材可以少,但是質量一定要高。?
*角色背景最好是白底網(wǎng)站上面可以選擇換背景顏色
搜集好訓練用的圖像后,需要進行大小的規(guī)范處理,需要是64的倍數(shù)。一般都處理為512*512,也可以是768*768,不建議超過1024,尺寸越大則越吃顯存。
推薦網(wǎng)站可以進行批量的圖像尺寸處理:https://www.birme.net/
?
03.圖像預處理
將裁切規(guī)范后的訓練集圖像文件夾,置入Stable Diffusion中的“訓練”標簽頁中。
所謂的圖像預處理,就是將批量的訓練集中圖像進行批量打標簽,批量給訓練集中的每一張圖像生成一個對應的tag文本文件。

04.打標簽
這個環(huán)節(jié),將對tag文本文件的描述語進行處理,刪除關于描述人物特征的tag,比如你要保留其黑色頭發(fā)作為訓練LoRa的自帶特征,而不會在出圖時頭發(fā)被改為金色,那么這里就要將“black_hair”的描述tag刪除掉。那么在訓練時,AI自動將黑色頭發(fā)與該LoRa綁定,之后的出圖中就不會出現(xiàn)其他顏色的頭發(fā)。還比如微笑的tag,smile,就需要保留,作為這張圖像的面部特征需要告知AI。
因此在檢查tag這個環(huán)節(jié),需要我們手動將AI識別不到,但又需要將其排出在我們LoRa特征之外的tag補齊。這就是為什么我們在挑選訓練集圖像的時候就需要講究越簡單越好。如果你的人物訓練集圖片中只有要的人物和白色背景,那么tag文檔中只需要留下觸發(fā)詞和white backgroud即可。
注意,這個觸發(fā)詞一定要設置,可以是特別的自己好記的英文字母的代名詞。
對于模糊的圖像tag中可以添加動態(tài)模糊的描述詞,對于面部特寫的圖像可以加特寫的tag,讓AI更好地學習。
這里批量處理tag也有小工具軟件輔助,我們推薦的是BooruDatasetTagManager,一個單獨的小工具軟件??梢院芊奖銓氲奈谋疚募M行統(tǒng)一的tag刪減和增加。

將處理好的圖片和文本文檔的文件夾拷貝到訓練用的路徑下,并設定好文件夾下劃線前的循環(huán)訓練次數(shù)值(Num)。這個Num意思是對訓練集的圖像學習的循環(huán)次數(shù)。

批量處理Tag小工具下載鏈接:
鏈接:https://pan.baidu.com/s/1neI2qU8YcsiMLNj7qiPnrA?pwd=1111?
?
05.開始訓練
這里注意,對每次訓練的數(shù)據(jù)最好自己做個文檔記錄,記錄主要的參數(shù)設置,作為之后測試模型效果后進行訓練參數(shù)調(diào)整的參考依據(jù)(我自己記錄的主要參數(shù)有:訓練集照片數(shù)量、Num值、epoch、Dim值、Alpha值、batch size,學習率和采樣器都還是默認的,之后深入學習后可以嘗試)。
訓練時長,總的來說,不宜也不需訓練過長時間。盡可能把訓練時長控制在半小時到一小時內(nèi),時間過長容易導致過擬合,通過調(diào)整等參數(shù)控制訓練時長。即便是batch size值為1,也是如此,這就意味著你的訓練總步數(shù)其實是不需要過多。(當然,時長也跟顯卡的功力也有一定關系,但時長不至于偏差得幾倍去。)
都準備好訓練集后,就是對訓練腳本(目錄LoRa-scripts下,編輯訓練腳本“train.ps1”)進行修改,調(diào)整訓練參數(shù)后,就可以執(zhí)行此腳本文件開始訓練。


Clip用1似乎效果不佳,真是玄學,還是用回2吧,不管是真人還是二次元。
訓練的結果好壞,是否過擬合或欠擬合,就跟我們在腳本中設定的參數(shù)也是有關的。
訓練用的底模,一般用chilloutmix_Ni.safetensors(偏人物)或官方的SD1-5的版本就好,這里最好是將模型先拷貝到訓練程序的相應目錄下D:\LoRa-scripts\sd-models,這樣就不需要將路徑最前面的一個“.”改為“..”。
接著設定訓練集的路徑,將我們保存訓練集圖像文件的路徑復制黏貼入即可。注意如果你沒有將訓練集的文件夾拷貝到程序的目錄下D:\LoRa-scripts\,那么就需要在路徑最前面將[dir=".],改為[dir="..],就是要加多一個小點,訓練集的文件夾不在程序的目錄下調(diào)用。
dim值和alpha值設定,訓練人物一般都設32,64也是可以;訓練風格可以用到128。
分辨率resolution的設定,根據(jù)訓練集的圖片文件的像素來設定即可。
max_train_epochs表示這個訓練跑多少批次(或成為跑多少圈);
save_every_n_epochs表示跑多少圈保存一次模型。
Batch Size表示訓練這些圖片時,每訓練幾次算1步。
總訓練數(shù)=訓練集的圖片數(shù)量*Num值*epoch值
訓練步數(shù)=訓練集的圖片數(shù)量*Num值*epoch值/Batch Size值。
舉例參數(shù)是:34張*10Num*20epoch=6800次。
06.模型測試
煉出的多個模型,如何知曉并篩選出最好用的那個,就需要我們用腳本中的xyz圖表的方式來跑圖測試。
跑圖測試調(diào)用LoRa的方式可以是用Additional Networks中的模型類型和權重來做xy軸,也可以是用提示詞搜索替換的方式來改權重(但這好像只能是對不同權重的比對而無法比對不同的LoRa來比對)。
先將Additional Networks開啟,簡單設置下就好。

再到腳本欄選用xyz圖表,進行各項對比參數(shù)的設置。


?
最后生成的陣列圖中,就可以很直觀地看出哪個模型,在某種權重值情況下表現(xiàn)得最好。至于采樣模式,我個人比較偏好用DPM++ 2M Karras,當然也可以用xyz圖表跑跑看其他幾種不同采樣方法下的模型表現(xiàn)情況,不建議選太多種跑圖。
===========================
LoRa訓視頻講解推薦
對于整個訓練過程的視頻方式的了解和學習,可以參看這2條視頻內(nèi)容,
一條是B站博主“秋葉aaaki”的內(nèi)容的講解:
【AI繪畫】最佳人物模型訓練!保姆式LoRa模型訓練教程 一鍵包發(fā)布】 https://www.bilibili.com/video/BV1fs4y1x7p2/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
一條是B站博主“Easy碩游戲”的講解,特別是針對LoRa訓練很重要的2個環(huán)節(jié),訓練集搜集和打標簽不是很明白的同學可以多看幾遍。
【真人LORA訓練全攻略 !手把手教你 這還不簡單?真人LORA全面教程 stablediffusion教程 SD教程 零基礎入門教程 AI繪畫】?
https://www.bilibili.com/video/BV1Hs4y1D7QJ/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
?===========================
深入學習推薦:
關于LoRa的相關名詞概念還有:過擬合&欠擬合、泛化性、正則化、分層控制、分類圖集、
大家也都可以根據(jù)這些關鍵詞在B站搜索后,做進一步的觀看學習。
?
過擬合和欠擬合,我們可以簡單地理解為訓練不夠和訓練過頭了。
泛化性,我們可以簡單理解為適用性。
這兩組概念,表現(xiàn)不好,都是不好的現(xiàn)象。我們在模型訓練中需要不斷對訓練集、正則化、訓練步數(shù)等參數(shù)進行調(diào)整(這也是為什么我們在初期訓練LoRa時需要做好每次訓練參數(shù)的記錄的原因)。
過擬合可以嘗試減少訓練集的素材量,欠擬合就增加訓練集的素材量。
最終目的是讓模型最終得到我們想要的效果。
正則化是解決過擬合和欠擬合的情況,并提高泛化性的手段。
相當于給模型加一些規(guī)則和約束,限制要優(yōu)化的參數(shù)有效防止過擬合,同時也可以讓模型更好適應不同情況的表現(xiàn),提高泛化性。
【優(yōu)化器和學習率】
對于優(yōu)化器的了解和學習,可以看看這條內(nèi)容的講解:
【如何訓練一個非常像的真人LoRa模型(深度探討)】?
https://www.bilibili.com/video/BV1Ba4y1M7LD/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
【分層控制】
對于分層控制的了解和學習,可以參看這條內(nèi)容的講解:
【AI繪畫】LoRa進階教學!分層控制篇】?
https://www.bilibili.com/video/BV1CV4y1Q77p/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
【LoRa的提取/合并/降維/融合】
對于LoRa模型的提取、合并、降維、融入基模的了解和學習,可以看這條內(nèi)容的講解:
這是借助一款叫SuperMerger插件,可以解決對LoRa有其他使用和生成的便捷方式。
【AI繪畫進階教程】SuperMerger插件詳解 提取LoRa模型? 合并LoRa模型? LoRa模型降維?LoRa模型融入大模型?】
https://www.bilibili.com/video/BV1pV4y1Q7Bi/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
【用Konya_SS訓練LoRa】
對于LoRa模型訓練的其他方式,如Konya_SS,可以參看這條內(nèi)容的講解:
【2023最新版】LORA安裝和訓練指南 | 高質量模特養(yǎng)成 | 教你打造自己專屬的迷人模特】 https://www.bilibili.com/video/BV1EM411g7He/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
?
【用Dreambooth訓練LoRa】
對于LoRa模型訓練的方式也有用Dreambooth插件訓練,可以參看這條內(nèi)容的講解:
【AI繪畫進階教程】Stable Diffusion-LoRA模型訓練-安裝及基礎概念教學 臺灣大神手把手教你調(diào)教】
https://www.bilibili.com/video/BV1W54y1M7SV/?share_source=copy_web&vd_source=96188266665c90578cc52f2450fb0552
?
常用到的基礎模型和插件(持續(xù)更新中)以及本期的插圖文件也做了一份在云盤
鏈接:https://pan.baidu.com/s/1c9utQmWlGcRqLTr_kftTyA?pwd=1111?
本系列的下一期我們將跟大家聊聊讓StableDiffusion能有如此強大能力的插件ControlNet。
=========================
加入我們:
歡迎關注我們公眾號,共同研習。
也歡迎掃碼入群,與我們有更多的探討。
?

?