Latent Space

latent space — сжатое многомерное пространство признаков

Раздел
Генеративные модели
Обновлено
19.06.26

Latent Space (латентное пространство) — это многомерное пространство, в котором нейросеть хранит сжатое представление данных. В Stable Diffusion каждая картинка превращается в латент-вектор размером 64×64×4 — это в 48 раз меньше пикселей, но в этом представлении модель видит структуру: соседние точки соответствуют похожим картинкам, направления — стилистическим признакам. Диффузия идёт именно в латенте, а не в пикселях — поэтому модели работают на потребительских видеокартах.

Коротко

Коротко. Latent Space — это «карта смыслов», на которой модель хранит данные не в виде пикселей, а в виде компактных векторов. Близкие точки на этой карте соответствуют похожим картинкам, направления — стилевым признакам. Stable Diffusion и FLUX работают в латенте 64×64×4 или 128×128×16, а не в пикселях 1024×1024×3, потому что это в десятки раз быстрее. От строения латента зависит, как ваша модель «думает» о картинках.

Что это такое

Представьте библиотеку с миллионом книг. Если хранить каждую книгу целиком, нужно много места. Но если каждой книге присвоить координаты — жанр (0..1), год (0..1), длина (0..1), сложность (0..1) — четырёх чисел достаточно, чтобы понять «о чём она». Книги детективов 2020-х окажутся рядом, классическая поэзия — в другом углу.

Latent Space — это та же идея, только координат не 4, а тысячи или миллионы. Нейросеть учится сжимать высокоразмерные данные (картинки, тексты, звук) в компактные векторы. И главное чудо в том, что эти векторы устроены осмысленно: соседи на «карте» — похожие объекты, направления — устойчивые признаки.

В Stable Diffusion есть два разных латент-пространства:

  • Латент VAE (картинка → 64×64×4 чисел). Это «сжатый пиксель»: каждая точка кодирует кусок изображения. Получается через encoder и разжимается через decoder. См. статью про VAE.
  • Латент CLIP / эмбеддинг текста (промпт → 768- или 2048-мерный вектор). Это «сжатый смысл»: точки рядом — похожие тексты. См. статьи про CLIP и Embedding.

Диффузионная модель «думает» в первом, направляется вторым.

Как это работает

В Stable Diffusion 1.5 при разрешении 512×512 цикл такой:

  1. Случайный латент 64×64×4 (16 384 числа) — это шум в латент-пространстве.
  2. Текст промпта превращается в эмбеддинг через CLIP.
  3. U-Net за 28 шагов двигает латент в направлении, соответствующем эмбеддингу. Каждый шаг — это маленький шаг по латенту от «шумной» области к «осмысленной».
  4. VAE Decoder распаковывает финальный латент в картинку 512×512×3.

Сжатие в 48 раз даёт громадную экономию: если бы диффузия шла на пикселях, тренировка моделей вроде SD занимала бы не недели, а годы, а инференс — не секунды, а минуты.

Самое интересное — устройство пространства. В работе исследователей видно, что движение по латенту между двумя точками даёт плавную последовательность картинок: например, медленный переход от лица одного человека к лицу другого. Это и есть «латент-волкинг» (latent walk), который используют в AI-анимации.

В FLUX и SD 3 латент устроен иначе: 16 каналов вместо 4, и сжатие меньше (×8 вместо ×8 в каждом измерении). Поэтому FLUX лучше рисует текст и тонкие детали — в его латенте больше «места» под информацию о пикселях.

Пример на практике

Художник делает 5-секундный AI-ролик: статичный портрет постепенно превращается в портрет соседа. Без понимания латент-пространства это невозможно: пиксельный morph даёт мертвенные переходы, кадры мерцают.

В ComfyUI он использует пайплайн с latent interpolation:

  1. Генерирует два кадра — портрет A (seed=184726) и портрет B (seed=582013). Записывает оба латента.
  2. Создаёт промежуточные латенты: для 120 кадров (24 fps × 5 сек) интерполирует между A и B с шагом 1/120.
  3. VAE Decoder превращает каждый латент в кадр.

Получается плавная анимация морфинга: черты лица поэтапно меняются, без резких прыжков. В пиксельной интерполяции (просто наложение двух кадров с прозрачностью) был бы «двойной портрет» в середине; в латентной — лицо постепенно превращается из A в B.

Этот приём — основа большинства AI-видео-эффектов до появления выделенных моделей вроде Wan, Hunyuan и Sora.

