Lora人物訓(xùn)練(多concept)導(dǎo)論

煉了三十多爐人物lora(以及十多爐焦茶),經(jīng)歷了很多試錯(cuò)。寫一篇專欄,總結(jié)與分享我的經(jīng)驗(yàn)。這是我的c站賬號https://civitai.com/user/zbw

這是一篇關(guān)于lora人物訓(xùn)練中,關(guān)于分concept,打標(biāo),尤其是防止concept之間融合的詳細(xì)教程。




零.訓(xùn)練配置
訓(xùn)練腳本是直接從github上面直接拉的https://github.com/derriandistro/LoRA_Easy_Training_Scripts
(不知道為什么一樣的訓(xùn)練集一樣的參數(shù)用秋葉包每次都炸爐)。
云部署不會(huì)linux的可以跟著這個(gè)教程部署。(我也是跟著來的)
https://www.bilibili.com/video/av435827948/?vd_source=a3ec46f32badb5a9f89fe4d1bca09bbf
參數(shù)我沒有經(jīng)過很多嘗試,所以這里只是放出我的訓(xùn)練參數(shù),會(huì)將lora_train_command放在下面。

一.concept分類
1.對于一個(gè)人物有多個(gè)官設(shè)的情況(服裝、皮膚),應(yīng)分不同的concept,并打上不同的觸發(fā)詞,此外,chibi與nsfw(尤其是nsfw)圖,也建議另外分concept。
2.對于非官設(shè)的素材,也可以另開一個(gè)concept。此類素材,可有效降低換衣的難度。



3.訓(xùn)練集放幾張nsfw圖對模型的H性能至關(guān)重要(廢話),但如果nsfw的比重過大,就會(huì)出現(xiàn)跑正常圖也總是露一塊的情況。
4.大頭集:素材頭部差別小可以單獨(dú)做一個(gè)大頭集,差別大不建議。曾今的設(shè)想是單獨(dú)做一個(gè)大頭集,要換衣服的時(shí)候就只打大頭集的觸發(fā)詞,但試過很多次后感覺效果不明顯.

5.關(guān)于repeat:幾個(gè)官設(shè)concept(也就是想打觸發(fā)詞的concept)中,repeat*圖片數(shù)的值應(yīng)盡可能相等,對于圖片數(shù)較大的concept,repeat*圖片數(shù)的值應(yīng)稍微大一點(diǎn)(因?yàn)楦y擬合),
????對于nsfw與chibi集,repeat開6~8就可以了。
5.我自己訓(xùn)練集的repeat設(shè)置:

二.打標(biāo)技巧
1.keep tokens簡介:在訓(xùn)練過程中,會(huì)將txt中的tag進(jìn)行隨機(jī)打亂。如果將keep tokens設(shè)置為n,那前n個(gè)token的順序在訓(xùn)練過程中將不會(huì)被打亂。
(秋葉包居然沒有keep tokens!這也是我沒用秋葉包的原因)
2.txt的本質(zhì):在每一個(gè)epoch中,(經(jīng)過打亂的)txt前4個(gè)token會(huì)被當(dāng)做觸發(fā)詞,此外的token會(huì)被當(dāng)做排除集。ai會(huì)將排除集中的元素在素材中刪除后,把素材的剩余部分學(xué)進(jìn)前4個(gè)token中。因此,如果不開啟keep tokens,txt中的每一個(gè)tag在足夠多的epoch后,都將成為觸發(fā)詞。
????有了上面兩個(gè)點(diǎn),我們就能解釋,為什么畫風(fēng)訓(xùn)練可以打全標(biāo),而人物訓(xùn)練如果打全標(biāo),就會(huì)出現(xiàn)多觸發(fā)詞的情況。(在不開啟keep tokens的情況下)
????一種很流行的打標(biāo)方式是利用tagger打標(biāo)后,刪除其中與人物特征密切相關(guān)的tag,并加上觸發(fā)詞。這樣的弊端一是很難將與人物相關(guān)的tag刪除干凈(沒刪干凈就有可能出現(xiàn)丟特征的情況),二是必須開啟keep tokens(不然大概是會(huì)發(fā)生concept之間的融合的)
????
3.我的打標(biāo)方式:由于很難將與人物相關(guān)的tag刪除干凈,所以我采用保留特定tag的方式。需要保留的tag,我認(rèn)為只需要視角、大幅度動(dòng)作以及觸發(fā)詞就可以了。(以前很長時(shí)間我甚至只打觸發(fā)詞一個(gè)tag),
????我寫了一個(gè)簡單的py腳本進(jìn)行txt批量處理,會(huì)放在下面。(可以自行添加刪除白名單tag,我放進(jìn)白名單的tag不是很全面)用管理員權(quán)限打開cmd后,運(yùn)行py文件就可以了。

????我打標(biāo)的具體流程是:對于每一個(gè)concept,先用tagger打標(biāo)后(可信度開0.3),再運(yùn)行我的py腳本。

1.好的訓(xùn)練集:畫風(fēng)多樣,視角多樣,視角多樣,有sfw有nsfw,有大頭有全身,有upper body有full body。
????素材多多益善,但太多的話(比如一個(gè)concept有上百張圖)幫助也不大,此時(shí)可以提高篩選標(biāo)準(zhǔn)。
????背景摳不摳無所謂。
2.利用mmd:可以利用mmd補(bǔ)充角度,但不建議放太多的mmd素材(最多三分之一吧,很多pmx的臉部細(xì)節(jié)實(shí)在是太少了)。

不加渲染也可以。(不嫌麻煩加點(diǎn)渲染更好)
四.防止concept融合的總結(jié)
由于這些內(nèi)容分布得很散,所以這里單獨(dú)做個(gè)總結(jié)
1.幾個(gè)官設(shè)concept中,repeat*圖片數(shù)的值應(yīng)盡可能相等。
2.不同concept的txt之間有相同tag情況下,又沒開keep tokens。
3.欠擬合也可能會(huì)導(dǎo)致融合。
五.補(bǔ)救方法
1.出現(xiàn)融合,可以使用添加描述的方法



是時(shí)候用我們對開源的理解做一次實(shí)驗(yàn)啦,以此啟發(fā)后續(xù)的開源者以及讓千篇一律的無趣宇宙發(fā)生一點(diǎn)微妙的變化!
------AIGODLINK