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
      Head
      合計13枚
  • 生首+マネキン
  • namakubi_riho\train
    • \16_kk_dancer 踊り子セット。トリガータグはkkdancer
      Image
    • \16_riho_cloth 私服。トリガータグはrihocloth
      Image
    • \16_izumi_riho 生首。トリガータグはizumi riho
      合計32枚
  • 全身、同一衣装
  • riho_fullbodyonly\train
    • \25_izumi_riho
      Full body
      合計21枚
  • 全身、複数衣装
  • riho_multicloth\train
    • \10_izumi_riho キャラ画像。ランダム衣装。トリガータグはizumi riho
      Directory
      編集時のミスでエクスプローラーのスクショがおかしくなっているが気にしない。
    • \10_riho_dancer 踊り子セット。トリガータグはkkdancer
    • \10_riho_def_cloth 私服。トリガータグはrihocloth
    • \10_riho_mizugi 水着。トリガータグはrihomizugi

合計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


学習について

デフォルト値でも十分学習できる。

ポップアップの設定

Load a json?: No
Base Model: NAI Full
Image folder: 
output folder: 
Save a json?: No
use regularisation?: Yes
Regularisation folder: G:\sd_train\Train\Lora_RegImageA400
continue from earlier version?: No
batch_size: Cancel(1)
num_epochs: 3200steps前後になるように調整
network_dim: Cancel(128)
alpha: Cancel(equal to network_dim)
resolution: Cancel(512)
learning rate: Cancel(1e-4)
text_encoder_lr: Cancel(None)
unet_lr: Cancel(None)
scheduler: Cancel(cosine_with_restarts)
save intermediate epochs?: Yes
save_epoch:Cancel(1)
shuffle captions?: Yes
keep some tokens?:Yes
keep_tokens: Cancel(1)
have a warmup ratio?:Yes
warmup ratio: 0.01
change the name of output epochs?:Yes
output_name:名前
Comment:Cancel(empty)

結果

いずれも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 Generated by AI 高確率でclose-upになる。教師画像の影響が強い。
<lora:riho_head_2808:1>, 1girl, izumi riho Generated by AI 生首化。怖い。しかもツインテールになってる。
<lora:riho_head_2808:1>, 1girl, izumi riho, school uniform, standing, in the school Generated by AI お面のようになることが多い。生首も多い。
<lora:riho_head_2808:1>, 1girl, izumi riho, frilled bikini Generated by AI 背景が単調になる。海に浮かぶ生首になったり溶けたりする。

着せ替えが簡単にできる。
しかし、高確率で生首になる上背景に悪影響を及ぼしているので対策が必要。


生首+マネキン

Prompt Image Description
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho Generated by AI いい感じにランダムな服を着る。生首は少ないが、なぜかsplit viewになりやすい。
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, rihocloth Generated by AI きれいに融合した。ポーズも柔軟に変えられる。
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, kkdancer, dancing Generated by AI 教師画像の影響で見切れやすい。なぜかsplit viewになりやすい。
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, kimono, thigh, japanese garden Generated by AI 教師画像が混ざりつつも着替える。
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, nude, nsfw Generated by AI 教師画像が混ざりつつも脱ぐ。nsfw入れたほうが安定する。
<lora:riho_head_maruzenscheme_3072:1>, 1girl, izumi riho, school uniform Generated by AI split viewになるのは散らしたせいかもしれない。

着せ替えが簡単にできる。
生首のみよりは生首化は減った。

全身、同一衣装

Prompt Image Description
<lora:riho_fullbody_3150:1>, 1girl, izumi riho Generated by AI 構図が固定されやすい。
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, tropical island in the background Generated by AI いい感じにコイカツサンシャインになった。
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, bikini, tropical island in the background Generated by AI やはり衣装もセットで覚えてしまってなかなか着せ替えできない。
<lora:riho_fullbody_3150:1>, 1girl, izumi riho, nsfw Generated by AI いうことを聞かない。

衣装・髪色が完全固定される。生首だけのほうがマシ。


全身、複数衣装

教師画像の影響で目を閉じやすいのでNegative Promptにclosed eyesを追加している。

Prompt Image Description
<lora:riho_multicloth_3420:1>, 1girl, izumi riho Generated by AI 目を閉じた画像を1枚入れただけで目を閉じやすくなるとは・・・ネガにclosed eyesを入れればヨシ!
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, rihocloth Generated by AI プロンプトに臨機応変に対応するのでうまく学習したようだ。ジャンプもできる。
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, kkdancer Generated by AI full bodyだと下半身だけになる。見切れやすい。
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, rihomizugi, sitting, ocean Generated by AI 柄までは再現できない(仕様)。
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, thigh, capelet Generated by AI 教師画像の影響を受けつつも着る。
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, nude, pov, 1boy, sex, penis, cum in pussy, ahegao Generated by AI 表情も変わった。ほかの表情タグにも対応する。
<lora:riho_multicloth_3420:1>, 1girl, izumi riho, 美味しいヤミー❗✨🤟😁👍感謝❗🙌✨感謝❗🙌✨またいっぱい食べたいな❗🍖😋🍴✨デリシャッ‼🙏✨シャ‼🙏✨ シャ‼🙏✨ シャ‼🙏✨ シャ‼🙏✨ シャッッ‼ハッピー🌟スマイル❗👉😁👈 Generated by AI 美味しいヤミー

