AI活用

ComfyUIのVAEとは|色・明暗・破綻に影響する理由を図解

ComfyUIのVAEは、画像とLatentを相互に変換する橋渡し役で、色味・明暗・細部の破綻に直接影響します。VAE EncodeとDecodeの位置、内蔵VAEと外部VAEの違い、同じLatentを2つのVAEでDecodeして比較する手順、不一致の症状の切り分けを解説します。

この記事の目次
  1. 結論:VAEは「最後に画像へ戻す変換器」で、交換はモデルの推奨に従う
  2. VAEは画像とLatentの橋渡し:2つの空間を往復させる変換器
  3. VAE EncodeとDecode:txt2imgとimg2imgで登場する位置が違う
  4. 内蔵VAEと外部VAE:Checkpointに含まれる場合と別読み込みを分ける
  5. VAEを変えると何が変わるか:同じLatentをDecodeして色・階調の差を観察する
  6. VAE不一致の症状:色崩れ・明暗・互換性を候補として切り分ける
  7. むやみに交換しない:モデルの公式推奨とWorkflowの前提を優先する
  8. よくある質問
  9. VAEを指定しなくても画像が出るのはなぜですか?
  10. SD1.5用のVAEをSDXLのモデルで使えますか?
  11. VAE DecodeでVRAM不足になります。
  12. まとめ

ComfyUIのVAEは、人が見る画像(IMAGE)と生成モデルが扱う圧縮データ(LATENT)を相互に変換する「橋渡し役」で、画像の色味・明暗・細部の破綻に直接影響します。KSamplerが作るのはLatentであって画像ではないため、最後にどのVAEで画像に戻すかで、同じ生成結果でも見た目が変わります。

情報確認日:2026年8月22日(日本時間)

結論:VAEは「最後に画像へ戻す変換器」で、交換はモデルの推奨に従う

責任範囲

  • VAEが画像空間とLatent空間を往復させる変換器であること、VAE EncodeとVAE Decodeがtxt2imgとimg2imgのどこに現れるか
  • Checkpointに内蔵されたVAEと、Load VAEで別読み込みする外部VAEの違いと配線
  • 同じLatentを2つのVAEでDecodeして、色・階調の差を自分の環境で観察する手順
  • 色崩れ・明暗のずれ・エラーをVAE不一致の候補として切り分ける順番と、むやみに交換しない判断基準
  • Latentそのものの仕組みは別記事で扱い、img2imgのdenoiseはimg2imgの記事に渡す。特定VAEの優劣やランキングは扱わない
スポンサーリンク

VAEは画像とLatentの橋渡し:2つの空間を往復させる変換器

画像生成モデルは、ピクセルの画像を直接は扱いません。画像を縦横それぞれ8分の1に圧縮したLatentという数値の塊の上でノイズ除去を繰り返し、最後にその塊を画像に戻します。この「画像→Latent」と「Latent→画像」の2方向の変換を担うのがVAE(Variational Autoencoder)です。

画像空間(IMAGE)            Latent空間(LATENT)
  人が見るピクセル画像   ──VAE Encode──▶  縦横1/8の圧縮表現
  例: 512×512×RGB        ◀──VAE Decode──  例: 64×64×4チャンネル
                                            ↑
                                   KSamplerはここを書き換える

公式ドキュメントはVAE Decodeを「圧縮されたLatent表現をVariational Autoencoderで画像に変換するノード」と説明しています。圧縮といっても、zipのように元に完全に戻る可逆圧縮ではありません。Encodeで一度捨てた情報はDecodeで「それらしく」補われるため、同じ画像をEncode→Decodeしただけでも、細部や色味がわずかに変わります。この「補い方」がVAEごとに違うことが、VAEを変えると色や階調が変わる理由です。

Latentの中身や、IMAGE型とLATENT型が分かれている理由そのものは、Latentの別記事で扱います。この記事では「変換器としてのVAE」に絞ります。

VAE EncodeとDecode:txt2imgとimg2imgで登場する位置が違う

ComfyUIにはVAEを使うノードが2つあり、向きが逆です。

ノード 入力 出力 役割
VAE Encode pixels(IMAGE)、vae(VAE) LATENT 元画像をLatentにして、KSamplerの出発点にする
VAE Decode samples(LATENT)、vae(VAE) IMAGE KSamplerが出したLatentを画像に戻す

