高解像度画像生成AIモデル:SDXLとは
画像生成モデルSDXL
SDXLは、画像生成のデファクトスタンダードです。
本記事ではSDXLが何なのか(what it is)の解説を行います。SDが何なのかの記事はコチラ
SDXLは、latent diffusionをensemble of expertsしたものです。
だから、latentとdiffusionとexpertとensemble of expertsがわからないとわかりません。
1. Latentについて
Latent Spaceは、Latent Variablesで張る空間です。
Latent VariablesはLatent Dirichlet Allocationなどの階層ベイズアルゴリズムで主に使われる変数です。ベイズでなくともPrincipal ComponentでもAutoEncoderでも良いですが、いずれにせよ、直接観測はできないが、何らかの値を持っており、さらにそれが観測可能変数に影響するということを
p(x|z)
という式で表した時、zにあたる変数のことです。
xは画像だと思いがちですが、CLIPという手法によって、xは画像と文章のペアとなっています。zが何なのかわからないと思いますが、さしあたってはxのクラスタのクラスタ番号と思っておけば良いと思います。CLIPはOpenCLIP-ViT/GとCLIP-ViT/Lでpre-trainされています。
2. Diffusionについて
を読むとわかります。
この論文ではマルコフ遷移行列Tπのことです。これにちなんで、逆関数をDeep Neural Networkなどでモデリングして、ノイズから画像の再構成を行うアルゴリズムをDiffusionとかDenoiserと呼びます。
実際DNNでモデリングされるのは逆関数の微分、Fθの部分です。
逆関数を実行すると生成画像にちょっと近づくのですが、逆関数の実行はOrdinal Differential Equationを解くことと同値で、それは統計学でいうスコア関数を求めることと同じです。
3. Expertについて
Expert Denoiserの略です。
を読むとわかります。
pが多次元すぎるので、直接解を求めることが困難です。
pをΣpiの部分和に分けて、piをFiで学習したものDi(Fi)をExpert Denoiserと言います。
4. Ensemble of Expertsについて
Expert Denoiserをたくさん繋げた方が、Denoiserをたくさん繋げるより性能が出て、それがEnsemble of Expertsと呼ばれています。DN(DN-1(...(D1)...))ですね
SDXLは、latent diffusionをensemble of expertsしたものです。
そこで、latentとdiffusionとexpertとensemble of expertsを解説しました。では実装を見ていきましょう。
BaseとRefineについて
SDXLは、noisy latentを生成する”Base Model”と、それをより綺麗な画像にする”Refinement Model”から構成されています。
Modelのソースコード
diffusers
で実装されています。
Modelの構造を知りたければ、このあたりが参考になるのでは無いでしょうか。
Base:
Refinement:
そういえばCLIPも説明してませんがUNetも説明していませんでしたね、まぁ深入りしすぎると取っ付きにくすぎるので、本記事の大枠を理解した上で取り組むと良いと思います。
各パーツの専門的な知識を得るためのガイド
-
DenoiserをなぜDeep Neural Networkで学習できるか知りたい→Deep LeaningとUNet
-
Latent Spaceが何なのか知りたい→PRML(パターン認識と機械学習)下巻やMackayを読む
-
Refinerが何をしてるか知りたい→超解像アルゴリズムの歴史
-
CLIP→まずはContrastive Learningを勉強
おわりに
本記事では「SDXLとは何か」の解説をしました。
SDXLとは、latent diffusionをensemble of expertsしたもので、BaseとRefinementで実装されています。
LatentがCLIPされているので、text2imageなどが可能なModelです。
これ以上の解像度で理解するには、各パーツの専門的な知識が必要になります。
Discussion