SDXL1.0がリリースされたのは7/27だ。0.9から触る事ができていた事を考えるとだいぶ遅ればせながら、とりまSDXLを触ってみる。

SDXLの概要はこの辺のページを見てください↓

https://civitai.notion.site/SDXL-1-0-Overview-be7abd647f8d4446a615d0afc6f04296#dcde27835a434b87aacb6eff5e6d501e

SDXLはいつも通りWebUIから触れるが、それ以外にも有力な環境が二つある。Comfy UIFooocusだ。というわけで今回はこの3つの環境からSDXL1.0に触れてみたい。

まず、IT navi氏の記事を読んで、SDXLの仕組みについて調べる↓

SDXL 1.0をGoogle Colabで利用する方法|IT navi

SD1.4では、デフォルトの解像度は512x512が基本で、いきなり1024x1024で生成すると絵が崩れがちだったが、SDXLではデフォルト解像度が1024x1024になってるらしい。

また、SDXLではベースモデルリファイナーモデルという2種類のモデルが用意されており、ベースモデルが生成した(潜在空間上の)ベース画像をリファイナーモデルで仕上げる事で、VRAM量が制限されているコンシューマ環境でもいい感じの画像が生成できるという仕組みらしい。

WebUI

仕組みが分かったところでいつも通りのWebUIを使ってSDXL生成してみよう。

と言っても、特に難しい事は何もない。WebUIのバージョンが1.5.1以上ならSDXLをサポートしているから、あとはベースモデルとリファイナーモデルをダウンロードすればいいだけだ。

それで、WebUIでSDXL生成するには、まず普通にベースモデルを使ってtxt2img生成してから、次にリファイナーモデルに切り替えてimg2imgするという2ステップを行う形になる。(まあ絶対リファイナーモデル使わないとダメってもんでもないけど)

ところが、これは厳密にはSDXLで意図された設計通りの生成とは異なる。本来なら潜在空間のままベースモデルからリファイナーモデルに受け渡されるのが正しいのだが、WebUIでは一旦txt2imgで画像生成してしまってからリファイナーモデルに渡してしまってるので、これでは想定されている利用方法と違う。つまり意図されたとおりの性能が出ないかもしれないという気持ち悪さがあると言えばある。WebUIはSDXLにネイティブ対応できていないと言ってしまえるかもしれない。

それ以前に、イチイチ画像生成するたびにimg2imgに持っていってモデルをリファイナーに切り替えるのがそもそもクソダルいという問題が一番でかい。(モデルを切り替え忘れてリファイナーモデルのまま普通に画像生成しちゃうと完全崩壊した絵が出てきてビビらされる)

そんななか、SDXLのリファイナープロセスをいい感じにしたエクステンションが登場した↓