VAE

Last-modified: 2025-12-25 (木) 09:46:56

VAE

VAEって何?

VAEの効果

Variational Auto Encoder。
一応VAE自体も広義の画像生成モデルの一種なのだが、一般ユーザーにそう認識されることは少ない。
Stable Diffusionのような画像生成AIは潜在拡散モデルと呼ばれ、潜在空間(latent space)と呼ばれる情報が圧縮された世界で生成処理をしている。
これは単純に画像のサイズを縮小するのとは全く別物*1
VAEはこの潜在空間との橋渡しをする役割を果たしている。
具体的には生成の最終段階でVAEが潜在空間表現から一般的な画像の形式にデコードすることで画像が完成する。
生成の最後でトラブルが起きることが多いのはこのデコード処理に多くのVRAMが必要なため。
逆にimg2imgでは最初にVAEが画像を潜在空間表現にエンコードしている。

 

SD1.5のアーキテクチャ設計ではVAEの役割が現在より軽く見積もられており*2
結果としてVAEと生成したい画像との相性の問題が今より大きかった。

原則的にすべてのモデルにVAEが内包されているが、それが適切なVAEとは限らない。
具体的には、彩度が低く灰色っぽくなったり、紫色の斑点が出現したり、といった問題が発生することがある。
必要や好みに応じて別のVAEを指定しよう!

もっと見る

96 無念 Name としあき 23/02/10(金)02:33:24 ID:iNtCkbRs No.1065201947 del +

>そもそもVAEが何だかよくわかってない

t2iでの説明をすると

画像の元になるノイズ画像 を VAEを通して64x64のサイズに(正確には各辺1/8のサイズに縮小する)

SD本体でpromptを見比べながらノイズを画像にしていく

SD本体が作った64x64サイズのものをVAEが512x512のサイズに戻る

 

ざっくり説明だとこんな感じ

AIにとって理解しやすい拡大縮小をしてる部分だから色味や細部の線のでかたに影響がある

今あるのだとイラストに強くて奇麗だけど少し色あせてボケ気味なのと

イラストに強くて色味が強すぎるのと

何でもできるけど他がイラストに特化してる分実写が得意なのと選択肢が狭い

VAEのFAQ
 

VAEが使われている場所

※下記画像で「事前学習モデル」となっているのは「入力画像」(txt2imgでは空)の誤り。

230719_01_SDにおけるVAEのi位置.png

主なVAE

SD v1.x専用

VAEは、モデルに比べると極端に数が少ない。主要なVAEファイルは5~6種類程度。

vae-ft-ema-560000-ema-pruned.safetensors二次系で安定
vae-ft-mse-840000-ema-pruned.safetensors実写向き・二次でもいい
kl-f8-anime.ckpt
kl-f8-anime2.ckpt彩度高い
autoencoder_fix_kl-f8-trinart_characters.ckpt彩度めちゃ高い
としあき製VAEシリーズ
ClearVAE壺産。シャープ、かつ彩度が若干高め。

SDXL専用

SD1.5系ではVAEが原因で生成が破綻するケースもあったが、SDXLの標準VAEは最初から完成度が高くそれが原因で生成に支障をきたすということはほぼなくなっている。
またSDXLで使われるVAEはSD1.5より表現形式の幅が広いため、互換性問題がシビアで差し替えたときにトラブルが起こりやすくなっている。その為、代替VAEの重要性は薄れた。

 

VAEの重要性が十分に広まったため、モデル(checkpoint)にもともとVAEを焼き込んでくれている場合が多い。
VAEがbakeされていない場合はモデルの作者が推奨するVAEを使っておけば大丈夫。
どうしてもVAEを独自に指定したい場合は、特にこだわりがなければSDXL VAEを使うと良いだろう。
ちょっと雰囲気の違う塗りが欲しい場合はXL_VAE_Cというものがある。
XL_VAE_Cのバリエーションの一つであるEシリーズとFシリーズは彩度が高く独特の透明感があり特にアニメ塗りモデルによく合う。
sdxlVAEsample.png

VAEを置く場所・適用方法

VAEの保存先

  • (1111の場合)
    C:\stable diffusion\webui\models\VAE
    人によって親フォルダ名は異なります。
  • (NMKDの場合)
    \Data\models\vae