txt2imgでは、出発点がEmpty Latent Image(空のLatent)なのでEncodeは不要で、最後のVAE Decodeだけが登場します。img2imgでは、元画像をLatentにするVAE Encodeが先頭に加わり、最後のVAE Decodeと合わせて「往復」になります。

txt2img
  Empty Latent Image ─LATENT─▶ KSampler ─LATENT─▶ VAE Decode ─IMAGE─▶ Save Image

img2img
  Load Image ─IMAGE─▶ VAE Encode ─LATENT─▶ KSampler ─LATENT─▶ VAE Decode ─IMAGE─▶ Save Image

どちらの構成でも、VAE Decodeに渡すvaeは「Load CheckpointのVAE出力」か「Load VAEの出力」のどちらかです。img2imgでは、EncodeとDecodeに同じVAEをつなぐのが基本です。往路と復路で違う変換器を使うと、元画像の色が保たれない原因になります。denoiseで元画像をどこまで残すかはimg2imgの記事を参照してください。

内蔵VAEと外部VAE:Checkpointに含まれる場合と別読み込みを分ける

Load Checkpointは、MODEL・CLIP・VAEの3つを出力します。つまり多くのCheckpointにはVAEが内蔵されており、何もしなければその内蔵VAEでDecodeされます。一方、Load VAEノードでComfyUI/models/vae(またはextra_model_paths.yamlで設定した場所)にあるVAEファイルを別に読み込み、内蔵VAEの代わりにつなぐこともできます。

観点 内蔵VAE 外部VAE(Load VAE)
出どころ Load CheckpointのVAE端子 Load VAEのVAE端子
配線 Checkpoint → VAE Decode.vae Load VAE → VAE Decode.vae(Checkpoint側のVAEは未接続のまま)
使う場面 配布元がそのまま使うよう案内しているとき 配布元が特定の外部VAEを推奨しているとき、内蔵VAEに問題があるとき
注意 Checkpointによっては内蔵VAEの品質が低い場合がある モデル系統(SD1.5 / SDXL など)と一致している必要がある
内蔵VAEを使う
  Load Checkpoint.VAE ──▶ VAE Decode.vae

外部VAEを使う
  Load VAE.VAE ──▶ VAE Decode.vae
  (Load Checkpoint.VAE は何にもつながない)

外部VAEに切り替えるときは、VAE Decodeのvae端子の線を差し替えるだけです。img2imgならVAE Encode側も同じVAEに差し替えます。Load VAEの一覧にファイルが出ないときは、拡張子と置き場所を確認し、画面の再読み込みをしてください。Load VAEの一覧にはtaesd系の軽量VAEも出ることがあり、これはプレビュー用途の近似デコーダです。最終出力にはCheckpointの系統に合った通常のVAEを使います。

VAEを変えると何が変わるか:同じLatentをDecodeして色・階調の差を観察する

VAEの影響を理解する一番確実な方法は、「同じLatentを2つのVAEでDecodeして並べる」ことです。KSamplerまでの処理が同一なら、2枚の違いはVAEだけが生んだ差になります。

  1. txt2imgの最小Workflowで、seedを固定して1枚生成する(KSamplerの設定は変えない)
  2. KSamplerのLATENT出力を分岐し、VAE Decodeを2つ置く。片方のvaeにLoad CheckpointのVAE、もう片方にLoad VAEで読み込んだ外部VAEをつなぐ
  3. それぞれの出力をSave Imageにつなぎ、filename_prefixを「vae_builtin」「vae_external」のように分ける
  4. 1回実行すると、同じLatentから2枚の画像が出る。100%表示で並べて比較する
KSampler ─LATENT─┬─▶ VAE Decode (vae: Checkpoint内蔵) ─▶ Save Image (vae_builtin)
                 └─▶ VAE Decode (vae: Load VAE 外部)   ─▶ Save Image (vae_external)

比較するときは、次の観点を表に記録します。差が出る量はモデルとVAEの組み合わせで変わるため、ここでは数値を示しません。自分の環境で埋めてください。

観点 見る場所 内蔵VAE 外部VAE
全体の色味 肌・空・白い壁など広い面の色
明暗・コントラスト 最も暗い部分と最も明るい部分の差
彩度 鮮やかな色がくすんでいないか
細部 目・髪・文字・遠景の線
破綻 格子状のノイズ、色の斑点、にじみ
Decode時間 コンソールの所要時間

