LoRA学習repeat20epoch20編

AI画像生成
広告
サスケ
サスケ

はっきり言おう! さっぱりわからなかった!

ミノ子
ミノ子

……よくわからないからいろいろ試してみたけど、結局よくわからなかった、ってことですか?

サスケ
サスケ

その通り! だってオレ素人だし!

ミノ子
ミノ子

そんな開き直って言われても

要約

学習画像枚数30、繰り返し数20でエポック数を振った場合(最大20)のAIイラスト例を紹介します。……何か意味のあることを言いたかったんですけど、明確な傾向が出なかったので、本当に紹介するだけです。

今回もまた試行錯誤の紆余曲折なので、解を示すというよりは、同じようなことを試そうと思っているかたのご参考になればと思っています。

はじめに

LoRA学習において大事なパラメーターは学習画像枚数(image)、繰り返し数(repeat)×エポック数(epoch)みたいです。imageは準備した画像の枚数、repeatは同じ画像を学習する回数、epochは学習全体の回数っぽいです。

ステップ数(step)との関係は image × repeat × epoch = step だとか。もちろんstepが大きいほど時間がかかります。なんとなくstepは大きければ大きいほど良さそうな気がしますが、ちょうどいい値を超えると勉強し過ぎの過学習になるそうです。

stepは4000~6000にしろという話や、5000~10000が良いという意見やらいろいろあります。まだよくわかってない、というのもあるでしょうが、たぶん学習内容によっても変わってくるのでしょう。

パラメーターがあったら振ってみたくなるのが人のサガ。ということでLoRA学習のパラメーターで遊んでみたいと思います。

まず当サイトの学習画像枚数は30枚。これはせっかく作ったので変える気なし。repeatをとりあえず20にして、epochの違い(最大20)で生成されるAIイラストがどのように変わるか、確認します。

……まあ、正直やった本人もよくわからない結果になったのですよ。数値が出てくるのでなく、画像で判断するとなると評価が難しい。ガチャ的要素もあるし。LoRA学習の参考にしていただければ幸いです。

↓Paperspaceのまとめ記事作りました。ほとんど自作LoRA学習まとめですけど。

↓同じrepeat=20で、epoch=3, 5, 7の結果です。今回はその先、ってことで。

epochを振った結果

比重も変化させてみましたよ

噂に高いkohya版LoRAを使用。repeat=20で、epoch=4, 8, 12, 16, 20の結果を示します。image=30だから、それぞれstep=2400, 4800, 7200, 9600, 12000ですよ。諸説あるけどepoch=4は学習不足、20は過学習の予定です。

モデルは「SukiyakiMix-v1.0-fp16.safetensors」で、VAEは「orangemix.vae.pt」。その他は以下の方法でPaperspaceにStable Diffusionを導入したデフォルトの状態です。

今回使うプロンプトは「girl 1, smile」+LoRAのみ、ネガティブプロンプトは「worst quality, low quality, bad anatomy, nsfw, text, signature, watermark, username, missing limb, bad hands, missing fingers, extra digit, fewer digits」です。

epochの大小に関わらず、比重が低いと再現性は低い。比重=0.8でもまだ足りない感じ。いっぽうで比重=1.0はepech=12, 16, 20あたり手元とかいろいろ怪しい。なんかぎこちないって感じなんだけど、これが過学習なのかも。知らんけど。

この結果を見ると比重=1.0のepech=8が良さげ。ぎこちないけど比重=1.0のepech=12もかなりミノ子っぽいです。このあたりに今回の最適解がありそうな予感がします。

……ただ、ちょっと何と言うか、前回に比べるイマイチ感が激しいです。リボンと校章ワッペンの両立どころか、両方ないのも多いし、そもそもローブが黒だったりするし。

この状態でわりと高い再現性をしてしておいて、でもプロンプトを追加すると難しくなる、っていう予定だったのに全然ダメダメですね。プロンプトを追加すると、はっきり言って嫌な予感しかしないのですが、ともかくやってみます。

