Погружение в Sampling method: механизмы работы в моделях диффузии

ca585a010eac78399b554efe5460ea1d.jpg

Метод выборки (sampling method) в генеративных моделях, таких как Stable Diffusion или FLUX, определяет способ преобразования случайного шума в изображение в процессе диффузии. Этот метод напрямую влияет на качество, стиль и скорость генерации изображения.

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

1. Зачем нужен Sampling method

▍Sampling method необходим для нескольких ключевых задач:

  1. Постепенное уменьшение шума:

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

  2. Управление процессом диффузии:

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

  3. Оптимизация качества и скорости:

  4. Стабилизация процесса:

    • Методы выборки также помогают стабилизировать процесс генерации, чтобы избежать артефактов и нежелательных искажений. Это особенно важно при работе с сложными текстовыми подсказками или при генерации высококачественных изображений.

2. Основные параметры Sampling method

  1. Качество изображения:

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

  2. Стиль изображения:

    • Разные методы могут приводить к различным стилям изображения. Например, одни методы могут создавать более сглаженные изображения, а другие — более детализированные.

  3. Скорость генерации:

    • Методы выборки могут различаться по скорости. Некоторые методы быстрее, но могут уступать в качестве, тогда как другие медленнее, но обеспечивают лучшее качество.

3. Основные типы методов выборки

  1. DDIM (Denoising Diffusion Implicit Models):

    • Преимущества:  Быстрая генерация, возможность управления стилем.

    • Недостатки: Может уступать в качестве более медленным методам.

  2. PLMS (Pseudo Linear Multistep):

    • Преимущества: Хорошая комбинация скорости и качества, улучшенная устойчивость к шумам.

    • Недостатки: Может быть сложнее в настройке.

  3. DPM‑Solver:

    • Преимущества: Высокое качество изображения, более точное управление процессом диффузии.

    • Недостатки: Более высокая вычислительная сложность и время генерации.

  4. Euler A and B:

    • Преимущества:  Быстрая и стабильная генерация, подходит для широкого спектра задач.

    • Недостатки: Может уступать в качестве более специализированным методам.

  5. LMS (Laplacian Pyramid Sampling):

    • Преимущества: Хорошее сохранение деталей и текстур.

    • Недостатки: Могут быть более медленными по сравнению с другими методами.

5. Алгоритм работы метода выборки на примере DDIM

В данном разделе рассмотрим процесс взаимодействия CFG Scale и метода выборки, чтобы понимать механизмы их работы.

▍Шаг 1: Инициализация

В начале процесса инициализируем случайный шум (x_T), который генерируется по нормальному распределению:

x_T \sim \mathcal{N}(0, 1)где T — начальный момент времени.

Шум нужен для того, чтобы модели было что расшумлять — это называется обратной диффузией и лежит в основе современных генеративных нейросетей.

▍Шаг 2: Расчет результирующего состояния на основе CFG Scale

Подробнее про CFG Scale.

На этом этапе модель генерирует 3 изображения: на основе позитивного и негативного промпта + одно безусловное изображение — без какого‑либо промпта.

Здесь задействуется модель CLIP для перевода промпта в векторы (язык нейросети) и U‑Net для непосредственно генерации.

Применяем формулу CFG Scale для получения результирующего состояния (x_t) на основе безусловной и условной генерации:

x_t = x_{t, \text{unconditional}} + s \cdot (x_{t, \text{positive conditional}} - x_{t, \text{negative conditional}})

где:

  • (x_{t, \text{unconditional}})— безусловная генерация (основное изображение).

  • (x_{t, \text{positive conditional}})— условная положительная генерация (с учетом положительного условия).

  • (x_{t, \text{negative conditional}})— условная негативная генерация (с учетом отрицательного условия).

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

▍Шаг 3: Вычисление модифицированного шума

На основе результата из шага 2, модель рассчитывает модифицированный шум, учитывающий влияние условий:

