Глава 14a. Latent + U-Net

Глава 14a. Latent Diffusion и U-Net: почему шумят не в пикселях

Сжимать картинку в латент — не «уменьшить вход ради скорости».
Это смена пространства, в котором вообще существует процесс диффузии.

Глава 14 объяснила прямой и обратный шум.
Здесь разберём связку, которая сделала большие визуальные модели практичными:
автоэнкодер + denoiser с skip-связями + условие.


14a.1. Боль pixel-space диффузии

Диффузия в пикселях честна и прожорлива.

На каждом шаге сэмплинга сеть должна обработать тензор размера изображения (часто с ещё большим внутренним width).
Умножьте на десятки/сотни шагов — получите счёт, который убивает интерактивность.

Грубые гипотезы ускорения:

  1. Меньше шагов (лучше сэмплер / дистилляция).
  2. Меньше разрешение.
  3. Другое пространство признаков, где «картинка» уже сжата, но семантика жива.

Третий путь — latent diffusion.


14a.2. Автоэнкодер как договор о сжатии

Сначала учим (или берём готовый) автоэнкодер:

Автоэнкодер и латент

Требования к z жёстче, чем «просто меньше»:

  • хорошо реконструирует визуально важные детали;
  • достаточно непрерывный/регулярный, чтобы на нём жить гауссовскому шуму;
  • компактный по H×W (часто ×8 down по пространству) и умеренный по каналам.

Размер латента

Обмен автоэнкодера:

Получили Чем заплатили
Диффузия считает на меньшем тензоре Артефакты AE (лица, текст, тонкие линии)
Меньше VRAM/шаг Ошибки AE нельзя «долечить» одним только denoiser’ом
Практичный high-res Два модуля вместо одного, два режима поломок

Важная тонкость:

Уменьшить картинку resize’ом до 64×64 ≠ получить латент AE.
Resize выбрасывает информацию необратимо и тупо.
AE учит какую информацию сохранить в z, чтобы decoder поднял её обратно.

Именно поэтому вопрос из конца главы 14 («почему не просто меньшая картинка?») имеет жёсткий ответ: другой обмен по потере деталей и семантике.


14a.3. Диффузия в z: тот же сюжет, дешевле сцена

Дальше почти дословно глава 14, но для z:

обучение:   z0 → зашумить → zt → сеть(zt, t, condition) → оценить шум
инференс:   zT ~ N(0,I) → … → z0 → decode → картинка

Условие (текст, класс, маска) подаётся в denoiser через cross-attention / AdaLN / concat — детали эволюционируют, идея одна:

Генерация = управляемая реставрация латента.

flowchart LR
    T[Текст/условие] --> D[Denoiser]
    N[Шум zT] --> D
    D --> Z0[z0]
    Z0 --> DEC[Decoder AE]
    DEC --> X[Картинка]

14a.4. Почему denoiser так часто U-Net

U-Net здесь не ностальгия по сегментации.
Это снова глава про skip-connections — только в роли реставратора.

U-Net denoiser

Зачем skip при денойзинге:

  • низкие уровни помнят края и высокочастотный мусор/детали;
  • bottleneck держит грубую структуру;
  • склейки позволяют на поздних шагах вернуть текстуры, не восстанавливая их «из воздуха» только из маленькой карты.

Рифмы с книгой:

Идея Где уже была
Skip для деталей ResNet / U-Net сегментации / FPN
Многомасштабность Пирамиды детекции
Высокие частоты в конце Частотный взгляд + поздние шаги диффузии

Современные диффузионные трансформеры (DiT и компания) показывают: U-Net не священная корова.
Но причина его успеха остаётся учебной: реставрации нужна дорога для деталей между масштабами.


14a.5. Где система ломается: карта поломок

Симптом Куда смотреть сначала
Мыло / каша AE reconstruction, слишком сильное сжатие
Текст кривой AE + разрешение латента
Не слушает prompt Conditioning / attention к тексту
Медленно Число шагов, sampler, размер латента
Артефакты сетки Decoder, VAE scaling, postprocess

Урок архитектора генерации:

Не отлаживайте «диффузию вообще», отлаживайте звено цепи.
Иначе вы крутите шаги сэмплера, когда умер decoder.


14a.6. Ускорения поверх латента

Даже в латенте счётчик шагов кусается. Дальнейшие обмены:

  • лучше ODE/SDE-сэмплеры (меньше шагов при том же качестве);
  • дистилляция teacher→student (4 шага вместо 50);
  • consistency-подходы;
  • квантизация/TensorRT на denoiser;
  • меньше латент / меньше условие (ценой контроля).

Снова таблица книги: качество × контроль × ms × VRAM.
Latent diffusion просто сдвигает парето-фронт ближе к продукту — не отменяет фронт.


Если бы вы были автором статьи…

  1. Сравните pixel-diffusion на 128×128 vs latent-diffusion на 512×512 с AE ×8
    при близком wall-clock. Кто победит визуально на мелком тексте?

  2. Абляции skip в U-Net denoiser: уберите половину skip-связей.
    На каких шагах t качество падает сильнее — ранних или поздних?

  3. Зафиксируйте denoiser, смените только AE (сильнее/слабее сжатие).
    Какая метрика ловит «смерть латента» раньше FID?

После этой главы генерация должна читаться как знакомая инженерия масштабов и skip-путей — только loss учит реставрацию из шума, а не бокс вокруг кошки.