Мы все слышали о Stable Diffusion, инструменте генеративного ИИ, который создает изображения из текста (и может делать гораздо больше), но как он на самом деле работает?

Понимание моделей распространения:

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

Во-первых, гауссовский шум добавляется к исходному изображению в течение многих шагов (1000 шагов в соответствии с формирующим документом Вероятностные модели диффузионного шумоподавления (DDPM)), чтобы получить то, что по существу является чистым шумом (точка, выбранная случайным образом из гауссовского/нормального распределения). ). График отклонений β1, . . . , βT определяет, сколько шума добавляется на каждом шаге, в соответствии с приведенными ниже уравнениями.

Это называется опережающим процессом. Затем они немного переписывают это уравнение, устанавливая αt=1-βt, и α¯tк произведению всех αt s от временного шага t=1 до временного шага t=t. Теперь они переписывают уравнение (1) как

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

По сути, это означает: предсказанное моделью распределение данных xt-1 на временном шаге t-1 при заданном распределении данных xt на временном шаге t является нормальным распределением со средним значением µθ(xt,t) и ковариационная матрица Σθ( xt, t).

На практике авторы DDPM задают Σθ(xt, t) диагональную матрицу (σt)²I, где σt — заданный гиперпараметр для каждого временного шага t. Они также решили смоделировать µθ(xt,t) следующим образом:

εθ – это аппроксиматор функции, предназначенный для предсказания ε по xt, где ε приблизительно равен шуму, добавленному на t-1-м шаге прямого процесса. На практике εθ — это U-net.

Чтобы обучить U-сеть, они минимизируют вариационную границу отрицательного логарифмического правдоподобия (NLL) (по сути, представление того, насколько близко распределение вероятностей отражает набор данных, чем ниже NLL, тем ближе оно отражает набор данных) прогнозируемое распределение данных.

Используя определение расхождения KL (расхождение Кульбака-Либлера, статистическая мера различия между двумя распределениями вероятностей) ниже,

срок убытка упрощается до:

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

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

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

Давайте теперь посмотрим на все компоненты Stable Diffusion:

ВАЭ:

Помните, я сказал, что диффузионные модели также могут работать со сжатыми представлениями изображения? Стабильная диффузия на самом деле является одной из этих моделей диффузии, известных как Модели скрытой диффузии (LDM). В этих моделях используется вариационный автоэнкодер, или VAE, для сжатия изображения до меньшего скрытого пространства и добавления шума к этим скрытым значениям во время обучения, а также для расширения сгенерированных скрытых значений до размеров изображения во время логического вывода (т. е. U-net работает полностью в скрытом пространстве, а не в пространстве изображения). Stable Diffusion использует VAE, который преобразует каждый блок размеров [1x3x8x8] в блок [1x4x1x1]. Итак, RGB-изображение с разрешением 512x512 преобразуется в латентные размеры [1x4x64x64]. Модель U-net, описанная ниже, на самом деле работает с этими скрытыми данными, а не с изображениями.

Основное преимущество использования VAE заключается в том, что модель должна работать в меньшем пространстве ((1x3x512x512)/(1x4x64x64)=48, поэтому скрытое пространство в 48 раз меньше для изображений 512x512), поэтому обучение и вывод выполняются быстрее.

Планировщик шума:

Планировщик соответствующим образом масштабирует прогнозируемый шум модели, прежде чем удалить его из зашумленного изображения. U-сети для моделей распространения обычно обучаются с использованием планировщика DDPM (уравнения которого были приведены выше), но обычно для выборки используются другие планировщики, которые помогают значительно ускорить создание изображения. Существует несколько планировщиков, среди них DDIM, PNDM и Euler. Я рекомендую взглянуть на эту ссылку, чтобы ознакомиться с некоторыми популярными планировщиками.

Ю-нет:

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

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

Стабильная диффузия использует довольно большую модель U-net, содержащую около 859 миллионов параметров, со многими слоями внутреннего внимания (по обрабатываемому вектору) и перекрестного внимания (между обрабатываемым вектором и выводом текстового кодировщика, поясняется ниже). внутрь. Это помогает прогнозировать шум U-net на каждом этапе.

