雑に読む "The Illustrated Stable Diffusion"
by Jay Alammar
Stable Diffusionを大まかに分類する
文章理解部
77のトークン埋め込みベクトル(768次元)
画像生成部
どっちやねん

オートエンコーダーは入力とほぼ同じものを出力する
潜在空間にあった配列を画像に変換する
Diffusion(拡散)ってなあに?
上の画像のピンク部で行われる(Image Information Creator)
ノイズと埋め込みトークンを受け取って、デコーダーに渡す配列を作る
複数回のステップで行われる
入力テキスト(プロンプト)と、モデルからピックアップした視覚情報に近いlatents arrayを作る
?
Diffusionの仕組み
ノイズ予測器を作る
ある画像にノイズを追加する
ノイズの種類とノイズをかける強さを変えて数十個のパターンを作る
これを全画像で行う
このデータセットでノイズ予測器をトレーニングする
ノイズから画像を生成する
適当なノイズを用意
それと似たノイズを上でつくったデータセットから探す
そこからノイズを除去すれば画像が出てくるよね?
だから西洋美術的な画像だけでデータセットを作れば、出力も西洋美術っぽくなるし、漫画でデータセットを作れば出力も漫画っぽくなる
あれ?、ここまでだと他人の絵をコピペしてるだけやんっていうAIアンチの主張に反論できないぞ?

"元データにある画像"ではなくて、"似たような画像"なのでコピペではない
まだプロンプトも出てきてませんね
高速化
ピクセル画像ではなく潜在的なデータ上での拡散(Latent Diffusion)
Stable Diffusionでは高速化のために画像を圧縮したもので拡散処理をする
潜在空間上の流れは上と同じ
逆にノイズから生成された画像をオートエンコーダ(図のImage Decoder)で潜在空間から取り出す
条件付け
"プロンプトを理解させて、それに沿った絵を描かせたい"
画像生成コンポーネント(?)よりも言語モデルを入れ替えた方が性能があがる
これはまた別でやろう

画像生成プロセスにプロンプトの情報を入れる
ノイズ予測器を作る段階で、テキスト情報も含ませる必要がある
U-Net内でどんなふうに動いているのか見てみよう
ノイズ予測器(U-Net) テキスト情報なし
ノイズ予測器(U-Net) テキスト情報あり
乾燥卵(かんそうらん)
U-Netわからん

ノイズから画像を生成する方のU-Netが特にわからん