Погружение в Sampling method: механизмы работы в моделях диффузии. ai.. ai. cfg scale.. ai. cfg scale. neural networks.. ai. cfg scale. neural networks. python.. ai. cfg scale. neural networks. python. sampler.. ai. cfg scale. neural networks. python. sampler. stable diffusion.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы. ИИ.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы. ИИ. искусственный интеллект.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы. ИИ. искусственный интеллект. математика.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы. ИИ. искусственный интеллект. математика. Машинное обучение.. ai. cfg scale. neural networks. python. sampler. stable diffusion. Алгоритмы. ИИ. искусственный интеллект. математика. Машинное обучение. нейросети.
Погружение в Sampling method: механизмы работы в моделях диффузии - 1

Метод выборки (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}))

  • epsilon_theta(x_t, t)— предсказанный шум для безусловного процесса на основе полученного состояния.

  • epsilon_theta(x_t, t, c_text{pos})— предсказанный шум с учетом положительного условия.

  • epsilon_theta(x_t, t, c_text{neg})— предсказанный шум с учетом отрицательного условия.

  • (s)— коэффициент, регулирующий степень влияния положительного и отрицательного условий.

  • (x_t)— это результирующее состояние, подающееся на вход модели (получили на шаге 2).

  • (t)— текущий шаг времени в процессе генерации

  • c_text{pos}— позитивный промпт

  • 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 работает не в отрыве от всего остального, а является звеном в конвейерной цепочки по генерации изображения. Он, как и все рассмотренные в статье шаги, сделан для корректировки работы основном модели, чтобы генерации получались точнее и детальнее.

Кратко повторим материал:

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

  2. Модель преобразует шум, чтобы наметить общие формы (шаг 2).

  3. Затем модель этот шум повторно корректирует, чтобы еще больше конкретизировать формы и детали (шаг 3).

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

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

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

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

Автор: dima_yiu

Источник

Rambler's Top100