見出し画像

SDXLのLoRAとかDoRA作成における個人的TIPS

 SDXL環境になってLORAを多く作るようになったので、その中で気づいたコトをつらつらと。
 検証とかしてるワケじゃないので、あくまで「個人的な気付き」です。まちがってたらスイマセン。

1.DORA学習のTIPS

  • 主にPRODIGY-LYCORIS/LOHAを使用

  • LoHAなのでdim/alphaは8/1で十分。たまに4とか16に上げたり下げたり。

  • 総STEP数は2500もあれば十分な出力が見込めるが、念のため3000~6000程度で作成している。

  • 以前はメモリ不足対策でFP8で作成していたが、基本パラメータが安定してきたので、FP32/FP16に移行。
    メモリエラーが出たら32→16→8と下げている。

  • 当初はTE学習を行わない風潮もあったが最近はTEも学習している
    TE未学習でも十分なクオリティは出たが(とくに画風の場合)、気分的にフルスペックの方が落ち着くので…。
    学習時間も大差がないような…(未検証)。

  • 素材は短い辺を1024以上にアプスケした方がいい。長い正方形の場合は1024x1024ピクセルを基準に適当に妥協しても可。
    1024x1024に及ばない低解像度画像を使うと、できあがりでシャギーが目立つ。

2.adamWとprodigy

 自分はprodigy派なので、そこそこバイアス入ってます(笑)。
 とはいえ、両者は仕上がりが明らかに「違う」ので目的に合わせて使い分けるとよさそう。

 adamはゆっくり徐々に学習しているイメージで、学習画像全体を覚えているイメージ。
 がっつり覚えさせて細部の再現性を求める場合は、かなりのSTEPを回す必要がありそう。
 ガチガチに覚えないので、多少破綻していたりクオリティが低い画像がまじっていても平均値をとることでごまかせる。
 学習率調整がSD1.5時代よりはマシになったものの、ある程度は調整したくなるので、prodigyと比べると試行錯誤が必要になることも。

 prodigyは早い段階での学習効率が高いことと、学習率の自動調整をすることが特徴。
 学習率を調整する必要がないので、LORAを手軽に作成できるのがメリット。
 仕上がりのクオリティも十分な素材があれば良いモノが作れる。
 記憶力・再現性が高いため素材の枚数が少ないと簡単にコピー機化してしまう。正則画像を入れたり使用時の強度を下げることで対応可能。

 SD1.5時代と比べると「低強度で使うと、学習したことをベースにしつつ、まったく学習させていない構図も出力できる」ようになった。CNのレファレンス的な使い方ができる。
 1.5時代はバリエーション面ではadamに分があったが、XLだとprodigyでもバリエーションが簡単に出せるようになった。

 adamとprodigyの個人的使いワケは…

  • 画風:prodigy。決まったフォーマットで4000STEPぐらい回せば高クオリティのものが作れるから。わざわざadamで手間をかける必要がない。

  • 構図:prodigy。「特定のポーズの再現」は覚えがよいprodigyの方が向いてそう。prodigyで満足しているのでadamを試したことがない

  • キャラ:両方。とりあえず手軽なprodigyで作って、クオリティに満足できない場合はadamを試す。

 Dadapt系はXLだと時間がかかることもあって、あまり試してません。
 1.5時代は、prodigyと似た特性を持ちつつ、ややadam寄りという印象だったので、XLでも同じかもしれません

3.LORAで出力

画風とキャラLORAの同時使用
 キャラLORAがPonyのバタくさい画風に引っ張られときや画質がいまいち安定しないときに、画風LORAを併用すると良い感じに落ち着くことがある。
 1.5時代はLORAの多重使用は過学習による画像崩壊を引き起こしやすかったが、XLで過学習現象が発動したことはほぼない。

隠れ過学習?
 画質が崩壊するような過学習はないが、「STEP数を取り過ぎるとプロンプト応答性が悪くなる」ような気がする(推測)。
 たとえば同素材で作成したLORAで、6000STEPだとまったく反応しないプロンプトが4000STEPだと反映することがある。
 あと人体構造の破綻率も、高STEPの方が気持ち高まる印象がある。

