Суть авторегрессионной модели заключается в генерации нового изображения на основе максимального правдоподобия
Такой подход имеет преимущества:
Один недостаток - нужно определить порядок данных
Одной из таких авторегрессионных моделей является PixelRNN. В ней пиксели изображения генерируются на основе соседних левого и верхнего пикселей. Зависимость от предыдущих пикселей моделируется с помощью архитектуры LSTM (Long Short-Term Memory), из-за чего генерация работает медленно
Другие модели, PixelCNN и PixelCNN+, используют свёртки вместо рекуррентных связей, что ускоряет генерацию (можно параллельно обрабатывать строки). Однако качество чуть ниже, чем у PixelRNN, из-за ограниченного поля зрения
Чтобы улучшить модели и ускорить генерацию, применяют векторное представление (эмбеддинг) элементов последовательности. Но этого недостаточно для дальних зависимостей.
Чтобы решить эту проблему, применяют механизм внимания. Рекуррентная сеть обрабатывает входную последовательность, а внимание позволяет фокусироваться на частях предложения, которые важны в данный момент
Формула скалярного (масштабированного) внимания:
$\mathrm{Attn}(Q, K, V) = \mathrm{softmax} \left(\frac{Q \cdot K^T}{\sqrt{d_k}}\right) V \in \mathbb{R}^{N \times d_v}$
Здесь:
Механизм внимания применяется в архитектуре трансформера, изначально созданного для обработки естественного языка. Токены преобразуются в блоках кодировщика и декодировщика. Внутри каждого слоя кодировщика вектор важного слова имеет больший вес, чем неважные слова. Из этих взвешенных векторов слов получается контекст
Самовнимание (self-attention) - механизм, где $Q$, $K$, $V$ получены из одной и той же последовательности
Многоголовое внимание (multi-head attention) - несколько таких механизмов параллельно, каждый со своими весами, чтобы улавливать разные типы зависимостей
В трансформере кодировщик состоит из:
Декодировщик же состоит из таких частей:
Проблемы:
Первой такой моделью, которая применила трансформер для генерации изображений, стала ViT (Vision Transformer)
Получается, что изображение $H \times W \times C$ представляется в виде $N = \frac{H}{P} \cdot \frac{W}{P}$ патчей размером $P \times P \times C$
В гибридной модели используются не сырые патчи, а карты признаков из предобученной модели (например, ResNet), однако такое не приводит к улучшению результатов
При обучении на изображениях большего разрешения размер патча можно не менять, а всего лишь увеличивать их количество
Позже появилась модель VQ-GAN (VQ от Vector Quantization), объединяющая VQ-VAE и трансформер
Эта модель способна условно генерировать изображения с разрешением до 1 мегапиксель и работает так:
Трансформер же обучается предсказывать распределение возможных следующих индексов
Другая модель DALL-E от OpenAI позволяет генерировать изображение по тексту. Она является модификацией модели VQ-VAE. Для этого модель должна сделать соответствие между текстом и набором токенов из кодового блокнота
Еще одна модель MaskGIT (Masked Generative Image Transformer) имеет способность условно генерировать изображения, изменяя их детали или экстраполируя изображения
На каждой итерации модель предсказывает все токены, но сохраняет только те, в которых наиболее уверена. Оставшиеся токены будут предсказаны на следующих итерациях
В ней используется механизм двунаправленного внимания, а генерация разделена на две части:
Диффузионные модели были предложены в 2015, но стали популярны в 2021. Тогда они предлагали стабильное обучения, высокое качество генерации и возможность масштабирования
Идея диффузионных моделей основана на процессе диффузии из физики - перемещения частиц из области высокой концентрации в область низкой концентрации. Аналогично можно взять шум из пикселей и подвергнуть его обратному процессу диффузии
Обучающие данные медленно итеративно искажаются путем добавления гауссовского шума, медленно стирая детали в данных, пока они не станут чистым шумом. Такой процесс добавления шума выполнялся на протяжении $T$ шагов
Суть модели - научиться выполнять обратный процесс, то есть учитывая зашумленное изображение и номер шага спрогнозировать шум, добавленный к изображению на предыдущем шаге
Диффузионная модель обучается путем нахождения обратных марковских переходов, которые максимизируют вероятность обучающих данных
Параметризируется такой процесс с помощью параметра расписания добавления шума $\beta$
Сгенерированные числа от -1 до 1 дальше масштабируются до интервала от 0 до 255
GLIDE (Guided Language to Image Diffusion for Generation and Editing) позволяет генерировать изображение по тексту и имеет 3.5 миллиарда параметров
Имеет FID 12.24 на датасете MS COCO
Модель GLIDE использует архитектуру U-Net, механизм многоголового внимания и адаптивную нормализацию по группам
Диффузионная модель генерирует изображения размером 64х64 пикселя, поэтому применяются дополнительные модели для их увеличения до 1024х1024
После этого вышла модель DALL-E 2, которая используют диффузию и способна генерировать изображение по тексту. Имеет 5 миллиардов параметров и использует вместо условия коды текста, полученные от модели Prior в формате CLIP (Contrastive Language-Image Pre-training)
Другая модель Imagen способна генерировать изображения с разрешением 1024x1024 и использует 3 диффузионных модели: U-Net для генерации, Efficient U-Net для повышения разрешения дважды
Stable Diffusion является компромиссом между качеством генерации и производительностью. Вместо диффузии в пикселях, диффузия происходит в сжатом пространстве VQ-GAN. В ней механизм кросс-внимания используется для учёта текстового условия
Stable Diffusion умеет:
Stable Diffusion имеет открытый исходный код (https://github.com/CompVis/stable-diffusion), поэтому ее можно дообучать, например, генерировать изображения с определенным объектом
Есть два метода:
Textual Inversion
Есть 3-5 фото объекта, тогда замораживаем кодировщик текста и генератор, добавляем новый токен в словарь, а затем обучаем генерацию, ищем правильный токен
DreamBooth
Заморозим кодировщик текста, вводим новый токен, используем дополнительный штраф в функции потерь для избегания переобучения и тренируем генератор
В модели ControlNet контроль диффузии осуществляется с помощью дополнительных условий таких, как края объектов, карта глубины, позы, карты сегментации. В ней: