Фокус наоборот

Представьте фотографию, на которую постепенно сыплют цифровой песок: сначала немного, потом больше, пока от изображения не остаётся равномерный серый шум. Испортить картинку так — тривиальная задача. Диффузионная модель учится делать обратное: глядя на зашумлённое изображение, угадывать, какой шум к нему добавили, и аккуратно его убирать.

Если научиться снимать шум понемногу, можно начать с чистого хаоса и, повторяя шаг десятки раз, прийти к чёткой картинке. Это и есть генерация: модель не достаёт изображение из памяти, а проявляет его из случайности, как фотограф когда-то проявлял снимок в ванночке. Только здесь проявитель сам решает, что именно проявится.

Название пришло из физики: диффузией называют процесс, при котором капля чернил постепенно растворяется в стакане воды. Модели, по сути, учатся отматывать эту диффузию назад. Глядя на один стакан, можно увидеть только мутную воду, но модель, повидавшая миллионы таких стаканов, учится угадывать, какой была капля.

Как текст управляет шумом

Сам по себе процесс очистки выдал бы случайную, хоть и правдоподобную картинку. Чтобы получить именно «кота в скафандре на фоне Сатурна», нужен способ подсказать модели, что мы хотим увидеть. Для этого используют текстовые описания.

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

Есть и параметр, который отвечает за то, насколько строго следовать подсказке. Если ослабить его, картинка получится свободнее и неожиданнее. Если усилить, она точнее соответствует тексту, но рискует стать перенасыщенной и пластиковой.

Тот же механизм позволяет не только создавать картинки с нуля. Если взять готовое изображение, добавить к нему немного шума и дать модели очистить его с новым описанием, получится редактирование: можно поменять стиль, время суток или дорисовать недостающую часть кадра. Глубина изменений зависит от того, сколько шума добавили. Чуть-чуть — и картинка почти не изменится, много — и от оригинала останется только общая композиция.

Почему это стало возможным

Идея диффузионных моделей появилась в научной литературе в середине 2010-х, но долго оставалась академической диковинкой. Перелом случился в начале 2020-х, когда сошлись несколько факторов:

  • Улучшенные методы обучения, которые сначала сделали качество генерации сопоставимым с прежними лидерами — генеративно-состязательными сетями, а затем позволили их превзойти.
  • Работа в сжатом пространстве. Вместо того чтобы чистить миллионы пикселей, модель работает с компактным представлением изображения и лишь в конце разворачивает его в полноразмерную картинку. Это резко снизило требования к железу.
  • Огромные наборы пар «картинка — подпись», собранные из интернета.
  • Открытые релизы, после которых генерация изображений перестала быть привилегией крупных лабораторий и переехала на домашние видеокарты.

Диффузионная модель не рисует картину — она убирает из шума всё, что на картину не похоже. Почти как скульптор из старой шутки, который просто отсекает от камня лишнее.

Странности и ограничения

У диффузионных моделей узнаваемые слабости. Долгое время их визитной карточкой были руки с шестью пальцами: модель хорошо усваивает общий вид руки, но плохо — точное количество её частей. Похожая беда была с текстом на картинках: буквы выглядели как буквы, но складывались в абракадабру. Новые поколения моделей во многом справились с этими проблемами, но сам пример показателен: модель усваивает статистику внешнего вида, а не устройство предметов.

Вторая сложность — согласованность. Сгенерировать одного и того же персонажа в разных сценах, сохранив его лицо и одежду, до сих пор непросто. Обычно для этого нужны дополнительные ухищрения вроде дообучения на конкретных образах.

Есть и особенность, к которой пользователи быстро привыкают: один и тот же запрос даёт разные картинки, потому что каждая генерация начинается с нового случайного шума. Если зафиксировать этот стартовый шум, результат становится воспроизводимым. Тогда можно менять описание по одному слову и наблюдать, как меняется изображение, — отличный способ понять, как модель «читает» текст.

Дальше — видео, звук и не только

Диффузионный подход оказался удивительно универсальным. Тот же принцип «научись убирать шум» применяют для генерации видео, где к двум измерениям картинки добавляется время, для синтеза музыки и речи, для проектирования молекул. Где-то диффузию комбинируют с трансформерами, где-то ищут более быстрые методы, позволяющие получить изображение за несколько шагов вместо десятков.

Для пользователя всё это скрыто за строкой ввода. Но полезно помнить, что происходит за ней: каждая сгенерированная картинка — это шум, который очень терпеливо и очень умело уговорили стать изображением.

Понравился материал?
Подписывайтесь — так вы не пропустите новые.
RSS-лента

Комментарии

Будьте вежливы — это делает обсуждение лучше

Пока нет комментариев — будьте первым.