如果想要快速訓練,使用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中看看別人的訓練信息.
然后存訓練的圖片也有講究,文件夾命名有格式要求,這里后面細說.
流程梳理
下載安裝即可,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-tagger
和stable-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
一般的準則:
- 如果你要訓練一個畫家作品的Lora,那給這些作品打標簽時需要去掉關(guān)于這個作家的標簽,如果是一個人物Lora,那需要去除人物的名字相關(guān)tag以及一些決定性的特征.這樣這種風格或人物就存在與其他標簽上.
- 剔除任何應(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)注.