С чем часто путают

  • Latent space и pixel space — пиксельное пространство это сами пиксели картинки (512×512×3 = три миллиона чисел). Латент — сжатое представление в десятки раз меньше. Диффузия идёт в латенте, картинка появляется только после VAE Decoder.
  • Latent space и embedding — оба компактные представления, но контекст разный. «Эмбеддинг» обычно говорят про вектор текста или слова. «Латент» — про векторное представление картинки, особенно в диффузии.
  • Latent space и feature space — это разные имена для близкого понятия. «Латент» чаще про автоэнкодеры и диффузию. «Feature space» — про классическое машинное обучение и классификаторы.
  • Латент в SD и латент в FLUX — несовместимые пространства с разной размерностью. SD: 4 канала. FLUX: 16 каналов. Перенести латент из одной модели в другую нельзя.

Частые ошибки и заблуждения

  • «Латент — это сжатая картинка, можно его открыть в Photoshop». Нет. Это не пиксельные данные. RGB-просмотр латента покажет цветной шум, без структуры. Чтобы получить картинку, нужно прогнать через VAE Decoder.
  • «Большое латент-пространство = лучше качество». Не линейно. FLUX с 16-канальным латентом действительно качественнее SDXL с 4-канальным. Но цена — больше VRAM и медленнее работа. Универсального правила нет.
  • «Близкий seed даёт близкий латент». Нет. PRNG из 123 и 124 даёт совершенно разные стартовые шумы. «Соседние» латенты получаются только через Variation Seed с интерполяцией.
  • «Можно вручную править латент». Технически можно — некоторые ComfyUI-узлы открывают доступ к латент-тензору. Но интуитивного эффекта от ручной правки нет: «крутить пиксели» латента не так, как пиксели картинки.
  • «Латент-walking — это плавный морф пикселей». Нет, наоборот: латент-walking даёт семантически плавный переход. На пиксельном уровне промежуточные кадры могут выглядеть «удивительно», но композиция и смысл движутся непрерывно.

Связанные термины

  • VAE — кодирует/декодирует латент в пиксели и обратно.
  • U-Net — главная нейросеть SD, работает только в латенте.
  • Embedding — общий термин для компактных векторных представлений.
  • Diffusion — алгоритм, который шаг за шагом превращает шум в чистый латент.
  • CLIP — кодирует текст в эмбеддинг (тоже своего рода латент-пространство).
  • Latent Walk / Interpolation — приём для AI-анимации.
  • Variation Seed — параметр Automatic1111/ComfyUI для движения по латенту.

Частые вопросы

Размер латента в SD 1.5 / SDXL / FLUX? SD 1.5: 64×64×4 для картинки 512×512. SDXL: 128×128×4 для 1024×1024. FLUX: 128×128×16 для 1024×1024 (4× больше каналов).

Можно ли использовать латент одной модели в другой? Нет. Латент-пространства SD 1.5, SDXL и FLUX тренируются с нуля и не совместимы. Латент-тензор из SD 1.5, поданный в декодер SDXL, даст шум.

Зачем работать в латенте, а не в пикселях? Скорость и память. Латент 64×64×4 — 16K чисел, картинка 512×512×3 — 786K чисел. Сжатие в 48 раз позволяет тренировать и запускать модели на потребительских видеокартах.

Где увидеть латент-тензор в ComfyUI? В ComfyUI узел Empty Latent Image создаёт стартовый шум, KSampler возвращает шумоподавленный латент, VAE Decode превращает его в картинку. Любой латент-тензор можно сохранить в .latent-файл узлом Save Latent.

Что такое «latent upscale»? Способ увеличить картинку не в пиксельном пространстве, а в латентном: VAE кодирует исходник, латент масштабируется, U-Net дорабатывает по промпту, VAE декодирует. Результат часто чище, чем у обычного апскейла, но требует диффузионной модели.

Чем шум в латенте отличается от шума в пикселях? Принципиально это одинаковая случайная инициализация по нормальному распределению. Но интерпретация разная: пиксельный шум — это «грязная картинка», латент-шум — это «начальная точка в пространстве смыслов».

Главное

Latent Space — это территория, на которой живут современные диффузионные модели. Все вычисления, обучение и инференс идут в латенте, а пиксели появляются только в конце через VAE Decoder. Знание устройства этого пространства открывает практические возможности: интерполяция, latent upscale, regional prompts. Большинство «магии» Stable Diffusion и FLUX происходит не в картинке, а в этой невидимой математической карте.