半年くらいAIイラスト作りからLORA学習を学習して思った事

AIは決して万能の願望器などではない

AIイラストは予めとんでもない量の画像を学んで「猫はこんな形ですよ。こんな毛の色ですよ。人はこんな形ですよ。アニメの女の子はこんな色ですよ」と言う様な情報をパッケージにしたモデルファイルに、「猫、女、アニメ、すけべ」等の単語を入力するとその要素を抽出して出力する。そんなものです。生成をする度にシード値はランダムに変わるし、シードを固定して単語を入れ替えたりしても思ったように変化しないしそもそも人の形を成さない事もありますし全然便利じゃありません。仕事に使うなんて以ての外です。でもまあ小さい頃に憧れた二次元の女性の、今となっては見つけるのも難しいファンイラストを辿りながら自分が思ったように出力できる事を夢見て半年くらい経ったのでちょっとしたまとめを書いてみようと思いました。

ぜんぜんわからない。俺たちは雰囲気でAIイラストを作っている

まず、私はプログラミングの知識も一切無かったので調べがつく限りのまとめ等でそのまんまgitだのpysonだのを言われるがままにインストールしていきました。コワイネ!インストールなどはほぼオートで進むので問題ありませんでしたが、特に学習分野に於いてはネットで拾える情報が使えない事が多かったです。後になって分かる事ですがとにかく情報が間違っていたり、シチュエーションが限定的過ぎます。ただそれも含めて自分の学習を進めていく事が最終的にはAI学習の概論として理解されるものなのだと思えたのでそれも良かったなと今のところは感じる部分ではあります。間違った情報を発信する事は悪い事ではありません。よく確かめずにそれを広める事に問題があります。

danbooru語の学習

一通りインストールを終え、イラストを出力する準備が出来たところでまずどうやってAIに単語を渡せばいいのか分かりませんでした。単語どころかほぼ文章みたいなものを投げつけてはバケモノを生成したのが懐かしい。人じゃ…なかった…!で、結局ネットのイラスト全部リンクします、みたいなサイトで扱っているタグ準拠であると言う事が分かったので以後そのサイトが持ってるwikiで頻出英単語の意味を調べるのが習慣になりました。1girl,
masterpiece, best quality…ぶつぶつぶつ。呪文詠唱と呼んで楽しんでた時期でもあります。

言葉の限界

どうしても聖剣伝説3のアンジェラが描けませんでした。合掌。出来ない事があるとどうにかしようと足掻くのが特に始めたての頃の楽しみですが、当時の語彙力と理解度ではツンツンロングヘアーにならず、1単語入れ替えては生成、場所を入れ替えては生成、みたいな事を延々と繰り返しては失敗してました。この段階で色んなモデルを導入してみたりVAEを入れ替えてみたりと言う試行をしますが特定のキャラクターの表現には届かず一旦AIイラストはもういいかとなった時期です。

LORAと言う可能性

モデルによっては特に有名なキャラクター等は予め学習されており、名前を入力するだけで精細に描いてくれる事もありますダヨー。しかしアンジェラは名前を入力してみてもピクりとも反応してくれなかったので追加学習、つまり自分で新たに概念を学習したファイルを用意するLoRA学習の可能性を見出しました。が、当時は私のPC環境に問題があり日本の学習界隈では一般的なkohya's GUIが使えず暫く途方に暮れていたのですがLoRA Easy training Scriptと言う、当時はポップアップに応えていく形式の非常に面倒なスクリプトを利用していました。パラメータも何も理解せずすべてをデフォルトでステップ数だけやけに多く設定して学習にも1時間以上かかっていましたがプロンプトだけでは表現できなかったアンジェラがちゃんとアンジェラ独特の要素を保持して出力された時はとても感動したのを覚えています。

AI学習の沼

LoRAがあれば少ないプロンプトで目的の絵を呼び出せると感動したものの、とにかく学習に時間が掛かります。始めはそれでも良しとしていましたが流石に時間が勿体ないし自身としても学習効率が悪すぎます。ここで2回目の「まあこんなもんか」期があり、しばらく離れるのですが前述したEasy Lora training scriptのアップデートで何とスタンダローンのGUIが誕生し、その余りの使い易さに一気に学習意欲が高まりました。何せ数十項のポップアップに応えたら後はJsonファイルに保存して呼び出すだけの簡素な学習から、とても見やすくまとまったGUIになり面倒なファイル名編集なども不要で制御できるとあって、今まで触ろうとしなかった学習パラメータの変更にチャレンジし、キャプション方式も覚えてとにかく何度も何度もLORAを作っては消し作っては消しを繰り返しました。ここで得た経験がLORA学習にかなりはまり込んだ部分で、Dim、ステップ数、LR、キャプションのタグの残し方教師画像の処理の仕方等ネットで拾える情報にかなり差異がありそれを一つ一つ試していく事の方に楽しみを見出していた頃でもあります。この段階で長くても30分、早ければ5分程度で学習が収束する様になり自分を天才と勘違いする傾向が現れ出します。イタタタ。

LoHaと言う可能性、prodigyの罠