比重=0.9固定でプロンプト追加

全体的にイマイチなのはおいといて、良さげな雰囲気ただよう比重=0.9に固定して、プロンプト追加で試してみました。

まずプロンプト①は「girl 1, smile, black short hair」です。とりあえず頭は黒い短髪でお願いしたい。「white robe」を入れようか迷ったんですけど、リボンと校章ワッペンを邪魔する傾向があるのでやめておきます。

プロンプト②は「girl 1, smile, black short hair, right hand punch practice. in the mysterious forest」としました。森の中でパンチの練習、……そんな女の子はいないですけど、いちおう魔法の世界であって、ミノ子は格闘技が得意ですし。

プロンプト③は「girl 1, smile, black short hair, having a drink, in the streets of medieval Europe」ですよ。買い食いをイメージしたのですが、考えてみたら中世ヨーロッパで買い食いって無理がありました。

プロンプト①は楽勝、……の予定だったんだけど、リボンと校章ワッペンの両立がひとつもない。epoch=16がいちばんミノ子っぽいけど、校章ワッペンないし。

プロンプト②はepoch=20が一番それっぽい。でもローブはどこに行ったんだ、ローブは。「練習してたら暑くなったので脱ぎました!」と言えないこともないけど、そこまで考えてたらAIスゲーよ。あとリボンの周囲が不自然でこれまた過学習なんでしょうかね?

プロンプト③は無理がありました。ドリンク持ってるって言ったら、高確率でストローが出てくるよね。中世ヨーロッパぽさなんてあらわせないよね。それもありますけど、そもそも衣装にミノ子っぽさが皆無です。

ということで、プロンプトを複雑にして、何かさせようとするとLoRA学習でも再現が難しくなります! ……と言うつもりだったんだけど、プロンプト①ですらできていないから説得力ありませんね。

PixAI.artに投稿して、「Moonbeam」だったらもうちょっと再現できる? でも、こんな趣味全開LoRAをいくつもアップして検証するだなんて邪魔以外の何者でもないし。「Moonbeam」をStable Diffusionに導入するのもムズそうだし。

とりあえず今の方向で検証を進めてみようかと思います。

*Paperspaceは誰かの紹介で始めたほうがお得です。詳しくは「PaperspaceでWebUIなStable Diffusion」をご参照ください。以下のリンクから登録すると当サイト経由ということで割引コードが適用されます。

Paperspace
Build and scale ML applications with a cloud platform focused on speed and simplicity.

クレジットカード登録が気乗りしないならVプリカの使用をおすすめします。貧乏性でVプリカの手数料が気になる or ポイ活的に補いたいって人は、ポイントインカムからVプリカに交換して資金を調達する方法もあります。

まとめ

学習画像枚数30、繰り返し数20でエポック数を振った場合(最大20)のAIイラスト例を紹介しました。……何か意味のあることを言いたかったんですけど、明確な傾向が出なかったので、本当に紹介するだけです。

今回もまた試行錯誤の紆余曲折なので、はっきりした解を示すというよりは、同じようなことを試そうと思っているかたのご参考になればと思っています。

繰り返し数をもうちょっと変えてみたら、何か傾向が出る? 手探りなのでとりあえず色々試してみようと思っています。Paperspaceの契約が切れる前までに、なるべくいい条件を探して、主要登場人物のLoRAをそろえたい今日この頃です。

↓自分で作ったLoRA学習ファイルをPixAI.artに投稿して遊んでみました。

↓条件をそろえるために再検証しました。

↓この記事と同じ検証をrepeat=10で実施してます。

↓repeat=5の検証記事。残念だけど嬉しい結果です。

↓PixAI.artに投稿するLoRA学習ファイルはなるべく厳選したいと思ってます。

↓プロのLoRAはすごいですよ。有名キャラは羨ましい。

↓今回の学習画像もVRoid Studioのお世話になってます!