LORA学習におけるマルゼン式とタグの付け方について
某掲示板を見ていたら、「LORA学習時におけるトリガーワードへのタグの集約」が話題にのぼっていました。
LORA学習でよく言われる「タグテキストの一番最初にトリガーワードを書き、覚えさせたいタグを消す」やり方、いわゆる「マルゼン式」というヤツです。
で、説明としては間違っていないのですが、「覚えたいタグを消す」っていうのが直感的に分かりにくいかなと思ったので軽く説明してみます(自分は某掲示板への書き込みができないので、自分のnoteに書きたくなった)。
とはいえ、LORAの学習とタグ付けの挙動は複雑かつ曖昧で、自分もよく分かっていません。
経験則による「こういうことかな? こうするといいかな?」的な記事であることを御了承ください。
なお、タグについては別の記事も書いているので、よろしければご覧ください。
LORA学習でよく使われる「覚えさせたいタグは消して、トリガーワードに集約させる」ですが、あれの目的は基本的に「イラスト出力時にプロンプト入力の手間を省く」ためのものです。
タグを消す学習方法は、学習の精度や再現度をあげるためのものではありません。
LORA学習では素材の要素はタグの有無に関わらずすべて学習されます。
タグごとに素材の内容を学習するというよりは、LORAが覚えた物を引っ張りだすために個々の学習内容にタグ付けすると考えた方がイメージしやすいかもしれません。
学習時にタグ指定があると、学習要素とタグが強く結び付けられて他のタグでは呼び出しにくくなります。
本来のタグ付け学習では要素ごとにタグづけすることで、学習内容が他の要素と混じりにくくするとともに、イラスト生成時のプロンプト指定を直感的に行えるようにしています。
ところが、要素が多くなっていくと、その要素を描写するためには、対応したタグ=プロンプトを片っ端から入力しなければなりません。
面倒です。
そこで、「わざわざタグを全部打たなくてもいいように、全体を表すタグにまとめて覚えさせてしまおう」として使われ始めたのがマルゼン式です。
LORA学習では、学習した内容に対応したタグをタグテキストの中から探して紐付けしていきます。
このとき、要素はあるのにタグの指定が無いときは学習プログラム側で勝手にタグ付けをします。
つまり、マルゼン式は、本来紐付けられるはずのタグを削除することで、紐付け先を強制的にトリガーワードに変更するやり方といえます。
なお、これらの方法はLORA学習の性質を利用した対処療法にすぎず、ルールとしてそういった挙動が定められているわけではありません。
例えばメガネ娘のメガネタグを削除したときに、トリガーの他に目を指定するタグにメガネ要素が追加されることがありますし、背景や服などの要素が身体的特徴をしめすタグに混ざってくることもあります。
似たような要素があるときは、マルゼン式を使うと混ざってぐちゃぐちゃになる可能性もあるので注意が必要です。
トリガーに集約するタグ付けは、タグの数を減らせる一方で、要素とタグの結びつきが曖昧になるという弱点もあります。
なので、生成するときに、要素を全部プロンプトで指定するのが面倒でなければ、いちいちタグを消す必要はありません。
たぶん、消さずにタグをきちんと入れた方が再現度は高くなりやすいと思います。
ちなみに自分は、毎回入力するのはめんどくさいし、LORAごとにどんな特徴があったかを覚えてられないので、キャラLORAの場合は「髪型・髪色・目の色」あたりは消して、それ以外はだいたい残してます。
胸の大きさは消してもいいかなと思いつつも、if設定で妄想したいので残していますすいませんごめんなさい。
おまけ:myタグ付けルーチン
1:autotaggerでタグ付け
2:間違っているタグと重複タグを削除
3:全ての画像からトリガー的に使いたいワードを一回削除したのち、先頭に追加(重複回避)。
タグ付け自体は正確にやった方がクオリティというか再現度はあがると思いますが、autotagger使ってそのまま学習GO!でも平気です。
あえて言うなら、LORAの学習は既存の概念に追加する感じなので、へたに重複したり間違ったタグづけすると学習させたい内容と既存概念が混じってグチャる可能性があるので、丁寧にタグづけした方が間違いはおこりにくくなると思います。
複雑な構図系LORAは、タグ付け次第でうまくいくこともありました。
まぁ昔と比べると、最近はモデルが優秀なのでタグ付けが適当でもだいたい大丈夫ですし、もっといえばタグ付けしないUnetオンリー学習でも十分なクオリティのLORAが作れたりします。
「タグ付け面倒でLORA作るの大変だなぁ…」となるぐらいなら、taggerで出したままで作るとか、いっそタグ無し学習で作ってしまえばいいと思います。
それで完成したLORAのクオリティに納得がいかなければ、そのときにタグの付け方を見直すでもいいですしね。