\epsilon_\text{cfg} = \epsilon_\theta(x_t, t) + s \cdot (\epsilon_\theta(x_t, t, c_\text{pos}) - \epsilon_\theta(x_t, t, c_\text{neg}))

В этом шаге, исходя из полученного (x_t), модель вычисляет разные предсказанные шумы (\epsilon_\theta(x_t, t), \epsilon_\theta(x_t, t, c_\text{pos}), \epsilon_\theta(x_t, t, c_\text{neg})), а затем получает модифицированный шум \epsilon_\text{cfg}, который используется в формуле DDIM для обновления состояния изображения.

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

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

Это как 1+1=2, где без одной единицы двойка не получится.

Вычисления на данном шаге также проводятся с помощью U‑Net.

▍Шаг 4: Применение метода выборки (DDIM)

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

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

Формула метода выборки DDIM:

x_{t-1} = x_t + \sqrt{1 - \alpha_t} \cdot \left( \epsilon_\text{cfg} \right) \cdot \sqrt{1 - \alpha_{t-1}}

где (x_t) — текущее состояние изображения на шаге (t).

\sqrt{1 - \alpha_t}и \sqrt{1 - \alpha_{t-1}} — коэффициенты, контролирующие скорость изменения состояния изображения на каждом шаге. Они зависят от заданных параметров шума и времени.

Подставляем значения модифицированного шума в формулу DDIM:

x_{t-1} = x_t + \sqrt{1 - \alpha_t} \cdot \left( \epsilon_\theta(x_t, t) + s \cdot (\epsilon_\theta(x_t, t, c_\text{pos}) - \epsilon_\theta(x_t, t, c_\text{neg})) \right) \cdot \sqrt{1 - \alpha_{t-1}}

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

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

( x_{t-1} )обозначает состояние изображения на шаге ( t-1 ), которое является результатом применения модифицированного шума к текущему состоянию ( x_t ). Также на каждом шаге корректируются (\alpha_t) и (\alpha_{t-1}), отвечающие за количество шума, который будет исключен на текущем и следующем шаге.

▍Шаг 5: Повторение процесса

Теперь все значения будут рассчитываться для (x_{t-1}), которое затем нужно подставить в формулу метода выборки DDIM:

x_{t-2} = x_{t-1} + \sqrt{1 - \alpha_{t-1}} \cdot \left( \epsilon_\text{cfg} \right) \cdot \sqrt{1 - \alpha_{t-2}}

После вычисления (x_{t-2}) мы вычисляем (x_{t-3}), и так далее до (x_0).

6. Метод выборки DPM++ 2M Karras

Метод выборки DPM++ 2M (Denoising Diffusion Probabilistic Models++) является одним из методов улучшения процесса диффузии. Рассмотрим его, так как он, по моему мнению, является самым удачным сэмплером по соотношению качество / скорость.

  • DPM++ 2M использует прогрессивные улучшения и шаги для более точного и стабильного уменьшения шума.

  • Karras указывает на применение оптимизаций, которые могут включать улучшенные методы планирования шагов, адаптивное уменьшение шума и другие техники, направленные на повышение качества.

Вот так выглядит формула метода выборки DPM++ 2M Karras:

x_t = x_{t-1} - η * (λ * ∇_x L(x_t, x_{t-1}) + KarrasOptimizations(x_t, x_{t-1}))

Здесь:

  • (x_t)— текущее состояние изображения на шаге t.

  • (x_{t-1})— состояние изображения на предыдущем шаге.

  • η— коэффициент шага.

  • λ— весовой коэффициент для градиента.

  • ∇_x L(x_t, x_{t-1})— градиент функции потерь.

  • KarrasOptimizations— функции, включающие оптимизации, предложенные Тимо Керрасом.

7. Заключение

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

Буду рад видеть вас в телеграм‑канале, где я пишу гайды по Stable Diffusion и FLUX. Там же будут и анонсы новых статей.

© Habrahabr.ru