自給自足?實用簡明Lora訓練教程

如果想要快速訓練,使用B站up主秋葉的整合包搭配視頻【AI繪畫】最佳人物模型訓練边器!保姆式LoRA模型訓練教程 一鍵包發(fā)布_嗶哩嗶哩_bilibili即可.

訓練的基本邏輯就是首先進行預(yù)處理,可以通過stable diffusion web ui中的預(yù)處理,也可以通過ps這種圖片處理軟件,比如我想訓練一個某動漫角色的Lora模型,那就需要這個角色的一些圖.

當然有了圖之后,也需要標注,也就是label標簽,可以選擇deepbooru或者BLIP生成標注數(shù)據(jù).

然后進行配置訓練參數(shù),如果用的有GUI的直接讀入配置json文件即可.下面是一套低顯存配置.

{
  "pretrained_model_name_or_path": "runwayml/stable-diffusion-v1-5",
  "v2": false,
  "v_parameterization": false,
  "logging_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/log",
  "train_data_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/img",
  "reg_data_dir": "",
  "output_dir": "C:/Users/ohmni/AI/SAMPLE IMAGES/ADAMS/LORA OUTPUT/model",
  "max_resolution": "512,512",
  "learning_rate": "0.0001",
  "lr_scheduler": "constant",
  "lr_warmup": "0",
  "train_batch_size": 1,
  "epoch": "1",
  "save_every_n_epochs": "1",
  "mixed_precision": "fp16",
  "save_precision": "fp16",
  "seed": "1234",
  "num_cpu_threads_per_process": 2,
  "cache_latents": true,
  "caption_extension": ".txt",
  "enable_bucket": false,
  "gradient_checkpointing": true,
  "full_fp16": false,
  "no_token_padding": false,
  "stop_text_encoder_training": 0,
  "use_8bit_adam": true,
  "xformers": true,
  "save_model_as": "safetensors",
  "shuffle_caption": false,
  "save_state": false,
  "resume": "",
  "prior_loss_weight": 1.0,
  "text_encoder_lr": "5e-5",
  "unet_lr": "0.0001",
  "network_dim": 128,
  "lora_network_weights": "",
  "color_aug": false,
  "flip_aug": false,
  "clip_skip": 2,
  "gradient_accumulation_steps": 1.0,
  "mem_eff_attn": true,
  "output_name": "Addams",
  "model_list": "runwayml/stable-diffusion-v1-5",
  "max_token_length": "75",
  "max_train_epochs": "",
  "max_data_loader_n_workers": "1",
  "network_alpha": 128,
  "training_comment": "",
  "keep_tokens": "0",
  "lr_scheduler_num_cycles": "",
  "lr_scheduler_power": ""
}

實際配置的時候,可以多在C站看看好的Lora模型然后拉到stable-diffusion中看看別人的訓練信息.

然后存訓練的圖片也有講究,文件夾命名有格式要求,這里后面細說.

流程梳理

主要使用derrian-distro/LoRA_Easy_Training_Scripts: A set of two training scripts written in python for use in Kohya's SD-Scripts repository. (github.com)這個倉庫學習.

下載安裝即可,Windows平臺下載installer.py文件,作者推薦使用3.10.6,當然3.10版本應(yīng)該都能跑.

<img src="https://s2.loli.net/2023/04/19/Y6SarqXbRyIU3Ki.png" alt="image-20230419215740689" style="zoom:67%;" />

腳本會詢問是否安裝一些可選項,我基本沒有裝特別的.

[圖片上傳失敗...(image-d34da9-1682243737343)]

數(shù)據(jù)集準備

安裝完成后開始準備數(shù)據(jù)集,推薦兩個圖片搜集軟件,這樣不用自己到處爬取了.一個是Grabber和Hydrus.我用了一下,Grabber是不錯的,下載鏈接在參考資料里.

此外還可以使用Release first release · derrian-distro/Quick_Image_Sort (github.com)來進行圖片整理排序.

圖片裁剪和修改

圖片的分辨率影響模型的生成,同時也要注意你機器的配置,比如512x512是一般8G以上的圖片大小,最好將獲取的圖片裁剪或調(diào)整到相同的分辨率同時可以進行重命名.這寫步驟可以在一些在線圖片編輯網(wǎng)站BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free)操作,web ui中也有相關(guān)選項用于圖片裁剪.同時注意圖片中背景處理,可以使用Cleanup.pictures - Remove objects, people, text and defects from any picture for free清除圖片中的一些東西.

數(shù)據(jù)集打標簽與編輯標簽

如果使用Grabber下載圖片,可以直接設(shè)置下載圖片的同時得到標簽文件.設(shè)置如下

<img src="https://s2.loli.net/2023/04/21/6fMnyFKOdgaibW2.png" alt="image-20230421194316595" style="zoom:50%;" />

<img src="https://s2.loli.net/2023/04/21/yphdqStR8AHF4xU.png" alt="image-20230421194257509" style="zoom: 50%;" />

也可以參考鏈接https://i.imgur.com/XHvfAkj.png

