見出し画像

私的LORA作成術-23年夏版

4ヶ月ほど前に「経験から学んだ私的LORA作成術」という記事を書いたのですが、それから環境や経験の変化によって、LORAの作成スタイルも大きく変わってきました。

以前よりも、良い感じに作れるようになってもいるので、最近のLORA作成で気をつけていることをまとめてみました。
前の記事と言っていることが違っていたりしますが、その辺は「成長の証」ということで…。


学習方式

LOCONとLyCORIS

 LOCONは「学習する層を大幅にふやしたもの」で、LyCORISは「(事実上の標準である)KHOYA版とは別の学習方法をふやす拡張プロジェクトの総称」。
 基本的に別のモノなので、対にして考えるとややこしくなるので「違うモノ」として考える。

SD-SCRIPTとLyCORIS

 LyCORISはSD-SCRIPTを拡張するLORA学習プログラム。
 SD-SCRIPTでは使えない「loha、lokr、IA3」などのアルゴリズムを使用できるのがメリット。
 アルゴリズムの性能論議は宗教なので、実際に使った上で各自が優劣を決めればヨシ。
 個人的には「loha」がお気に入り。

 LOCONはどちらでも使えて、現時点では互換性の問題はほぼないが、より互換性リスクを重視するのであればSD-SCRIPTで作成した方が無難。
 LyCORISは拡張アルゴリズムを使いたいときに利用するとよい。

LyCORISと互換性

 WEBUI1111の1.4までは、LyCORISは独自拡張だったため、本体との互換性にやや難があり、使うのを避けていた人も多かった。
 しかし1.5で本体機能に追加されたため、通常のLORAと同じ感覚で使用できるようになり、互換性の問題は大幅に改善されている。
 ただし、今後LYCORIS側で新機能を追加すると、1111側での対応が遅れる可能性はある。

Optimizer

 オプティマイザー。上記のアルゴリズムとは別の学習方式規格。
 一般的なのは「AdamW」「lion」あたり。
 他では、パラメーター調節機能付きの「AdaFactor」「Prodigy」も便利。
 アルゴリズムと同じく、どれが優れているかは宗教なので、性能論議は以下略。

 個人的には「loha」と「Prodigy」の組み合わせがお気に入り。

Dim

 一般的には16、32、64あたりが主流。
 数値の意味はよく分かってませんが、「学習効果を受け入れる容量の大きさ」と考えている。
 以前、同じ素材・パラメータで構図LORAを作ったときに、8と32でけっこうな違いがでたので、それ以来、大きめ寄りで作成(64/128)することが多い。
 LOHAの場合は8~16でLORAの64以上相当になるらしい。
 実際32にするとデカすぎる印象がある。

ALPHA値

 alpha値を増やすと学習率が大幅に上昇する。
 学習率を調整するときに、alphaと学習率の両方をいじると、最適値を探すのがめんどくさいことこのうえない。
 そこでおすすめするしたいのが「alphaは1に固定」して、学習率だけ変動させるやり方。
 学習が足りない場合はSTEP数を増やすかir値を上げて対応する。


教師画像の準備

質か量か

  • キャラLORA(再現性重視):素材の質重視。低品質なものがあると、それに引っ張られて再現度が下がる

  • キャラLORA(雰囲気重視):ある程度雰囲気が出ている素材であればどんどん使う。i2iでかさ増しもアリ。

  • 構図LORA:基本的には量重視。ただし構図がまるで違うものを入れると混じって破綻を誘発することもあるので、その場合は該当素材を弾いて作り直す。

  • 絵柄LORA:できるだけ数を用意すると再現しやすい。余裕があれば、複数キャラ画像は分割して単体キャラにしておくと出力安定性があがる。

正則画像

 基本的には使わない。
 「正則画像で使った画像もそれなりに学習する」ので、その特性を活かした学習メソッドも考えられる。

素材の枚数

 「同じようなものが出ればいい」のであれば10枚もあればいける。
 少量で構図LORAを作るときはは「同じ構図」で揃える。
 へたに「同じテーマの別構図」を入れると安定しない。

 構図や絵柄で、出力にバリエーションが欲しいのであれば30枚ぐらいあればいけると思う。個人的には50~100枚ぐらい用意している。

背景切り抜き

 個人的な経験では、ちゃんとタグさえ入れておけば、いちいち切り抜かなくても背景が固定されたりはしない。
 ただし、極端に派手な背景や特徴的な背景が多数使われていると、その背景が優先的に表示されるようになることはあるので、そういった場合は切り抜いて対応する。

文字やエフェクト

 こちらも背景と同じで、タグさえ打っておけば固定表示はされないし、かりにされてもネガティブプロンプトで抑制しやすい。
 どうしても消せない場合だけ切り抜けば良いと思う。

解像度

 解像度が高い方がディテールがきれいになるような気はするが学習時間や必要メモリが跳ね上がる。費用対効果が悪いので512でいいかな…と。
 一方、512以下の画像で学習するのはよくないので、低解像度素材はアップスケールしてから学習する。

画像クリーニング

 低解像度・ぼやけている・ノイズがあるなどの画像は、extraのアップスケールなどを使ってクリーニングしておくと、学習効果が格段に向上する。
 とくに出力画像がぼやけるときは、学習画像をクリアにすると直ることも多い。

学習用のタグ

 タグを追加・削除して調整すると、再現性やプロンプトへの応答性が格段に上がる。
 ただし、自動タグ付けしてそのまま学習しても、それなりには仕上がる。
 重要なのはタグより教師画像の質と量。

  • autotaggerつかって機械的にタグ作成

  • grep使って「_」を半角スペースに変換

  • 画像を見ながら意味が重なるもの(1girlとsolo、simple backgroundとwhite backgroundとか)はどちらかを一括削除。
    画像とは違っているタグも削除。

  • キャラLORAの場合、身体的特徴(髪型、瞳、胸、肌の色など)は削除。
    ただしバリエーションがある場合は残す(髪型複数など)。

  • 服装タグは基本的にそのままだが、特徴的な衣装の場合は、服飾周りを全部削除してから、「●● outfit」を追加して一つにまとめることもある。

  • 最後に、必要であれば先頭にトリガーワードを一括追加。

おまけ:私的おすすめ設定

 これが正解とかじゃなくて、私的なお気に入り。参考値。

  • LyCORIS、LOHA、LOCON、Prodigy/AdaFactor

  • dim :8~16

  • alpha :1

  • 学習率 :1(Prodigy)/1e4(AdaFactor。UNETとTE同値)

  • STEP数:1EPOCHを500回程度に調整(教師画像が70枚なら7回繰り返し)×10の5000STEP。

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