Привет! Эта статья представляет собой мою первую независимую статью на Medium, и я открыт для любых отзывов в разделе комментариев — ваши идеи действительно ценны.

Моя цель — поделиться литературой, которая помогла мне понять модели устойчивой диффузии. Я организовал эту литературу в хронологическом порядке, чтобы облегчить понимание того, как идеи предыдущих исследований повлияли на более поздние работы.

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

Эта статья предназначена для людей, разбирающихся в нейронных сетях. Кроме того, прежде чем углубляться в эту статью, я рекомендую ознакомиться со следующими темами:

  • Архитектура автоматических кодировщиков
  • Автоматические кодеры с шумоподавлением
  • Архитектура UNet
  • Трансформеры
  • Встраивание текста

Где это началось

Первой статьей (о которой я знаю), в которой были представлены алгоритмы диффузии, используемые в последних моделях скрытой диффузии, является статья Глубокое обучение без учителя с использованием неравновесной термодинамики, опубликованная в 2015 году.

Вдохновленная неравновесной статистической физикой, в этой статье представлена ​​модель, которая систематически разрушает структуру данных за определенное количество t шагов в процессе, называемом прямой диффузией. После этого модель учится восстанавливать структуру данных, что называется обратной диффузией.

Процесс прямой диффузии представляет собой цепь Маркова, которая постепенно добавляет гауссов шум к входному изображению. Это цепь Маркова, поскольку каждый выходной сигнал на этапе Ti зависит и является производным от выходного сигнала в состоянии Ti — 1.

Затем всю цепочку можно аналитически оценить с помощью обратной диффузии, где модель предсказывает изображение с шумоподавлением для каждого шага t. Например, генеративно-состязательные сети (модели GAN) пытаются предсказать полное распределение за один шаг, по сравнению с итеративным процессом, используемым в диффузионных моделях.

Повторное введение Diffusion для генерации изображений

В статье Вероятностные модели диффузии с шумоподавлением от 2020 года процесс диффузии был улучшен и показал первые впечатляющие результаты, аналогичные моделям GAN того времени.

Авторы выбрали архитектуру UNet, которая по сути представляет собой автоматический кодер с некоторыми отличиями. Основным отличием улучшения градиентного потока являются остаточные соединения между кодером и декодером.

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

Они также отметили, что модель на самом деле дает лучшие результаты, если она научится предсказывать добавленный шум, а не изображение, стоящее за шумом в процессе обратной диффузии. Это означает, что затем вы можете просто вычесть прогнозируемый шум из вашего зашумленного изображения, чтобы получить тот же результат для каждого t шага.

Авторы показали, что для широко используемого набора данных CIFAR10 их модель превзошла существующие на тот момент модели SOTA по показателям начального (IS) и начального расстояния Фреше (FID), а для безусловной генерации в том же наборе данных они получили результаты SOTA по FID. счет.

Повторное введение диффузии в генеративное моделирование заложило основу для таких проектов, как GLIDE, Midjourney и, в конечном итоге, Stable Diffusion.

Предварительная тренировка контрастного языка и изображения (CLIP)

OpenAi опубликовала свою статью Изучение переносимых визуальных моделей с помощью наблюдения за естественным языком и сообщение в блоге о своей многомодельной модели CLIP с открытым исходным кодом. Эта модель изучает визуальные концепции посредством контроля естественного языка, что не было новой концепцией, однако она научилась очень хорошо сопоставлять текстовые подсказки с изображением.

Из сети было извлечено более 400 миллионов изображений и дополнено текстовыми подсказками; Они заметили, что производительность при нулевом выполнении можно значительно улучшить, настроив текстовое приглашение для каждой задачи. По этой причине парные текстовые запросы содержали больше информации по сравнению с обычными моделями классификации, где текстовое приглашение состояло бы только из имени объекта/класса, например dog, в этой настройке это было бы фотография большой собаки.

Их предварительная подготовка заключалась в обучении

  • Кодировщики текста на основе преобразователей.
  • Кодеры изображений на основе преобразователя изображения
  • Кодировщики изображений на основе RestNet.

