【生成AI】生成AIで自分用のキャラを生成して遊びたい その2【LoRA】

前回の続き。
チェックポイントの選定と、学習素材の調整。

4日目

まずはチェックポイントを調べる。
調べたところ、出力したい絵柄に似ているチェックポイントは以下のモノ。
CounterfeitXL
Animagine XL
Anything XL
とりあえずここら辺が有名どころで、サンプルを見ると「AI絵でよくみるやーつ~」ってなる。

で。
この前と引き続き99mixと新たにAnything XLをチョイスして、学習素材を用意することにした。
画像はChatGPTに聞き、以下の配分、構図で用意した。

項目    理想値・指針
枚数   300〜600枚(多くても1000枚以内)
顔アップ 30%(角度・表情・ライティング多様に。感情は照れや泣き、怒りを計5~10%前後入れる)
胸上   30%(服装・角度・手や肩のラインを重視)
全身   30%(ポーズ・距離のバリエーション)
特殊   5〜10%(手足の補助や寝ている、座っている姿勢など)
学習解像度 512〜1024(ベースモデルに合わせる)

背景 無地 or 統一(背景学習を避ける)
光源・角度 均等にばらす(片寄ると破綻)
データ品質 圧縮ノイズなし・輪郭が明瞭・ピント良好

解像度は1024×1024(縦横1:1比率が良い模様)
枚数はそんなに用意するのが面倒…というかパターンが用意できないので全部で140枚ほど。
煽りや俯瞰も入れると良いらしい。
画像はこんな感じ。前回よりもポーズとしての自然さ、2Dでありそうな表情、構図を意識した…つもり。

素材画像を用意した後、WebUIのTaggerでタグ付けをし、今回はBooruDatasetTagManagerでいらないタグを削除。
やり方は簡単(合ってるかはわかりません)
1.BooruDatasetTagManagerをダウンロード。
BooruDatasetTagManager
2.BooruDatasetTagManager.exeを起動してFile→Load Folder→タグ付けしてTXTファイルが入った画像フォルダ
3.画像が出てくるので、左側の画像をALT+Aで全選択。すると右側にタグ一覧が出るので、その中からいらなそうなのを選んで一番右側のメニューの×ボタンを押す。(全ての画像についている該当タグが一括で編集される)
→腕組みとかブレストアップ(胸より上のカット)、シンプルバックグラウンドとか、ポーズや構図に関連するものやスマイル、歯など表情に関するものを中心に削除する。
4.削除したらそのフォルダでKohya_lora_trainerを使って学習する。

今思えば、手は顔にかぶせないで単独で見せたほうが学習しやすいのかなぁ、と思ったけど後の祭り。

学習するまでごはんを作って待つ…。今日はラーメンよ!
総ステップ数は2000~4000程度が良いらしい。大体1時間前後。

学習が終わった後、「夜空に花火が打ちあがる中、笑顔の女の子」というプロンプトで試し出力。

99mixで出力

Anything XLで出力

足が怪しかったり手が怪しかったり…。99mixの方が怪しい率はあがるものの、出力速度は速い。
Anything XLは忠実。柄や全体のまとまりに統一感が出やすい。さすが人気なだけはある、といった安定さ。

でもまあ、多少の違いはあれど、「おんなじ人物だよね?」と分かる程度にはなっている感じ。
顔~服辺りは似ているけどスカート以下が怪しいのは、多分学習不足の模様。全身というか、下半身が足りていない。

ただ、ここで一つの事実に気付く。

なんか画像のクオリティ低くね?

巷の「生成AIの効率的なノウハウを教えます! 1000円有料記事ばーん!」みたいな謳い文句と共に表示される画像はもっときれいだったんだけど、
なにが違うんだろう?

ということで、明日はそれについて調べることに。就寝。

5日目

クオリティ差について、色々調べるとVAEとHire.fixの設定に依るところが大きいらしいということが分かる。

それぞれの詳しい情報は置いといて。
とりあえずはこれらを設定することで「画像を生成した後に、クオリティを上げる」という作業が施される。

VAEについてはanime.vae.ptをセット。(アニメ調に良いらしい)
Hire.fixはChatGPTくんが教えてくれたのでそれを設定。

Upscalerの4x-AnimeSharpはDLしてこないといけないのでDLしてくる。
下記サイトを参考に導入しました。感謝。

あとついでに起動するたびに設定を毎回セットするのが面倒なのでConfig Presetを導入。
これによりサイズとかサンプラーの設定とかをプリセットとして保存して呼び出すことが可能に。
これは下記サイトで導入しました。感謝。

設定を終わり、出力。
当然だけど、処理が多くなるのでかなり出力の速度が低下する。
出力の速度を調整する場合、解像度>Step数の順にいじると全体のクオリティはある程度保ちつつ速度を上げることができる。

――と、ここで問題が発生。

途中までは良さそうだったのに出力した画像がガビガビに! なんだこれは。

調べるとカラーノイズ崩壊と呼ばれる現象だそうです。VAEの不一致が原因だとか。
各チェックポイントにはモデルに属したエンコード方法で処理しているので、VAE(デコード)もそれに属したものであることが必要。…らしい?
で、それっぽいAnything-V3.0.vae.ptをダウンロードしてまた再出力。

…同じだった。Anything-V3.0.vae.ptではダメだったので他を試してみる。

SDXL系はsdxl_vae.safetensorsが安定だというので、それをDLし適用。
普通はこんな手あたり次第ではなく、VAEを配布しているサイトで「Trained with VAE: ○○」や「Recommended VAE: ○○」という記載があるので、それを見て判断するらしい。
まあとりあえず動くならいいのよ、動くなら。

そして…なんとか出力できた。

クオリティは劇的に上がっているように見えないものの、拡大してみると目や輪郭などの細部が崩れていないのが分かる。
あと単純に解像度が上がって綺麗。手はなんか変だけど。

ただ、Anything XLだと少々時間がかかるのと、プロンプトで調整しないデフォの絵柄も目指しているところと少し違うようなので、他のチェックポイントも試そうと思いつつ、今日は就寝。

 

生成AI

Posted by luini