甜菜ではあったんですがどうしてもグランブルーファンタジーのグランデちゃんだゾーイ!が出力できませんでした。武具はぐにゃぐにゃだし鎧はオーバーソウルしてるしその上私はビ・-・ト。この頃は複数衣装のLoRAにも手を付けていたのですが水着やシンプルな服装は上手く収束するものの複雑な衣装の再現に悩んでいた頃でした。どうにかしようと考えた末、パラメータではなくアルゴリズムそのものを1歩進めようと言う事になり、まず最初にAdamWの使用を辞めました。比較的新しく情報の多いprodigyがよさそうだなとざっくりアタリを付けてしばらく使い込んだんですが、結果として今もオプティマイザーはprodigyしか使っていないです。学習率や各パラメータを学習状況に応じて自動調整すると言う事でかなり期待したのですが、最初はまあ少し精細な仕上がりになったかな?くらいだったので思い切って追加変数を編集したり開発者推奨値にしてみたり色々試していると、もう絵がどんどん溶けていって万策尽きたー!状態だったんですが、何とか試行錯誤で乗り切りました。皆さんprodigyはbetas(0.9, 0.99)で使ってください。デフォルトだとbetas(0.9, 0.999)ですがここが違うとどう足掻いても万策尽きそうなトロトロ絵になってしまいます。LoHaはprodigyに四苦八苦してる頃と同時期に導入しとりあえず新しいものをと言う事でLoKRと合わせて試行を繰り返したのですが、LoKRでは学習が収束する目途が立たずちょっと投げ出したままです。なのでProdigyとの相性の良さも囁かれ自身としても満足な結果が得られるLoHaに現在も落ち着いています。LoKRの方が新しいアルゴリズムだからちゃんと使えば綺麗になる気はするんですが、いつかは…と言った所。LoHA含むLyCORISはスタンダードのLORAに比べてinputとoutputが1.5倍くらいあるのでより少ないdim数で結果が得られます。と言うかこの辺でようやくUNETだとかそもそものAI学習の仕組みの勉強をし始めます。わからない。俺たちは雰囲気でAIイラストをやっている…。

誰がdimは高い方が良いなんて言い出したんだ、言え!

LoRA学習の記事とか読むとどこにだって書いてる事です。Dimを上げると精度が上がると。おかしいんですよね~確かに精度は上がって細かい絵は出るものの、学習素材によっては大きく間違える事も増えているような…。理系大学の出の方なら何を今更な話かも知れませんが、イラストに限らずAIの学習においては次元数(dim)はむやみに上げるとoverfitting(これを過学習と訳した人にも少しモノ申したい)の原因になるんだそうです。古事記にもそう書かれている。つまりグランブルーファンタジーのグランデちゃんだゾーイ!はその複雑な服飾にビビって私が大きくし過ぎたdimのせいでオーバーソウルしてたんですね。過学習とは単純に絵が解けるにじむ歪むだけでなく、基本的にはプロンプトで制御ができず、教師画像にない要素が現れ、ポーズが固定される等の傾向があります。なので私が錬成してたゾーイちゃんは学習時にarmor等の単語からテキストエンコーダの影響をモロに受けて教師画像とはかけ離れたデカい鎧を着てたわけです。と言う事でLoHAならdimはせいぜい2で十分です。多くても4、余程複雑な服装、複数衣装で8もあり得るかも?と言ったところです。シンプルな服装で1衣装のキャラを学ぶ場合はdim1でも十分に学習します。dimが小さければグラフィックメモリーの無駄遣い♠をせずに済むのでバッチ数を上げて学習時間を短くをする事もできます。結論dimは低い方がいいです。低いdimでまずは収束を目指しおおよその収束ポイントが見つかったら初めてdimがもっと必要かどうか判断すると自身の中での収束も早いと思います。

ぜんぜんわからない。俺たちは雰囲気でAIイラストを作っている

でもですね、結局モデルに含まれてないポーズは取れないしカメラもダイナミックには動かせないんですよ。みんなが良く描いてるイラスト、ポーズ、シチュエーションの学習深度は上がっても、ニッチなジャンルのキャラは当然モデルには含まれないですしオリジナルのキャラを生み出すならまず自分の手を動かしペンで描くしかありません。もちろん、絵を描く人だって資料は参照します。最初は資料通りの模写になるでしょう。それでも最終的にはその人にしか描けないその人の絵になります。AIはまだまだ何でも描けるものではありません。ネットでAIイラストを探すと粗製乱造の最大公約数的な女の子がドヤ顔でこっち見てますよね。自分ならそれ以上のものは作れる自信はありますが、まあ競ってその程度と言う事です。漫画家さんの様に流れるストーリーを紡ぐにはアイディアや人生経験が必要だし、プロのイラストレーターさんの様に計算された配色やデザインは当然無理だし、それを行うにはもうAIイラストからは離れて普通に画像編集した方が早いですしそれはもうデザイナーの分野です。真に描きたいものがあるなら、絵の学習と同じくらいモデルデータの精査に時間を要するかも知れません。これももちろんその方向性でスクリプトを組んでる人達もいますが、最終的には最初に申し上げた通り、使う人間が何をしたいのか?と言う所だと思います。道具を上手に使える人も居れば、ただ道具としてあればそれでいい人もいますし、悪い使い方をする人もいます。問題はやはりよく確かめずにそれを広める事にあると私は考えます。
本記事は他者の著作物の不正利用を肯定する意図はなく、またモデル等を公開する予定もありません。出来る範囲で、迷惑にならない様、楽しく。です。

あ、アンジェラちゃんはめちゃくちゃ可愛く描けるようになりました。今の所ゾーイちゃんは服までは満足いきますが剣と盾がまだヒット率低めです。合掌。

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