今宵われらキャラを学ぶ<脳内キャラクターLoRA総集編>
海外SFの邦題ってなんとも言えぬ魅力がありますよね(内容と一切関係のない前置き)
コピー機学習や差分抽出を一通り実践した結果、3Dモデルを使用した脳内キャラクターの学習に一つのピリオドを打てた実感があるので、現在までの振り返りと最新の手法を記載します。
前提
脳内の(教師データが存在しない)キャラクターをLoRAで再現したい、かつ、何らかの手段で対象キャラクターを3Dモデルで作成できる環境が必要。
目標はWeight1.0で使用しても3Dっぽさが無く、キャラクターの特徴のみを学習させ、背景やポーズの自由度が下がらないこととする。
差分抽出以前のアプローチ
無策
最初は何の工夫もせず、3Dモデルのスクリーンショットを学習させた。
結論からすると、どうやっても3Dっぽさは残る。
手持ちの3Dモデルを作成できるゲームの中で最もアニメライク(普段使う生成モデルの出力に近い)であろう『コイカツ』を使用しても、パッと見で学習素材に検討がついてしまう程度。
結局、学習を浅く(ステップを少なく)するか、Weightを弱めて使うことになり、キャラクターの一貫性が保てなかった。
蒸留
無策で学習したLoRAをWeight0.5程度で使用しつつ、キャラクターの特徴をPromptに入力して生成した画像(の中で脳内と合致するものを選別して)を集めて教師データとして使用する手法。
メリット:最初の教師データが少なくてもよい
デメリット:画像の生成と選別に労力がかかりすぎる
3Dモデルは一度作れば無限に教師データが用意できるので、メリットが生きてこないのだが、生成モデルの絵柄に寄せることだけを目的に採用した。
しかし、背景やポーズの自由度に影響を与えないことも考慮すると現実的でないレベルの労力がかかるので、結局は妥協の産物で終わった。
なお、現在はControl Net等の登場により労力の面がかなり改善されていると思われるので、少ない教師データで学習を試みる人は調べてみるのもよいでしょう。
差分について考える
LoRAの学習は大雑把に言って「教師データと生成モデルが生成した画像にある差分」を集めたものである。
3Dモデルのスクリーンショットを教師データとした場合、キャラクターの特徴と同様に"3Dっぽさ"も生成モデルとの差分として学習されてしまう。
このあたりは以前の記事を参照。
では、3Dモデルっぽい画像しか出力できない生成モデルを作れば、3Dっぽさが差分として発生しないのでは?というのがここからのアプローチである。
生成モデルの出力を制限する
制限の意図
3Dモデルっぽい画像しか出力しないようにするために、3Dモデルっぽい画像を生成するLoRA(以下、「踏み台」と呼ぶ)を作成する。
作成の細かい手順は以前の記事に記載しているので、適宜参照してほしい。
「踏み台」が持つべき要素は下記の通り。
感覚としては教師データのキャプショニング(タグ付け)において、学習させない要素をキャプションに残すことに似ている。
3Dモデルっぽい画像しか出ない(3Dモデルっぽさを排除するため)
背景は白一色に固定(背景への影響を排除するため)
ポーズは直立に固定(ポーズへの影響を排除するため)
髪色・髪型・体格などはバリエーションを持つ
以前との変更点①:教師データのバリエーション
「踏み台」を作成する際の教師データに複数のキャラクターを用意するという変更を行った。
以前のように単一のキャラクターで作成すると、差分が正確に抽出できないことが判明したためである。
下記は髪色に関する検証結果である、バリエーションを持たせたほうが正確に色を抽出していることがわかる。
髪色以外の要素についても同様なので、髪型、体型などもバリエーションを用意する。ただし、あらゆる組み合わせを網羅しようとすると天文学的な数が必要になるため、5種類のキャラクターを用意するに留めた。
髪色(赤、緑、青、白、黒)
髪型(長、中、短、ポニー、ツインテ)
胸のサイズ(大、大、中、小、小)
髪色はL*a*b*で考えると6色(黄色を追加)用意すべきだった気もする。
以前との変更点②:キャプショニング
以前は「踏み台」の作成時にキャプショニングを行わなかったが、今回は生成できるキャラクターにバリエーションを持たせたいので、教師データが持つキャラクターの特徴は記載する。
また、髪型の学習に重要(多分)な背面の教師データはキャラクターの顔が見えないという点で特殊なので「from behind」を記載する。
ズーム度合い(upper body等)も記載する。
これで「踏み台」が完成となる、サンプルは以下。
学習したい対象の学習
ここは以前とほぼ変わらない。
キャプショニングについては、1girlやsoloどころかトリガーワードと呼ばれるものも一切排除したので、下記の要素のみとなった。
white background(全部白背景のため)
背面のものにfrom behind
nude、もしくはcompletely nude(全裸のため)
全体が写っているものにarms at sides(ポーズが直立のため)
ズーム度合い(upper body等)
正則化は不要、というか入れると正則化データの内容に引っ張られ過ぎるので入れてはいけない。
学習の成果
Noteに画像貼るとしおしおになるのでTwitterに貼ったやつを載せておきます、教師データもぶら下がっているので。
以前からの改善点としては
固有のタグ一切不要(1girlだけでポンと出てくる)
色の正確性アップ(特に髪色がちゃんとハニーブロンドになった)
髪型の正確性アップ(でも長さの完全なコントロールは無理だった)
キャプショニングがさらに容易に(キャラクターごとの変更不要)
層別する必要すらなく不要な影響がカットされる(以前はしていた)
以上、おしまい。