VAE и latent: сжатый холст
Мы уже знаем: чистка шума идёт не по пикселям, а по сжатой версии - latent. VAE - это архиватор, который жмёт пиксели в latent и разжимает обратно. Маленький кубик, но от него зависят цвета и резкость.
Latent - это эскиз на кальке в 8 раз меньше холста. Модели удобно и быстро работать по эскизу. Но повесить на стену нужно полноразмерный холст - этим и занят VAE Decode в конце: разворачивает эскиз в настоящие пиксели. А если ты подаёшь свою картинку на вход (img2img), сначала VAE Encode сжимает её в такую же кальку.
Два направления VAE
- VAE Decode (LATENT → IMAGE): финал txt2img. Есть в скелете.
- VAE Encode (IMAGE → LATENT): вход для img2img и inpaint. Именно эта нода позволяет «перекрасить» готовый кадр (скриншот из 3D-программы, фото, набросок): грузишь картинку → VAE Encode → KSampler с denoise 0.4-0.6 → VAE Decode.
Встроенный VAE против отдельного
Обычно VAE уже зашит в checkpoint (тот третий провод из Load Checkpoint) - и его хватает. Но иногда стоит подгрузить отдельный VAE нодой Load VAE и воткнуть в VAE Decode вместо встроенного:
- Картинки блёклые, серые, «выцветшие» - частый признак кривого/битого VAE. Лечится заменой на хороший.
- Артефакты на SDXL в fp16 - известный баг, есть готовый фикс: sdxl-vae-fp16-fix. Положи в
models/vae/и используй его для SDXL. - Flux/SD3 идут со своим VAE - не подсовывай им VAE от SDXL, не совпадёт.
VAE от SDXL не подойдёт для SD1.5 или Flux - у них разное latent-пространство (разное число «каналов»). Если картинка на выходе - цветной шум или каша, первое подозрение: неправильный VAE или неправильный decode под эту модель.
txt2img: Empty Latent → KSampler → VAE Decode → Save.
img2img: Load Image → VAE Encode → KSampler (denoise 0.4-0.6) → VAE Decode → Save.
Разница ровно в том, откуда берётся стартовый latent: из пустого холста или из твоей картинки. Всё остальное - тот же скелет.