Текстовый кодировщик:

Stable Diffusion использует текстовый кодировщик CLIP (Contrastive-Language-Image-Pretraining) для преобразования подсказок в векторы встраивания текста с размерами [1,77,768] (если не используется CFG) для управления вышеупомянутыми прогнозами шума U-net. Методология CLIP совместно обучает кодировщик текста (в данном случае BERT) и кодировщик изображений (здесь Vision Transformer или ViT).

Обучение CLIP в основном максимизирует косинусное сходство (точечный продукт) вложений изображений, выдаваемых ViT, с соответствующими вложениями подписей к изображениям, сгенерированными моделью BERT. Это приводит к пространству встраивания, в котором векторы встраивания текста и изображения расположены близко друг к другу, и, таким образом, кодировщик текста имеет «идею» о том, как выглядит изображение, учитывая фрагмент текста. Таким образом, подсказки преобразуются в векторы встраивания, подаваемые в U-сеть. Затем механизм перекрестного внимания с вектором запроса, установленным для скрытых входных данных, и векторами ключа и значения, установленными для векторов внедрения, направляет процесс генерации шума U-net.

Как все это сочетается:

Вот схема того, как все устроено. Буквы E и D обозначают кодировщик/декодер VAE соответственно, а τθздесь — кодировщик текста CLIP.

Вот шаги, которые происходят во время вывода:

  1. Во-первых, текстовое приглашение преобразуется в текстовые вложения с помощью текстового кодировщика CLIP.
  2. Затем из скрытого пространства выбираются совершенно случайные латентные данные, которые затем вводятся в U-сеть для шумоподавления. Вложения текста также передаются в сеть U-net для управления процессом шумоподавления посредством перекрестного внимания, поэтому изображение напоминает то, что мы хотим.
  3. Затем U-net предсказывает шум, учитывая случайный шум в скрытом пространстве и встраивания текста.
  4. Затем прогнозируемый шум сети U-net соответствующим образом масштабируется в соответствии с параметрами планировщика и удаляется из скрытых.
  5. Шаги 3 и 4 повторяются в течение нескольких шагов (в зависимости от установленного гиперпараметра steps, 50 — типично для DDIM, 1000 — для DDPM и т. скрытые результаты предыдущего шага.
  6. После выполнения заданного количества шагов VAE преобразует латентное изображение в окончательное выходное изображение.

Альтернативы:

Помимо стабильной диффузии, существуют и другие модели диффузии, открытые для публичного использования. Midjourney достаточно известны, но такие модели, как Deepfloyd-IF или Kandinsky еще не так известны.

Исследовать:

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

  1. Конусы (Помогает диффузионным моделям запоминать предметы с минимальными параметрами)
  2. DragDiffusion (позволяет редактировать изображения, перетаскивая части изображения)
  3. Использование LLM, таких как GPT-3.5, для управления моделями распространения

Что ж, это было! Надеюсь, это было хоть немного полезно. Не стесняйтесь комментировать возможные улучшения. Я благодарю StabilityAI и LAION за помощь в создании таких замечательных инструментов/наборов данных с открытым исходным кодом, которые могут использовать все. Я не смог бы написать этот пост без источников, приведенных ниже, поэтому обязательно ознакомьтесь с ними, они отлично читаются.

Источники:

  1. Венг, Лилиан. (июль 2021 г.). Что такое диффузионные модели? Лил'Лог. https://lilianweng.github.io/posts/2021-07-11-diffusion-models/.
  2. https://arxiv.org/abs/2006.11239v2
  3. https://arxiv.org/abs/1505.04597
  4. https://arxiv.org/abs/2103.00020
  5. https://arxiv.org/abs/1810.04805
  6. https://arxiv.org/abs/2010.11929
  7. https://arxiv.org/abs/1312.6114
  8. https://arxiv.org/abs/2112.10752