forgeは未対応
現時点(2024/4/1)ではforge本体はDORAに未対応。
DORAで出力する場合は要AUTOMATIC1111版。
先日LYCORISの作者さんが「昔使ってた機能拡張で対応するかもしれない」と言っていたので、そちらで使える用になるかも。

4.DORA学習

 最近は2つほどDORAでキャラLORAを作りました。
 それほど多く製作したわけではありませんが、2つ作った中での気付きをいくつか。

DORA使用時の主要パラメータ
 DORAを使うには、network_argsのオプションに「"dora_wd=True"」を足せばOK。moduleはlycoris.Kohyaを使用(要Lycorisインストール)。

--network_module=lycoris.kohya --network_args "conv_dim=8" "conv_alpha=2" "algo=lora" "dora_wd=True"

  • パラメータは基本的にLORAと同じで問題はなし。(dim8 / alpha1~2程度? / LR=1e4(adam) / 1(prodigy)

  • アルゴリズムはLORA。LoHAだと上手く学習できなかった。

  • 「AdamW / Prodigy」どちらもとくに問題なし。

  • スケジューラは「cosine」を使ったが他でも大丈夫だと思う。

  • FP8/FP16/BF16だとエラー発生で学習不可。無指定で学習完了。

DoRAとLoRAの比較
 LoRAだと画質がザラついた感じだったのに対して、DoRAは全体的にクッキリハッキリ。
 他のパラメータも微妙に変えたのでDORAが上とは断言できないが、今回の製作を見る限り、素材が少なくて出力のクオリティが安定しないときは、DORAを試してみる価値はあると思う。


 ぶっちゃけると、「設定いじりまくって、foregeを捨ててまで」DORAを使うほどのメリットはないかなーというのが正直なところです。
 自分は興味本位なのと「レアな規格使っている俺カッケー」的な自己満足感で使っていますが、既存のものと比べたときにそこまで大きなアドバンテージがあるか? と言われると疑問。
 ただ、自分は少ない枚数でLORA作るのが限界チャレンジみたいな感じで好きなんですが、その用途について言えば、低枚数LORAにありがちな「ざっくり感」を軽減してくれている印象はあります(なくなるワケではない)。


おまけ
 DoRAで作成したキャラLORAで出力。
 アリスソフトの名作SLG「戦国ランス」より、香姫。
(20年弱前のタイトルだけど、今遊んでもクソおもしろいので、キャラSLG&国盗りゲーが好きな人にはわりとオススメ!)

元絵は着物姿だが着替えも可能。
ポーズもプロンプトで自由に指定できる。
おさげと黒いリボンが特徴。
そこを崩すことなくメイドカチューシャを付けられる。
if設定を手軽に実現できるのが
AIイラストのいいろころですね。

 素材はゲーム画面より撮影。立ち絵×1、表情差分×2,イベント絵×2の5枚。すべて1024x1024以上になるようにWEBUIのEXTRAでアップスケール。
 立ち絵は背景を手動で切り抜き、左右反転で水増し。
 さらに、立ち絵をベースにしたいので、立ち絵の右向きを2枚、左向きを2枚の系4枚(すべて元は同じ画像)に水増しし、他の画像と差別化。

 少数画像で学習するとポーズが固定化されがちなので、おなじ『戦国ランス』の立ち絵やイベント絵のうち、構図が複雑でないものを30枚ほど正則画像として使用。

 元絵の総STEP数6000で10時間ほど学習して作成しました。
 重み10で出力すると、画面がザラつく印象のときがあったので、重みを6~7程度まで下げると、ゲームのようなクッキリとして塗りになりました。

 想定よりも良い感じの再現度を達成できました。
 他のキャラのも作成しようかなぁ…。


※アリスソフト様のガイドラインを順守します。問題や違反がありましたらご指摘ください。


この記事が気に入ったらサポートをしてみませんか?