【生成AI】生成AIで自分用のキャラを生成して遊びたい その3【LoRA】
前回の続き。
6日目
本日の目標は絵柄の安定とクオリティの向上。
あれから色々試した結果、LoRAを指定する・指定しない以外は全て同じプロンプトでそれぞれ出力すると、LoRAを指定した場合に背景、顔のディテール含めて劣化することが分かった。
右がLoRA指定あり。ウェイトは0.6。背景や手がかなり適当になる。チェックポイントは99mix。
ということで、今回は学習回。LoRAの学習について。
手足や背景の崩れから、恐らくLoRAの影響が出すぎている(チェックポイントを参考にすればいいのに、学習不足のLoRAを参照してしまっている)ため、学習の設定とタグの理解を中心に作業。
+昨日、下半身がぼやけてたので下半身ショットを10枚ほど追加。
タグはsmileなどの表情やcross armsなどのポーズに関するモノ、ぱっと見明らかに違うモノを削除する。重複も削除すると良いっぽいけど、削除しすぎると逆に再現性が落ちる印象を受けた。これは素材数や対象物(キャラや服など)に依るモノっぽい。基本はTaggerで自動タグ付けしたそのままでも運用可で、明らかに違うモノを削除するとノイズが減る、という認識の方が良いっぽい。その方が楽だし。
というか認識が逆で、消すとトリガータグに吸収され、残しておくと指定しないといけなくなる?
タグの理解がいまいち…。
モデル(チェックポイント)について
色々調べていると派生がたくさんあるのでもう追い切ることは不可能だし、チェックポイントをマージして使っている人も多数いるのでこの話はここでおしまい!はい!
ということで色々DLして出力してみた。(LoRAが使いまわせるよう、Illustrious系というやつでまとめました)
ntrMIXIllustriousXL
prefectIllustriousXL
sakuraplatinum
waiIllustriousSDXL
個人的にはwaiかprefectかな、と思ったので、prefectでHires,fix、解像度マシマシでプロンプトをある程度指定して出力してみる。
ショットガンを持たせてみた。
手も細部もそこそこだけど、非常に時間がかかる。30分ぐらいかかった。
解像度を下げたり、Hires,fixでごまかしたりしてみたものの、満足行くクオリティとなるとやはり時間がかかってしまう。
いやでもさすがにかかりすぎじゃないか? と思って調べることに。
結果、WEBUIで色々と設定があった模様。
最初からやっとけという話ではあるけど、まあ独学なのでね、しょうがないね。
効率を上げるために、それら設定することに…となって、時間が来たので就寝。
そもそも処理が速いpony系に乗り換える、というのも一つの手らしいけど、とりあえず設定をしてみる。
7日目
処理を速くする設定を調べると大きく変わるのは3つ。
xformers
FP8設定
NVIDIAドライバーのVRAMオフロード設定
とりあえず、それぞれやっていこう。ちなみにこれらはNVIDIA製のグラボじゃないと効果がないようです。
最初にxformersの設定。
xformersは、いつもWebUIを起動しているときに使うwebui-user.batをメモ帳か何かで開いて、
下記のコマンドset COMMANDLINE_ARGS=の右側に–xformersを入力して保存。
set COMMANDLINE_ARGS=–xformers
その後普通に起動して画面下にxformersのバージョンが表示されてればOK。
無い場合は勝手にインストールされて、有る場合は使用して起動するようになる。
これをやると少し精度が下がり同じ画像を出しづらくなるらしいが、速くなる。
なんか左にあるtorchっていうやつのバージョンとの兼ね合いで上手くインストールできないときがあるらしいので、その時は両方最新にアップデートすればいける。アップデート方法は調べてください(丸投げ)。
追加したコマンドはxformers使う場合は入れっぱなしでOK。
次はFP8設定。
WebUIを起動して、Settingタブ、左上のサーチに「fp」と入力するとそれっぽい項目が出るので、FP8をEnableにする。
ついでにChache FP16~もチェック入れとくといいらしい。
これをやると少し精度が下がるらしいが、速くなる。
次、NVIDIAドライバーのVRAMオフロード設定。
NVIDIAコンパネ→3D設定→プログラム設定→python.exeを選択
「CUDA – Sysmem Fallback Policy」を「Prefer No Sysmem Fallback」に設定
python.exeは追加しないとないかもしれない。
これをやるとVRAMがいっぱいいっぱいになったときに通常メモリを使うんだけど、そのスワップ処理の方に時間がかかってしまうので、いっそVRAMだけで処理するようにすると速くなる、という設定。
設定したらPC再起動しよね。設定変えたら再起動! 困った時も再起動! 一番簡単なトラブルシューティングだ、覚えて帰ってね。
設定&再起動後。
23分かかったのが1分で終わるようになりました。わお、爆速!
と思って調子に乗ってたらメモリアウトバウンズエラーが発生しました。
色々試した結果、webui-user.batに–medvramを追加することで対応。
set COMMANDLINE_ARGS=–xformers –medvram
VRAM使用を制限するオプションだけど、そもそもそんなに無い(16GB)ので、速度が遅くなることはなく…どころか速くなりました。
いっぱいいっぱいになることで全てが遅くなる現象を回避することで逆に速くなる、的なやつかもしれません。(適当)
ちなみにそれでもエラーがでるならmedvramの部分をlowvramに変えるとより強く制限をかけられるらしいです。
で。
その後は安定して、大体45秒前後で出力可能に。これなら常用できるぜ! ということで次の段階へ。
とりあえず、色々なプロンプトを借りてきて生成、チェックポイントを変えて生成、でプロンプトの使用感やチェックポイントの雰囲気の把握方法など、生成AIの生成側のコツを少し掴むために試行錯誤をした。
試したのは以下の3つ。プロンプトはそれぞれ同じでチェックポイントだけ変更。ネガティブプロンプトは全部共通。
左から、
ネオン街&ショットガン持ち&不安な顔
カフェ&リラックス&笑顔
アイドルステージ&マイク持ち&笑顔
ntrMIXIllustriousXL
prefectIllustriousXL
sakuraplatinum
waiIllustriousSDXL
だいぶ綺麗になったというか、AI絵っぽくなりました。
一番左(ショットガンのやつ)はサイバーパンクシティと書いたので、某サイバーパンクゲームの影響が強い…。
真ん中のカフェのやつはdetailed skin, detailed face, detailed eyesを使用しているので、明らかにクオリティが上がっている印象を受ける。
カフェのプロンプトは以下のサイトを参考にさせていただきました。感謝。
どれも違ってどれもなんか特徴がありそうでなさそうでなにを使おうか悩むけど、まあ切り替えられるしいいか。
ということで、次はプロンプト修練を積み、色々なシチュエーションを出せるように試してみる…と勢い込んだところで就寝。
