如果要獲取自己的圖像文件標簽并編輯,可以使用很多軟件,比如stable diffusion web ui的插件,比如stable-diffusion-webui-wd14-taggerstable-diffusion-webui-dataset-tag-editor.

或者使用軟件https://github.com/starik222/BooruDatasetTagManager編輯標簽.值得一提的是這里的"標簽"一般叫caption或者tag.

<img src="https://s2.loli.net/2023/04/21/3z2iNLMyJVlHa9R.png" alt="image-20230421201313975" style="zoom:50%;" />

除了stable-diffusion web ui中有打標簽的,本身kohya_ss的GUI也有打標功能

<img src="https://s2.loli.net/2023/04/23/tl3FcAoI5ajW8iY.png" alt="image-20230422113936860" style="zoom:67%;" />

本質(zhì)上是使用一些已有的模型得到圖片的信息亏吝。

有了生成的標簽后需要自己對標簽進行一些處理,這里的處理是為了后面訓練lora達到效果,一般叫pruning captions.

Pruning Captions

一般的準則:

  1. 如果你要訓練一個畫家作品的Lora,那給這些作品打標簽時需要去掉關(guān)于這個作家的標簽,如果是一個人物Lora,那需要去除人物的名字相關(guān)tag以及一些決定性的特征.這樣這種風格或人物就存在與其他標簽上.
  2. 剔除任何應(yīng)該隱含在所有生成結(jié)果中的標簽或任何會偏離訓練數(shù)據(jù)的標簽

比如關(guān)于一個人物的Lora模型,那么這個人物名字就沒必要作為prompt了,所以就要去掉這個tag.

編輯標簽可以用上述說的stable diffusion中的dataset-editor或者軟件BooruDatasetTagManager.

設(shè)置圖片文件夾

<img src="https://i.imgur.com/zpbs8FB.png" alt="Directory Example" style="zoom:50%;" />

其中的txt文件就是caption文件,而其中的5_ConceptA是概念文件夾,5表示其中的圖片每張訓練5次.

Concept 概念文件夾遵循這種格式:<編號>_<名稱>

<編號>決定了你的訓練腳本將在該文件夾上進行的重復(fù)次數(shù)叨粘。只要你有匹配的txt標題文件埃脏,<名稱>就純粹是裝飾性的患朱。

caption文件是強制性的,否則LoRAs將使用概念名稱作為標題進行訓練曼月。

需要一個根目錄,根目錄下面是多個concept文件夾.同時可以在這個根目錄同級創(chuàng)建一個reg文件夾用于正則化防止過擬合.

[圖片上傳失敗...(image-cee94c-1682243737343)]

比如這里 train_girls里面是訓練數(shù)據(jù),下面放置多個概念文件夾,reg_girls里放圖片.

實戰(zhàn)

實戰(zhàn)訓練一個人物Lora,這里就懶得在網(wǎng)上一個一個找角色的圖了,使用Grabber搜索角色名,比如星野愛,hoshino_ai.注意設(shè)置所有來源

[圖片上傳失敗...(image-980535-1682243737343)]

在 "來源 "下勾選你希望搜索的任何一個Booru(s)。
(注意:不是所有的Boorus都能立即工作柔昼,Danbooru需要配置)
在 "目的地 "下選擇你希望保存圖像的文件夾(哑芹!確保這與日志是同一個文件夾!)捕透。
要下載聪姿,只需右擊任何圖像縮略圖并點擊保存即可
如果你想批量下載,你可以在底部選擇 "獲取本頁 "或 "獲取全部 "來組成一個下載隊列乙嘀。
你也可以使用ctrl + click末购,然后使用get selected。
然后導(dǎo)航到上面的 "下載 "選項卡虎谢,開始下載
你下載的所有圖片都會有一個包含標簽的同名文本文件

注意可能圖片樣式會有很多,包括nsfw的,等會在訓練的時候可以設(shè)置多個概念文件夾.

同時設(shè)置下載圖片時增加tag文件,按下圖設(shè)置即可.Filename要跟下載圖片的路徑一樣.

<img src="https://i.imgur.com/TtConCM.png" alt="imgbird" style="zoom: 80%;" />

<img src="https://s2.loli.net/2023/04/23/RrVigoyXhwz3CtU.png" alt="image-20230422123208032" style="zoom:50%;" />

Grabber這個軟件還是不錯的,此外還有另一個軟件之前推薦過Hydrus,不過設(shè)置相對麻煩,這里就不使用了.

最后下載內(nèi)容如下

<img src="https://s2.loli.net/2023/04/23/eboWaBVhRzU6nZ5.png" alt="image-20230422125727350" style="zoom:67%;" />

你可以將人物不同風格和樣式的圖片放到不同文件夾.

然后注意,我們需要一個所謂的觸發(fā)詞,也就是使用你這個Lora模型的詞匯,這里可以使用hoshino_ai這個tag,所以我們需要添加這個觸發(fā)詞,操作如下