教師画像の多様性があったほうがAIが衣装を覚えにくくなって着せ替えがしやすいようだ。


正則化画像を変更して生首のみを学習

透明画像400枚で学習させたが、高確率で生首化した。
そこで、SDで生成したタグ付きの1girl画像400枚で生首を学習させてみた。

Prompt Image Description
<lora:riho_head_reg_2808:1>, 1girl, izumi riho Generated by AI 若干お面っぽさがあるが生首よりはるかにマシだ。
<lora:riho_head_reg_2808:1>, masterpiece, best quality, 1girl, izumi riho, kimono Generated by AI 若干お面っぽさがあるが生首よりはるかにマシだ。
<lora:riho_head_reg_2808:1>, masterpiece, best quality, 1girl, izumi riho, us army uniform Generated by AI 米陸軍の制服と指示しても学生服が混ざることがある。正則化画像の影響だろうか。
<lora:riho_head_reg_2808:1>, 1girl, izumi riho, bikini, ocean in the background Generated by AI 生首が流れつくことはない。ocean単体では無視される。

生首化がほぼ無くなった。効果てきめん。


dim1で生首のみを学習

原神LoRAの作成・検証時にnetwork_dimが高いとモデルのウェイト全体への影響力が大きくなることがわかっているので、低dimで学習すると生首化が減るか検証する。

Prompt Image Description
<lora:riho_2808_dim1:1>, 1girl, izumi riho Generated by AI 背景の影響は減ったが、心霊写真みたいになってしまった。
<lora:riho_2808_dim1:1>, 1girl, izumi riho, school uniform Generated by AI 衣装を指定したとたん生首が消えた。
<lora:riho_2808_dim1:1>, 1girl, izumi riho, maid, holding a rifle Generated by AI 銃もLoRAで学習したほうがいいかな?
<lora:riho_2808_dim1:1>, 1girl, izumi riho, bikini, ocean Generated by AI 非常に不安定。生首化したり、風景画になったり、ノイズになったりする。
<lora:riho_2808_dim1:1>, 1girl, izumi riho, nude Generated by AI ヒエッ

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 Generated by AI 生首無し。
<lora:riho_head_dim128_alpha1_lr1e4_2808:1>, 1girl, izumi riho, kimono Generated by AI いい感じ

生首が全くでないので成功。

Network_Dim:128, Alpha:1, LR:1e-3

Prompt Image Description
<lora:riho_head_alpha1_lr1e3_2808:1>, 1girl, izumi riho Generated by AI 生首化は無いが、ノイズになったりと不安定。

学習中のlossは早々に0.01を切った。


Network_Dim:128, Alpha:128, LR:1e-3

Prompt Image Description
<lora:riho_head_alpha128_lr1e3_2808:1>, 1girl, izumi riho Generated by AI 発散した。失敗。

Learning Rateを上げるときはAlphaを下げたほうがいいかも。


Network_Dim:128, Alpha:1, LR:5e-5

Prompt Image Description
<lora:riho_head_alpha1_lr5e5_2808:1>, 1girl, izumi riho Generated by AI 生首化が無くなった。学習しきってないのか完全に再現できてない。

Network_Dim:128, Alpha:128, LR:5e-5

Prompt Image Description
<lora:riho_head_dim128_alpha128_lr5e5_2808:1>, 1girl, izumi riho Generated by AI 生首かノイズの二択。非常に不安定。
<lora:riho_head_dim128_alpha128_lr5e5_2808:1>, 1girl, izumi riho, school uniform Generated by AI 生首かノイズの二択。非常に不安定。

追加検証の結果

Alphaを1にしたものは全く生首化しない。生首を学習させる場合、alphaを下げるべき。
Alphaは学習量を減らして学習能力を下げる代わりに過学習を抑えて自由度を上げる効果があるようだ。
衣装や装飾を覚えにくくなり、画風への影響が減少することも確認済み。


LoRAの強度による変化

1111では生成時に<lora:モデル名:強度>でLoRAを適用できる。このとき、強度を下げても生首化が減る。
Compare


わかったこと

  • 単一衣装ではマルゼンスキームの効果は無い。
  • 衣装はそれぞれ違うものにするといい。過学習を防ぐ。
  • 教師画像でキャラを左右に散らしすぎるとsplit viewの確率が上がるため注意。
  • 生首だけを使うときは透明以外の正則化画像があったほうがいい。正則化無しか透明画像では生首が生成されやすい。
  • 生首を学習させる場合、network_alphaは1推奨。
  • あるいは強度0.5~0.7で使用する。
  • LRを上げるときはAlphaの値を調整すべき。
  • 生首はdim1にすると生首化が減るが生成結果が不安定になる。
  • 生首はお面になりやすい。
Edit
Pub: 02 Feb 2023 07:16 UTC
Edit: 21 Feb 2023 10:14 UTC
Views: 8805