VAEの適用方法

Stable diffusionの設定を変更し、VAEを実際に適用させよう。

  • (1111の場合)
    1111でのVAE適用方法
  • (NMKDの場合)
    • まず右上の歯車アイコン(Open Settings)を押す。
    • そしてこの画像の通り。
      NMKD 1.9.1でのVAE適用方法

(1111)VAEを手軽に切り替える方法

Quicksettings listを利用しよう。

QuicksettingsにVAEを追加する方法

Settings → User interface → Quicksettings list
に「sd_vae」を書き足して画面上部の Apply settings を押す。
するとあら不思議、画面上部にSD VAEの欄が!

画像生成AIとしてのVAEの特徴

高速で無難な出力をするが、ボケやすいという特徴を持つ。
SDのVAEがそんなにボケないのは、ディテール描写に優れるGANの手法を一部取り入れて構築されているため。
とはいえGANの弱点があまり出ない程度の利用に抑えられているため、長所の部分も本家のGANには及ばない。なのでUpscalerにはそちら等が使われる。

 

「重い画像生成モデルの前後に軽量なVAEを挟んで計算コストを抑える」という手法は現在では当たり前になっているが、Stable Diffusionが初めて実用レベルで成功させた。
VAEを使わない拡散モデルはそれ以前にもあったが、計算コストが極めて重かった為OpenAIやGoogleなどのAI先進企業がクローズドソースでWebサービスとして公開する程度だった。
現在個人のPCでも動くような画像生成AIが多数普及しているのもこのVAEのおかげである。

画像生成AIとしてのVAEの長所

  • 生成が高速。
  • 多様性は比較的確保しやすい。分からないから適当に描きこんだだろみたいなのはGAN程にはない。
  • オートエンコーダの名の通り次元圧縮にも使える。
  • 教師なし学習なのでアノテーション(キャプション)の手間がない。
  • 学習も安定しやすい。

画像生成AIとしてのVAEの短所

  • 単独で生成に使うとボケやすい。AIにとっての無難な選択=平均化なのでボケやすくなる。
  • プロンプトによる条件付けが難しい。

コメント

  • 見ないうちに情報充実してる。VAE周りよくわかってなかったのですごい助かる。 -- 2023-02-03 (金) 20:25:05
  • VAEについての情報助かる -- 2023-02-14 (火) 21:18:29
  • 新しいモデルを試すとcivitaiのサンプリングと違って色褪せて灰色っぽくなって困っていたけど、VAEが入ってなかった。一番の悩みを解決してくれて、ありがとうございますた! -- 2023-03-19 (日) 11:26:59
  • sd_vae,を追加したのですが、SD VAEの右側に重さの数字を設定できる方法があったはずのなのですが、settingのどこをいじるんでしたでしょうか? -- 2023-04-05 (水) 09:54:16
    • ↑すいません。解決しました。clipskipのことだったようです。 -- 2023-04-05 (水) 11:05:30
    • よう。某所でその質問に回答した者だ。でもwikiで質問するよりは、あそこの方が回答者人口多いかもしれないなあ。たぶんふたばの方がもっと回答者多いし、質問するにも回答するにも画像を貼り易いから都合がいいんだけどね。 -- 2023-04-05 (水) 12:43:57
  • XL_VAE_Cを使うと画像が真っ黒になってしまったけど、--disable-nan-checkを外したら直った -- 2024-06-16 (日) 13:23:05

(Tips)

  • 既存コメントの先頭にあるラジオボタンをONにすると、そのコメントの下にぶら下げ返信する形になります(ツリー構造)。
  • コメントの文中で↵ボタン(下の画像参照)を押すと「&br;」の文字列が挿入されます。これは送信後に改行として機能するので、文章の整形に役立ちます。
    br.png


*1 とは言ってもエンコード後の表現形式もビットマップ画像(ラスター画像)に近い。ただし各マスはRGB値ではなくそのマスの特徴を圧縮した潜在表現になっている。
*2 拡散モデルの前後で軽量なVAEを使うというアイデアはStable Diffusionで初めて実用化されたもので、当時はまだ技術的に成熟していなかった。