Выходные векторы для кодировщика текста (Ti) и кодировщика изображения (Ii) затем используются на следующем этапе их консервативного процесса предварительного обучения. Входные данные для этих кодировщиков:

  • Подсказка с описанием объекта на изображении, например фотография большого {объекта. Это полезно, поскольку позволяет модели также выучить другие понятия и слова, например, photo и big.
  • Изображение, содержащее описываемый объект.

Выходные данные кодировщика текста и изображения затем объединяются для каждой пары текстовых изображений в матрицу со следующими свойствами:

  • Каждое пятно в матрице представляет собой произведение вектора изображения и вектора текста, Ii * Ti.
  • Диагональ матрицы состоит из совпадающих пар текстовых изображений.
  • Каждый элемент строки, не являющийся частью диагонали матрицы, представляет собой любую другую комбинацию текста и изображения, не совпадающую между собой.

Модель учится максимизировать диагональ и минимизировать недиагональные элементы. Этот процесс выводит контрастные представления, которые фиксируют информацию, которая является общей как для изображений, так и для текстовых источников, отсюда и название Предварительное обучение контрастному языку-изображению. Модель является скорее контрастной, чем прогнозирующей, поскольку она изучает связь между текстовыми и визуальными представлениями одного и того же абстрактного объекта.

Модель выводит изученные представления встраивания изображения и текста. Эти вложения можно оценить количественно, используя косинусное сходство или евклидово расстояние, чтобы получить оценки сходства. Эти оценки сходства можно использовать для множества задач, например, для дискриминаторов в моделях GAN или в качестве классификаторов изображений. Более того, встраивание расширенного текста и изображений, созданное кодировщиками текста и изображений, оказалось очень полезным и для других моделей (подробнее об этом в статьях ниже).

Управляемый язык для распространения изображений для создания и редактирования (GLIDE)

Чуть позже, в конце 2021 года, OpenAI опубликовала свою статью GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models. Авторы показали отличные результаты, позволив своей модели распространения также обучаться на текстовых данных, используя управляемое распространение и сравнивая руководство CLIP и руководство без классификатора.

Они использовали архитектуру Unet для диффузных слоев в своей модели. Был использован тот же набор данных, что и для DALL-E, который состоит из пар текстовых изображений. Каждый текст состоял из подсказки, описывающей изображение, которому он соответствовал, аналогично CLIP, например глупая собака.

Управляемое распространение

Они использовали модель Transformer для кодирования текстовых подсказок и использовали выходные данные окончательного слоя внедрения в качестве условия для классов в модели распространения. Это классовое обусловливание использовало внимание для обслуживания каждого прямого и обратного уровня внимания/подавления шума.

Руководство по CLIP

В процессе диффузии шумоподавления во время вывода они используют CLIP для управления классификатором. Они взяли градиент контрастной матрицы скалярного произведения, произведенной CLIP. Они нарушили среднее значение процесса шумоподавления с помощью этого градиента, который перемещает исходное изображение с шумоподавлением в направлении, для которого CLIP прогнозирует совпадение с текстовым изображением. Похож на модель Dreep Deam от Google.

Руководство без классификаторов

Наконец, они использовали трюк под названием «Руководство без классификаторов», точная причина, по которой он так хорошо работает, еще не до конца понятна. Вот как это работает; Сначала во время обучения они также предоставляют модели примеры без текста, поэтому модель также учится генерировать без текстовых указаний. Затем во время процесса шумоподавления во время вывода они позволили модели дважды предсказать шум; один раз с заданной подсказкой (текстовым руководством) и один раз без нее.

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

Теоретически разница между шумом, предсказанным с помощью текстового руководства (εθ(xt|y)) и без текстового руководства (εθ(xt|∅)), представляет собой шум что текстовое руководство повлияло на прогнозируемый шум. Эта разница в шуме на каждом шаге tумножается на скаляр s, который затем добавляется к прогнозируемому шуму. По сути, это подталкивает прогнозирование шума в правильном направлении, поскольку на каждом этапе мы учитываем больше шума, специфичного для текста, усиливая эффект шума, который добавляет текст. См. формулу из их статьи ниже:

εˆθ(xt|y) = εθ(xt|∅) + s · (εθ(xt|y) − εθ(xt|∅))

Результаты

Они обнаружили, что руководство без классификатора работает лучше, чем руководство CLIP, как показано выше.

Последняя важная часть, которую следует отметить, это то, что они обучили диффузионную часть своей модели с помощью изображений с разрешением 256x256, поскольку процесс диффузии — это очень интенсивный процесс в пространстве пикселей, в котором он работает. Они также обучили кодировщик и декодер понижать и повышать дискретизацию входных изображений с 1024x1024 до 256x256 в кодере и обратить процесс вспять для создания более высокого разрешения в декодере.

Скрытая диффузия

Скрытая диффузия спешит на помощь! В конце 2021 года исследователями компаний The CompVis Group и Runway была опубликована статья Синтез изображений высокого разрешения с моделями скрытой диффузии. Их основной вклад заключался в том, чтобы переместить процесс диффузии из пиксельного пространства в скрытое пространство, что сделало процесс диффузии более эффективным и позволило его запускать на потребительских машинах.

Вы можете думать о модели как о большом автоэнкодере (AE), где диффузия происходит в скрытом пространстве. По сравнению с предыдущими моделями диффузии, такими как GLIDE, которые выполняли диффузию в пиксельном пространстве. Модель скрытой диффузии (LDM) намного меньше и более эффективна, поскольку векторы, используемые для управления процессом диффузии, находятся в самом нижнем измерении модели — скрытом пространстве.

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

Затем они применяют процесс распространения в UNet к представлениям скрытого пространства, поступающим от кодировщика их предварительно обученного AE. Это применяет шум к скрытому представлению и пытается удалить его снова, выводя новый скрытый вектор, представляющий скрытое с шумоподавлением. Они также заметили, что использование рекомендаций без классификаторов повышает качество выборки.

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

Затем декодер их AE просто повышает дискретизацию выходного сигнала скрытого представления с шумоподавлением до разрешения 1024x1024.

ДАЛЛ-Е2

Перенесемся в начало 2022 года, когда OpenAI опубликовала статью Иерархическая генерация текстовых условных изображений с помощью CLIP Latents о своей модели DALL-E2. Эта работа является продолжением их более ранних моделей CLIP, DALL-E и GLIDE. Авторы в этой статье называют эту модель unclip, поскольку модель превращает вложения текста из модели CLIP обратно в изображения.

Обратите внимание, что они использовали модель CLIP иначе, чем в документе GLIDE для руководства CLIP.

Модель CLIP принимает пару текстовых изображений, которые она пропускает через кодировщик текста и кодировщик изображений для создания вложений. Затем к этим внедрениям применяется контрастивное обучение, чтобы определить, насколько семантически связана текстовая подсказка с визуальной концепцией.

Предпринятые шаги заключаются в следующем:

  1. Возьмите предварительно обученную модель CLIP и зафиксируйте ее веса.
  2. Закодируйте приглашение во встраивание, передав его через текстовый кодер CLIP.
  3. Обучается априорная модель, основанная на диффузии (они также пробовали авторегрессионную априорную модель), которая берет встраивание текста и сопоставляет его с соответствующим встраиванием изображения CLIP. Таким образом, предыдущая модель учится генерировать встраивание изображения, которое будет генерировать модель CLIP.
  4. Затем они используют модифицированную модель GLIDE, где они отображают встраивание изображения с помощью процесса шумоподавления/обратной диффузии стохастическим образом. Это позволяет модели генерировать множество возможных изображений, относящихся к схожим визуальным концепциям.

Я слышу, как вы думаете, почему они используют априорный код для создания CLIP, например встраивания изображений?

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

К сожалению, из-за того, насколько «открытым» является OpenAi, он не открыл исходный код своих весов и сделал использование своей модели платным за счет своего API.

Скрытое распространение с открытым исходным кодом (стабильное распространение)

После того, как модель DALL-E2 стала доступна через платную точку доступа OpenAI в 2022 году, в августе того же года была выпущена первая версия масштабной модели Latent Diffusion с открытым исходным кодом. Обучение этой модели финансировалось Stability AI, и эта модель называлась Stable Diffusion.

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

Например, некоторые модели Midjourney также кажутся моделями скрытой диффузии. Однако я не знаю, основываются ли они на модели стабильной диффузии или создали свою собственную.

Модель Stable Diffusion была обучена на наборе данных LAION-Aesthetics, который был создан с использованием новой модели на основе CLIP, которая фильтровала другой набор данных под названием LAION-5B на основе того, насколько красивыми были изображения (их собственные слова).

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

Это также побудило многих разработчиков создать веб-интерфейсы с открытым исходным кодом, которые можно использовать бесплатно. Например:

Модели стабильной диффузии претерпели множество впечатляющих улучшений, что привело к еще лучшим результатам, например:

  • Использование CLIP для вставки введенного текста и изображения.
  • Множество различных сэмплеров, каждый со своими качествами.
  • Обучение модели для конкретных задач, таких как рисование.
  • Специализированные методы тонкой настройки, такие как Инверсия текста или Dreambooth.

Заключение

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

Последние слова

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

Поскольку это моя первая самостоятельная статья, пожалуйста, не стесняйтесь оставлять мне отзывы. Делиться очень приятно :)