この比較で変わらないものも把握しておいてください。構図、人物のポーズ、物の配置は、Latentが同じなので2枚で一致します。VAEが変えるのは「Latentを画像に起こすときの解釈」であって、何が描かれるかではありません。構図まで違うなら、seedや他の設定が固定できていません。

VAE不一致の症状:色崩れ・明暗・互換性を候補として切り分ける

生成画像がおかしいとき、VAEが原因である可能性は「どうおかしいか」で見当が付きます。次の表は、VAEを疑う症状と、VAE以外の候補を並べたものです。

症状 VAEが原因のときの特徴 VAE以外の候補
全体が灰色がかる・くすむ 構図は正常で色だけ薄い CFGが低すぎる、promptの指定
色の斑点・格子状のノイズ 細部だけ壊れ、大きな形は保たれている stepsが少なすぎる、VRAM不足による途中打ち切り
明暗が極端に偏る 白飛び・黒つぶれが広い面に出る promptの照明指定、LoRAの強度
実行時にエラーで止まる VAE Decode/Encodeのノードで止まる モデル系統の不一致、VRAM不足
img2imgで元画像の色が変わる denoiseを0に近づけても色が戻らない EncodeとDecodeで違うVAEを使っている

切り分けの順番は、まずVAE Decodeのvae端子を「Checkpoint内蔵」に戻して再生成することです。それで直れば外部VAEが原因で、多くはモデル系統(SD1.5用とSDXL用など)の不一致です。直らなければVAEの外に原因があるので、KSamplerの各値やpromptを疑います。VAE Decodeで落ちるのにVAEを戻しても落ちる場合は、解像度が大きすぎてDecode時にVRAMが足りていない可能性があり、タイル分割版のVAE Decode(VAE Decode Tiled)に差し替えて通るかを確かめる手もあります。

むやみに交換しない:モデルの公式推奨とWorkflowの前提を優先する

「VAEを変えると色が良くなる」という話は事実ですが、それは「そのモデルに合うVAEへ変えた場合」に限ります。合わないVAEへ変えると、前節の症状がそのまま起きます。交換するかどうかは、次の順で判断してください。

  • モデルの配布ページに「推奨VAE」または「VAE内蔵(baked in)」の記載があるか。記載があればそれに従う
  • 配布Workflowを使っているなら、そのWorkflowがLoad VAEを置いているか。置いていれば作者が意図したVAEで、外すと前提が崩れる
  • 外部VAEを使う場合、モデル系統(SD1.5 / SDXL / その他)が一致しているか
  • 変える前に内蔵VAEで1枚、変えた後に同じLatentで1枚、前節の手順で比較して記録したか
  • 比較の結果、色・階調・細部のどれが改善し、どれが悪化したかを言葉にできるか

VAEは「最後の一手」なので、生成の質そのものを上げる道具ではありません。構図や人物が崩れる、promptが効かないといった問題は、VAEを変えても解決しません。まずモデル・prompt・KSamplerの設定で狙いどおりの生成ができてから、仕上げの色と階調をVAEで整える、という順番を守ってください。

よくある質問

VAEを指定しなくても画像が出るのはなぜですか?

Load CheckpointがVAEを出力しており、最小Workflowではそれを直接VAE Decodeにつないでいるからです。内蔵VAEで十分なモデルも多く、外部VAEは必須ではありません。

SD1.5用のVAEをSDXLのモデルで使えますか?

系統が違うVAEはLatentの前提が合わず、エラーか大きく崩れた画像になります。必ずモデルと同じ系統のVAEを使ってください。

VAE DecodeでVRAM不足になります。

Decodeは高解像度ほどメモリを使います。タイル分割版のVAE Decodeに差し替えるか、解像度を下げてから段階的に上げてください。VRAM不足全般の切り分けは別記事で扱っています。

まとめ

ComfyUIのVAEは、IMAGEとLATENTを往復させる変換器です。txt2imgでは最後のVAE Decodeだけ、img2imgでは先頭のVAE Encodeと最後のVAE Decodeの両方に現れ、どのVAEをつなぐかで色味・明暗・細部が変わります。

内蔵VAEと外部VAEの違いは、VAE Decodeのvae端子に何をつなぐかだけです。変えるときは、同じLatentを2つのVAEでDecodeして並べ、色・階調・細部・破綻を自分の目で記録してください。交換の判断は、モデルの配布元の推奨とWorkflowの前提を優先し、VAEは仕上げの一手として扱います。

スポンサーリンク