<img src="https://s2.loli.net/2023/04/23/SuAs8UtmjHEFlWZ.png" alt="image-20230422131005321" style="zoom:50%;" />

然后使用Dataset Tag Editor插件編輯tag

<img src="https://s2.loli.net/2023/04/23/tSK2l9zrQWhOxVc.png" alt="image-20230422125853433" style="zoom:80%;" />

將包含圖片和tag文件的目錄加載到插件中,這里我刪除了一些頻率高同時沒什么含義的標簽比如有個++的標簽.具體操作可以看看倉庫寫的很詳細toshiaki1729/stable-diffusion-webui-dataset-tag-editor: Extension to edit dataset captions for SD web UI by AUTOMATIC1111 (github.com)

最終tag如下,注意這是其中一個概念文件夾的圖片

<img src="https://s2.loli.net/2023/04/23/kBDuwpctQNqe4RE.png" alt="image-20230422130925796" style="zoom:67%;" />

最后不要忘了保存

[圖片上傳失敗...(image-6eda1e-1682243737343)]

對于其他concept文件夾操作類似.

最后開始訓練,如果使用GUi,那么需要調(diào)的值比較多,可以加載別人的配置https://pastebin.com/dl/ZgbbrE7f,自己需要改的就是底模路徑,導(dǎo)出模型和數(shù)據(jù)路徑.

也可以使用B站up主秋葉aaaki寫的腳本,本質(zhì)類似,不過對于新手不用跳太多參數(shù)了.

<img src="https://s2.loli.net/2023/04/23/EiqQIXu5N9a1HGW.png" alt="image-20230422183430349" style="zoom:50%;" />

后面發(fā)現(xiàn)我的筆記本竟然顯存只有4G,所以后面把圖片進行了統(tǒng)一裁剪并減少了數(shù)量,大概三十張圖片,concept在3~6之間并且只訓練Unet,最后終于不提示顯存溢出了.

只訓練了10個epoch每兩個epoch生成一個模型,最終結(jié)果如下.走完了一套流程,雖然顯存只有4G,最終效果可能也一般,但還是希望能幫到一些人.

[圖片上傳失敗...(image-fdbd42-1682243737343)]

最后測試了一下訓練結(jié)果,可以說是莫名其妙,慘不忍睹.根本看不出訓練集是星野愛的.

不過也算是走完了訓練流程吧,畢竟顯卡能力有限.

[圖片上傳失敗...(image-15e499-1682243737343)]

[圖片上傳失敗...(image-d350ae-1682243737343)]

<img src="https://s2.loli.net/2023/04/23/keLWg2YdjuK8yPF.png" alt="xyz_grid-0002-3260766832" style="zoom:50%;" />

后續(xù)會寫一些參數(shù)解析,歡迎關(guān)注.

參考資料

  1. LoRA Training Guide (rentry.co)

  2. 《BLIP》-用更干凈更多樣的數(shù)據(jù)進行多模態(tài)預(yù)訓練盟榴,性能超越CLIP!代碼已開源嘉冒! - 知乎 (zhihu.com)

  3. Bionus/imgbrd-grabber: Very customizable imageboard/booru downloader with powerful filenaming features. (github.com)

  4. [AI繪畫]《LORA模型訓練超入門級教程》--人人都可以當煉金術(shù)士 - 知乎 (zhihu.com)

  5. 開源圖像模型Stable Diffusion入門手冊 - 騰訊云開發(fā)者社區(qū)-騰訊云 (tencent.com)

  6. Lora人物訓練(多concept)導(dǎo)論 - 嗶哩嗶哩 (bilibili.com)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曹货,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讳推,更是在濱河造成了極大的恐慌顶籽,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件银觅,死亡現(xiàn)場離奇詭異礼饱,居然都是意外死亡,警方通過查閱死者的電腦和手機究驴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門镊绪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洒忧,你說我怎么就攤上這事蝴韭。” “怎么了熙侍?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵榄鉴,是天一觀的道長。 經(jīng)常有香客問我蛉抓,道長庆尘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任巷送,我火速辦了婚禮驶忌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笑跛。我一直安慰自己付魔,他們只是感情好聊品,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著几苍,像睡著了一般杨刨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擦剑,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音芥颈,去河邊找鬼惠勒。 笑死,一個胖子當著我的面吹牛爬坑,可吹牛的內(nèi)容都是我干的纠屋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼盾计,長吁一口氣:“原來是場噩夢啊……” “哼售担!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起署辉,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤族铆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哭尝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哥攘,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年材鹦,在試婚紗的時候發(fā)現(xiàn)自己被綠了逝淹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡桶唐,死狀恐怖栅葡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尤泽,我是刑警寧澤欣簇,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站安吁,受9級特大地震影響醉蚁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鬼店,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一网棍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妇智,春花似錦滥玷、人聲如沸氏身。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛋欣。三九已至,卻和暖如春如贷,著一層夾襖步出監(jiān)牢的瞬間陷虎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工杠袱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尚猿,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓楣富,卻偏偏與公主長得像凿掂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纹蝴,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容