LoRAでのキャラ学習素材の検証
概要
DreamBoothのLoRAで生首を学習させると着せ替えやすいらしいので検証した。
作成環境は以下の通り:
OS: Windows 11 22H2
CPU: AMD Ryzen 7 5800X(8C16T)
GPU: NVIDIA GeForce RTX 2070 SUPER(GDDR6 8GB)
RAM: 32GB(DDR4-3200 16GBx2)
Storage: NVMe SSD(1TB)
教師データについて
次の画像で検証する。素材はコイカツ!サンシャインのデフォルトキャラカード(大和撫子.png)で用意。
いずれもマルゼンスキームで学習。
- 生首のみ
背景は透過。 - 生首+マネキン
マネキン状態の画像を用意し、複数衣装を学習させる。背景は透過。 - 全身、同一衣装
未加工の画像。背景は黒の単色。 - 全身、複数衣装
未加工の画像。背景は黒の単色。
フォルダ階層
- 生首のみ
- namakubi_riho\train
- \36_riho 頭だけ。トリガータグはizumi riho
合計13枚
- \36_riho 頭だけ。トリガータグはizumi riho
- 生首+マネキン
- namakubi_riho\train
- \16_kk_dancer 踊り子セット。トリガータグはkkdancer
- \16_riho_cloth 私服。トリガータグはrihocloth
- \16_izumi_riho 生首。トリガータグはizumi riho
合計32枚
- \16_kk_dancer 踊り子セット。トリガータグはkkdancer
- 全身、同一衣装
- riho_fullbodyonly\train
- \25_izumi_riho
合計21枚
- \25_izumi_riho
- 全身、複数衣装
- riho_multicloth\train
- \10_izumi_riho キャラ画像。ランダム衣装。トリガータグはizumi riho
編集時のミスでエクスプローラーのスクショがおかしくなっているが気にしない。 - \10_riho_dancer 踊り子セット。トリガータグはkkdancer
- \10_riho_def_cloth 私服。トリガータグはrihocloth
- \10_riho_mizugi 水着。トリガータグはrihomizugi
- \10_izumi_riho キャラ画像。ランダム衣装。トリガータグはizumi riho
合計57枚
タグ付け
WD14Taggerのwd14-convnextでタグテキストを作成。
Additional Tagsに集約するワードを入力。
Exclude Tagsは1girl,solo,virtual_youtuber,blush
とそれぞれの衣装の特徴のタグ。1girlやsoloをタグに入れたままにすると、1girlを入れたときに衣装が固定される。
透明正則化画像はをAUTOMATIC1111 SD WebUIのExtensionで400枚用意。
通常の正則化画像はWebUIで1girlで生成したものを400枚用意し、WD14Taggerでタグ付け。タグの除外はなし。
教師画像のタグの一例:izumi riho, skirt, black background, looking at viewer, simple background, brown skirt, scrunchie, smile, plaid skirt, cowboy shot, long sleeves, plaid, wrist scrunchie
学習について
デフォルト値でも十分学習できる。
ポップアップの設定
結果
いずれも25分前後かかった。
生成時のNegative Promptはlowres, bad anatomy, inaccurate limb, low quality, signature, watermark, username, blurry
とする。
生首のみ
Prompt | Image | Description |
---|---|---|
<lora:riho_head_2808:1>, 1girl, izumi riho | ![]() |
高確率でclose-upになる。教師画像の影響が強い。 |
<lora:riho_head_2808:1>, 1girl, izumi riho | ![]() |
生首化。怖い。しかもツインテールになってる。 |
<lora:riho_head_2808:1>, 1girl, izumi riho, school uniform, standing, in the school | ![]() |
お面のようになることが多い。生首も多い。 |
<lora:riho_head_2808:1>, 1girl, izumi riho, frilled bikini | ![]() |
背景が単調になる。海に浮かぶ生首になったり溶けたりする。 |
着せ替えが簡単にできる。
しかし、高確率で生首になる上背景に悪影響を及ぼしているので対策が必要。
生首+マネキン
Prompt | Image | Description |
---|---|---|
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho | ![]() |
いい感じにランダムな服を着る。生首は少ないが、なぜかsplit viewになりやすい。 |
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, rihocloth | ![]() |
きれいに融合した。ポーズも柔軟に変えられる。 |
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, kkdancer, dancing | ![]() |
教師画像の影響で見切れやすい。なぜかsplit viewになりやすい。 |
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, kimono, thigh, japanese garden | ![]() |
教師画像が混ざりつつも着替える。 |
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, nude, nsfw | ![]() |
教師画像が混ざりつつも脱ぐ。nsfw入れたほうが安定する。 |
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, school uniform | ![]() |
split viewになるのは散らしたせいかもしれない。 |
着せ替えが簡単にできる。
生首のみよりは生首化は減った。
全身、同一衣装
Prompt | Image | Description |
---|---|---|
<lora:riho_fullbody_3150:1>, 1girl, izumi riho | ![]() |
構図が固定されやすい。 |
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, tropical island in the background | ![]() |
いい感じにコイカツサンシャインになった。 |
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, bikini, tropical island in the background | ![]() |
やはり衣装もセットで覚えてしまってなかなか着せ替えできない。 |
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, nsfw | ![]() |
いうことを聞かない。 |
衣装・髪色が完全固定される。生首だけのほうがマシ。
全身、複数衣装
教師画像の影響で目を閉じやすいのでNegative Promptにclosed eyesを追加している。
Prompt | Image | Description |
---|---|---|
<lora:riho_multicloth_3420:1>, 1girl, izumi riho | ![]() |
目を閉じた画像を1枚入れただけで目を閉じやすくなるとは・・・ネガにclosed eyesを入れればヨシ! |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, rihocloth | ![]() |
プロンプトに臨機応変に対応するのでうまく学習したようだ。ジャンプもできる。 |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, kkdancer | ![]() |
full bodyだと下半身だけになる。見切れやすい。 |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, rihomizugi, sitting, ocean | ![]() |
柄までは再現できない(仕様)。 |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, thigh, capelet | ![]() |
教師画像の影響を受けつつも着る。 |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, nude, pov, 1boy, sex, penis, cum in pussy, ahegao | ![]() |
表情も変わった。ほかの表情タグにも対応する。 |
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, 美味しいヤミー❗✨🤟😁👍感謝❗🙌✨感謝❗🙌✨またいっぱい食べたいな❗🍖😋🍴✨デリシャッ‼🙏✨シャ‼🙏✨ シャ‼🙏✨ シャ‼🙏✨ シャ‼🙏✨ シャッッ‼ハッピー🌟スマイル❗👉😁👈 | ![]() |
美味しいヤミー |
教師画像の多様性があったほうがAIが衣装を覚えにくくなって着せ替えがしやすいようだ。
正則化画像を変更して生首のみを学習
透明画像400枚で学習させたが、高確率で生首化した。
そこで、SDで生成したタグ付きの1girl画像400枚で生首を学習させてみた。
Prompt | Image | Description |
---|---|---|
<lora:riho_head_reg_2808:1>, 1girl, izumi riho | ![]() |
若干お面っぽさがあるが生首よりはるかにマシだ。 |
<lora:riho_head_reg_2808:1>, masterpiece, best quality, 1girl, izumi riho, kimono | ![]() |
若干お面っぽさがあるが生首よりはるかにマシだ。 |
<lora:riho_head_reg_2808:1>, masterpiece, best quality, 1girl, izumi riho, us army uniform | ![]() |
米陸軍の制服と指示しても学生服が混ざることがある。正則化画像の影響だろうか。 |
<lora:riho_head_reg_2808:1>, 1girl, izumi riho, bikini, ocean in the background | ![]() |
生首が流れつくことはない。ocean単体では無視される。 |
生首化がほぼ無くなった。効果てきめん。
dim1で生首のみを学習
原神LoRAの作成・検証時にnetwork_dimが高いとモデルのウェイト全体への影響力が大きくなることがわかっているので、低dimで学習すると生首化が減るか検証する。
Prompt | Image | Description |
---|---|---|
<lora:riho_2808_dim1:1>, 1girl, izumi riho | ![]() |
背景の影響は減ったが、心霊写真みたいになってしまった。 |
<lora:riho_2808_dim1:1>, 1girl, izumi riho, school uniform | ![]() |
衣装を指定したとたん生首が消えた。 |
<lora:riho_2808_dim1:1>, 1girl, izumi riho, maid, holding a rifle | ![]() |
銃もLoRAで学習したほうがいいかな? |
<lora:riho_2808_dim1:1>, 1girl, izumi riho, bikini, ocean | ![]() |
非常に不安定。生首化したり、風景画になったり、ノイズになったりする。 |
<lora:riho_2808_dim1:1>, 1girl, izumi riho, nude | ![]() |
ヒエッ |
izumi rihoだけでは相変わらず生首になるが、衣装の指定をすると生首化がほとんど発生しない。
しかし、すべてのプロンプトで同じようにはならなかった。
追加検証: AlphaとLearning Rate
スレ住民は生首化しないと言っているのでLearning Rateとnetwork_alphaを変更する。
Network_Dim:128, Alpha:1, LR:1e-4
Prompt | Image | Description |
---|---|---|
<lora:riho_head_dim128_alpha1_lr1e4_2808:1>, 1girl, izumi riho | ![]() |
生首無し。 |
<lora:riho_head_dim128_alpha1_lr1e4_2808:1>, 1girl, izumi riho, kimono | ![]() |
いい感じ |
生首が全くでないので成功。
Network_Dim:128, Alpha:1, LR:1e-3
Prompt | Image | Description |
---|---|---|
<lora:riho_head_alpha1_lr1e3_2808:1>, 1girl, izumi riho | ![]() |
生首化は無いが、ノイズになったりと不安定。 |
学習中のlossは早々に0.01を切った。
Network_Dim:128, Alpha:128, LR:1e-3
Prompt | Image | Description |
---|---|---|
<lora:riho_head_alpha128_lr1e3_2808:1>, 1girl, izumi riho | ![]() |
発散した。失敗。 |
Learning Rateを上げるときはAlphaを下げたほうがいいかも。
Network_Dim:128, Alpha:1, LR:5e-5
Prompt | Image | Description |
---|---|---|
<lora:riho_head_alpha1_lr5e5_2808:1>, 1girl, izumi riho | ![]() |
生首化が無くなった。学習しきってないのか完全に再現できてない。 |
Network_Dim:128, Alpha:128, LR:5e-5
Prompt | Image | Description |
---|---|---|
<lora:riho_head_dim128_alpha128_lr5e5_2808:1>, 1girl, izumi riho | ![]() |
生首かノイズの二択。非常に不安定。 |
<lora:riho_head_dim128_alpha128_lr5e5_2808:1>, 1girl, izumi riho, school uniform | ![]() |
生首かノイズの二択。非常に不安定。 |
追加検証の結果
Alphaを1にしたものは全く生首化しない。生首を学習させる場合、alphaを下げるべき。
Alphaは学習量を減らして学習能力を下げる代わりに過学習を抑えて自由度を上げる効果があるようだ。
衣装や装飾を覚えにくくなり、画風への影響が減少することも確認済み。
LoRAの強度による変化
1111では生成時に<lora:モデル名:強度>でLoRAを適用できる。このとき、強度を下げても生首化が減る。
わかったこと
- 単一衣装ではマルゼンスキームの効果は無い。
- 衣装はそれぞれ違うものにするといい。過学習を防ぐ。
- 教師画像でキャラを左右に散らしすぎるとsplit viewの確率が上がるため注意。
- 生首だけを使うときは透明以外の正則化画像があったほうがいい。正則化無しか透明画像では生首が生成されやすい。
- 生首を学習させる場合、network_alphaは1推奨。
- あるいは強度0.5~0.7で使用する。
- LRを上げるときはAlphaの値を調整すべき。
- 生首はdim1にすると生首化が減るが生成結果が不安定になる。
- 生首はお面になりやすい。