見出し画像

SDXL環境のメモ

はじめに

SD3が公開されてしばらく経ちましたが皆様いかがお過ごしでしょうか。
ボクはちょろっと試しましたが、すごすごとSDXLに出戻りしました。賢い人達が庶民に使いやすくしてくれるまでは寝て待ちます。

SDXLも最初は「こんなの使い物にならんぜ」という評価でしたが、色々あった末にSDXL最高だぜ!という感じになりました。
色々ありすぎて前に書いたLoRAの記事などは完全に風化したので、現在の環境をざっくり振り返りたいと思います。
なお、いつも通り技術的な内容は無いようです。


生成環境の準備

以前はPythonを手動でインストールするところからスタートでしたが、今は有能なインストーラがあるので活用しましょう。個人的にはEasySdxlWebUiStabilityMatrixの二択だと思っています。

EasySdxlWebUi

batファイルを実行するだけでExtensionを含めた全部乗せの環境が整うすごいやつ。Forgeベースで省VRAMのためのアレコレも整うのでVRAM 8GBでつらいンゴ><という人にも安心。

StabilityMatrix

A1111とComfy UIの二刀流など、複数のUIを管理するならコレが便利。
生成モデルやLoRAを手動でシンボリックリンク貼ったりする手間なく、複数UI間で共有できる。
Extensionなどを最小構成で余計なものを一切入れたくないという病を患っているボクのような方はこちらが良いと思います。

インストーラー無し

Skyrimでも「真のノルドはMOD管理ツールは使わぬ!全部直入れだ!」みたいな方がいましたが、そういう方は自分で調べられる人なのでお好きにどうぞ。一度は自前で環境構築した方がトラブル時に強いというのはある。

生成モデル

SDXLの生成モデルはAnimagine系とPony系の2種に大別されます。
※他にも自前でFine Tuningされている方もいると思いますが、知見が無いので割愛

重要なのはAnimagineとPonyの2つが異なるデータセットとキャプションでFine Tuningされているという点。そのため、LoRAが共用出来ない、promptの書き方が違うなどのSD1.5には無かった現象が見受けられます。

また、双方ともSD1.5では効果が無かったpromptがちゃんと反映されるケースが多いです。学習時の画像サイズを大きくした効果なんですかね?

ちなみにボクはAnimagine派ですが、両者それぞれに強みがあるので両方使いましょう。みんなちがって、みんないい。

LoRAの学習

半年前にVRAM 8GBでのLoRA学習について書きましたが、この記事の内容は(特にパラメータ設定については)一旦忘れてください。
あとVRAM 8GBのグラボは窓から捨てて4070tisを買いましょう。楽です。

その上で、これからLoRA学習を行う人はKohya lora param guiを入れましょう。各環境に対応したプリセットも用意されているので、readmeをよく読んだ上でプリセットをそのまま使いましょう、細かい設定をいじるのは慣れてからです。

上手に出来ましたか?readmeはよく読みましたか?上手くいかなかったら大体はデータセットに問題があります。オプティマイザやdim,alphaの数字を弄る前に画像やキャプションに重大な欠陥が無いか確認しましょう。ところでreadmeはよく読みましたか?

LoRAの使用

そもそもLoRAいらなくね?という話

前述の通り、SDXLのモデルはかなりの部分をpromptで制御できるようになりました。SD1.5では難しかったポーズもpromptで出ることが多い。なんなら版権キャラもpromptで出る(これが倫理的にOK/NGという話は棚上げで)

そのため、promptで解決できるものはpromptに任せて、LoRAを使用するのは生成モデルが知らない概念(マイナーなキャラクターやニッチな性癖など)を出したい時に絞った方が良いです。やっぱLoRA必要じゃん

LoRAの層別

SD1.5ではLoRA Block WeightでINのなに層とOutのどこ層をほにゃららすると余計な影響が排除できて~みたいなことをしていましたが、SDXLの層はOutの00~01層あたりに偏っていて分離は難しいです、体感ですが。いや、層ごとの偏りがあるというのは偉い人も言っていたので事実です。
つまり、層別せずとも余計な影響が無いLoRAを作りましょう。

自作LoRAの話

promptで大体解決できるよと言った矢先ですが、相変わらず「medium breastsは全然mediumじゃねーよデカすぎ」問題は全く解決されていないので、身体の一部を調整するLoRAを大量に作っています。

どれだけDL/使用されてもメイクマネーされるわけではないので宣伝しても現世利得はないですが、君たちが理想のキャラクターを生み出す手助けになればボクは嬉しい、ただそれだけ。

Control Net

anytestの概要

Flat LoRAその他もろもろを作ったすげー人の月須和氏が作ったすげーControl netのモデル。

方向性としてはLineartに近いが、何かいい感じに線を使ったり無視したりする。特にv4になってからは、start 0.0 ~ end 1.0でガッチリ使ってもなぜか生成モデルの素の絵柄になる。もはや魔法。
個人的にはいわゆる"画風"を参照元の画像から引き継いで欲しくないので、v4を主に使用しています。用途によってはv3も有用。

anytestの用法①ポーズや構図を引き継ぐ

promptで記述することが難しいポーズや構図を参照元の画像を用意することでサポートする。
参照元と生成物にどの程度差があるかにもよるが、endを0.2~0.4程度にするとキャラクターの差し替え(髪型の変更など)が可能。
以下はanytest v3を用いてAnimagineで生成した実例(まだv4が無かった頃なのでv3を使用している)

anytestの用法②差分を作成する

画像の色や光源などを変化させた差分を作成する。
参照元とほぼ同じ画像を出力するため、endは1.0とする。
以下はanytest v3を用いてAnimagineで生成した実例。

anytestの用法③Hires.fixのサポート

無策でHires.fix(特にlatent系)を使用すると余計な指が生えたりするが、それを防ぐ目的で使用する。
参照元とほぼ同じ画像を出力するため、endは1.0とする。
下記の記事が詳しいので、引用させていただきます。

anytestの用法④ノイズ法が帰ってきたぞ!

SD1.5の生成テクニックとして有名なノイズ法がSDXLでも使えるようになりました。やったね!
ノイズ法の生みの親が記事を出されているので引用させていただきます。

anytest使用時のパラメータについて

Control Weight : 原則1.0に固定
Starting Control Step : 原則0.0に固定
Ending Control Step : 用途によって0.2~0.4、あるいは1.0

参照元の画像からどの程度離れた画像を生成するかによってEnding Control Stepを調整する形。キャラクターの変更など、外縁の線に変更が必要な場合はEndを0.2~0.4で調整する。
SDXLのCN全般に言えることだが、少しの数値の違いで生成結果がガラッと変わるので、何でもこの数値でOKという都合の良い数値は無い。

その他のモデルについて

anytest以外にも優れたモデルがあるので簡単に紹介だけ。

青龍聖者氏の様々なモデル(特にtile_anime_beta)

かたらぎ氏のinpaintモデル

controlnet-unionについてはまだボクが触れていないので割愛。

おわりに

こうして振り返ると、本当にいろんな人の作ったものが積み重なって今の環境が出来上がっているんだなあと実感します。感謝感謝。いや、本当に。

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