Компьютерное зрение

Image Generation: Diffusion

В октябре 2022 года Stable Diffusion запустили на обычном MacBook Pro - и он сгенерировал фотореалистичный портрет за 30 секунд. За три месяца до этого такой результат требовал GPU стоимостью 10 000 USD и часы работы. Как диффузионная модель в 4 раза меньше GAN стала в 100 раз мощнее?

  • **Adobe Firefly** использует диффузионные модели для генерации стоковых изображений - 3 млрд изображений за первые 12 месяцев
  • **Midjourney v6** и **DALL-E 3** - коммерческие продукты на основе диффузии, заменяющие фотостоки для иллюстраций
  • **Real-ESRGAN** используется в сервисах восстановления старых фотографий и масштабирования видео для стриминга

От термодинамики к DDPM и Stable Diffusion

Идею диффузионных моделей в 2015 году предложили Jascha Sohl-Dickstein с соавторами, вдохновившись неравновесной термодинамикой: процесс постепенно зашумляет данные, а модель учится обращать его вспять. Долго подход оставался теоретическим. В 2020 году Jonathan Ho, Ajay Jain и Pieter Abbeel из UC Berkeley в работе DDPM упростили обучение и впервые получили качество изображений на уровне GAN. В 2022 году Robin Rombach с коллегами перенесли диффузию в латентное пространство VAE - это и стало Stable Diffusion, моделью, способной работать на потребительском GPU.

Предварительные знания

  • Архитектура U-Net и skip connections
  • Латентное пространство и автоэнкодеры (VAE)
  • Принципы генеративных моделей
  • Image Generation: GANs
  • Semantic Segmentation

Stable Diffusion

В 2022 году модель весом 4 ГБ сгенерировала изображение, неотличимое от фотографии - и делает это за 5 секунд на обычной видеокарте. Раньше так умел только GAN, обученный неделями. Секрет - **диффузия в латентном пространстве**. Stable Diffusion работает не с пикселями 512x512 (786 тыс. значений), а со сжатым представлением 64x64x4 (16 тыс. значений) - сжатие в 49 раз. Это делает процесс вычислимым в реальном времени.

Архитектура SD состоит из трёх частей: VAE (сжимает изображение в латентный вектор и восстанавливает обратно), U-Net (денойзер, работает в латентном пространстве, принимает текстовый эмбеддинг через cross-attention), CLIP text encoder (переводит текстовый промпт в вектор условия). Процесс генерации: случайный шум -> 20-50 шагов денойзинга U-Net с текстовым условием -> VAE декодер -> изображение.

Зачем Stable Diffusion работает в латентном пространстве, а не напрямую с пикселями?

ControlNet

Проблема Stable Diffusion: текст задаёт семантику, но не геометрию. Промпт 'женщина с поднятой правой рукой' не гарантирует нужную позу - модель галлюцинирует. **ControlNet** решает это через дополнительный условный вход: карту глубины, позу скелета, карту нормалей, контуры Canny. Архитектура замораживает веса базового SD и обучает дополнительную копию кодировщика U-Net, принимающую структурный сигнал. Zero convolution (1x1 свёртка с нулевой инициализацией) обеспечивает стабильное начало обучения.

Типы ControlNet по входному условию: Canny (контуры объектов), HED (мягкие границы), Depth (карта глубины из MiDaS), Normal (карта нормалей поверхности), OpenPose (18 ключевых точек тела), Scribble (произвольные наброски пользователя), Seg (семантическая сегментация). Можно комбинировать несколько ControlNet с разными весами для точного контроля.

Для чего нужна Zero Convolution в архитектуре ControlNet?

Inpainting

Photoshop с инструментом Content-Aware Fill существует с 2010 года. В 2023 году Stable Diffusion Inpainting делает то же самое, но понимает семантику сцены: удаляет человека с пляжа и достраивает волны и песок так, как будто его никогда не было. Принцип: пользователь рисует маску (белый = заменить, чёрный = сохранить), модель видит замаскированное изображение и генерирует только в области маски, согласовывая с контекстом через self-attention.

Режимы inpainting: (1) Masked inpainting - генерация только в области маски с сохранением остального; (2) Outpainting - расширение изображения за края (нет маски, но есть пустые области); (3) Text-guided inpainting - 'замени кошку на собаку, сохранив освещение'. Runwayml обучил специальную SD-inpainting модель с 9-канальным входом (4 зашумленных + 4 исходных + 1 маска), что даёт лучшую согласованность с контекстом.

Почему специальная модель SD-inpainting лучше базовой SD при заполнении областей?

Super Resolution

Пиксель размером 1x1 мм на экране смартфона содержит информацию о реальном объекте. При увеличении в 4 раза из одного пикселя нужно сделать 16 - и угадать, какие детали там должны быть. Это **суперрезолюция**: задача восстановления высокочастотных деталей из низкочастотного входа. Диффузионные SR-модели (StableSR, Real-ESRGAN) делают это через генерацию правдоподобных текстур, а не интерполяцию - отсюда фотореалистичные волосы и ткани на увеличенных портретах.

Методы суперрезолюции по поколениям: (1) Бикубическая интерполяция - математически гладко, нет деталей; (2) SRCNN (2014) - первый CNN для SR, PSNR-ориентированный, замыленный результат; (3) ESRGAN (2018) - GAN-based, перцептивные потери, острые текстуры; (4) Real-ESRGAN (2021) - устойчив к реальным артефактам сжатия JPEG; (5) StableSR / DiffBIR (2023) - диффузионные, галлюцинируют детали при сильном увеличении (x8+).

Суперрезолюция восстанавливает исходную информацию, которая была 'потеряна' при сжатии

Суперрезолюция генерирует правдоподобные детали, которые статистически согласованы с контекстом - это не восстановление, а синтез

Из-за потери информации при даунсэмплинге обратная задача не имеет единственного решения. SR-модели выбирают наиболее вероятное решение из распределения, но исходные пиксели не восстановимы математически.

Почему диффузионные SR-модели при сильном увеличении (x8+) иногда хуже ESRGAN?

Ключевые идеи

  • **Stable Diffusion** работает в латентном пространстве VAE (64x64x4 вместо 512x512), что ускоряет денойзинг U-Net в ~49 раз без потери качества
  • **ControlNet** добавляет структурный контроль (поза, глубина, контуры) через обучаемую копию энкодера с zero convolution - базовые веса SD при этом заморожены
  • **Inpainting** и **суперрезолюция** - прикладные режимы: первый генерирует семантически согласованный контент в заданной области, второй синтезирует правдоподобные высокочастотные детали

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

Диффузионные модели строятся на фундаменте предыдущих генеративных подходов и открывают новые задачи компьютерного зрения:

  • Image Generation: GANs — Предшественник диффузии - GAN генерирует одним проходом генератора, диффузия итеративно денойзирует; оба решают задачу синтеза изображений
  • NeRF и Neural Rendering — Диффузия применяется для генерации novel view synthesis без NeRF-обучения (Zero-1-to-3) и для улучшения качества NeRF-рендеринга

Вопросы для размышления

  • Если диффузионная модель галлюцинирует правдоподобные детали при суперрезолюции, как это влияет на её применимость в медицинской визуализации?
  • ControlNet замораживает базовые веса SD и обучает только копию энкодера. Какие преимущества и ограничения у такого подхода по сравнению с дообучением всей модели?
  • Inpainting 'видит' область маски и контекст одновременно через self-attention. Почему же модели всё равно иногда создают неестественные границы?

Связанные уроки

  • cv-10 — Диффузия это преемник, обогнавший GAN в генерации изображений
  • cv-13 — Диффузионные приоры двигают novel-view и 3D-генерацию
  • dl-15 — Та же теория denoising diffusion в курсе deep learning
  • gai-09 — Курс generative AI выводит ту же формулировку диффузии
  • prob-19-brownian — Прямой процесс это дискретизованное броуновское зашумление
  • dl-01
Image Generation: Diffusion

0

1

Войти