Продолжение статьи про CFG Scale | математика, плюсы и минусы метода

cdfa4b7042c09acdf98db746f945b227.png

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

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

Определение

CFG Scale (Classifier‑Free Guidance Scale) или (безклассификаторное управление) — это метод, разработанный для улучшения качества изображений, генерируемых с помощью диффузионных моделей, таких как DALL‑E 2 и другие. Этот метод был предложен исследователями из OpenAI.

Метод пришел на смену «Явным классификаторам», использующимся в GAN‑моделях.

Метод получил своё название Classifier‑Free Guidance (безклассификаторное управление) потому, что он позволяет обходиться без традиционного явного классификатора, интегрируя функции управления непосредственно в процесс генерации.

Чем выше значение CFG Scale, тем более явно модель «вытягивает» и встраивает классы или характеристики, указанные в подсказке, в финальное изображение.

Например, если подсказка описывает «красный автомобиль на фоне гор», высокая CFG Scale будет способствовать тому, чтобы и автомобиль был ярко‑красным, и фон четко отображал горы.

Явные классификаторы в GAN

В традиционных моделях Generative Adversarial Networks (GAN) используются две основные компоненты:

  1. Генератор — создает изображения из случайного шума.

  2. Дискриминатор — классифицирует изображения как реальные или сгенерированные.

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

Плюсы и минусы явных классификаторов

Плюсы:

  1. Условное управление:

    • В cGAN генератор и дискриминатор работают с дополнительными метками или условиями. Генератор создает изображения, соответствующие этим меткам, а дискриминатор оценивает, насколько хорошо сгенерированные изображения соответствуют заданным условиям, помимо различения реальных и сгенерированных изображений.

  2. Повышение точности:

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

  3. Качество и реалистичность изображений:

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

Минусы:

  1. Сложность: тренировка cGAN может быть сложной задачей, требующей балансировки между генератором и дискриминатором.

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

Плюсы и минусы метода CFG Scale

Плюсы:

  1. Отсутствие отдельного классификатора:

    • В традиционных GAN моделях, таких как cGAN, используется отдельный дискриминатор (классификатор), который требует значительных вычислительных ресурсов для тренировки и оценки. CFG Scale устраняет необходимость в этом дополнительном компоненте, интегрируя функции управления непосредственно в генеративную модель.

  2. Упрощение архитектуры:

    • Упрощенная архитектура модели в CFG Scale позволяет сократить количество параметров и слоев, что приводит к снижению вычислительной нагрузки. Это также уменьшает объем данных, обрабатываемых на каждом этапе генерации.

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

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

Минусы:

  1. Настройка: настройка параметров для достижения оптимального качества может быть сложной задачей.

  2. Гибкость: модель может быть менее специализированной в сравнении с подходом, использующим явные классификаторы.

Механизм работы CFG Scale

  1. Три потока генерации:

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

    • Условный поток: Модель генерирует изображение, используя текстовую подсказку, чтобы направлять процесс генерации (позитивный промпт).

    • В некоторых моделях может быть задействован и третий поток — негативное условное изображение (negative prompt).

  2. Объединение потоков:

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

    • Результаты этих двух потоков затем объединяются с использованием CFG Scale.

Механизм объединения потоков CFG Scale

В этом случае результирующее изображение формируется с учетом всех трёх потоков:

  • Безусловное изображение: ( x_{t, {unconditional}} )

  • Условное изображение с положительным промптом: ( x_{t, \text{positive conditional}} )

  • Условное изображение с негативным промптом: ( x_{t, \text{negative conditional}} )

Формула для комбинирования может выглядеть следующим образом:

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

где (s) — значение CFG Scale.

Пример объединения потоков

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

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

Представьте, что у вас есть три массива чисел, представляющих активации на определенном слое нейронной сети:

  • x_{t, \text{unconditional}} = \begin{bmatrix} 0.2 & 0.4 \\ 0.6 & 0.8 \end{bmatrix} — безусловная генерация

  • x_{t, \text{positive conditional}} = \begin{bmatrix} 0.3 & 0.5 \\ 0.7 & 0.9 \end{bmatrix} — позитивная условная генерация

  • x_{t, \text{negative conditional}} = \begin{bmatrix} 0.1 & 0.3 \\ 0.5 & 0.7 \end{bmatrix} — негативная условная генерация

Если значение ( s ) равно 1, линейная комбинация будет:

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

Подставим значения:

x_t = \begin{bmatrix} 0.2 & 0.4 \\ 0.6 & 0.8 \end{bmatrix} + 1 \cdot \left( \begin{bmatrix} 0.3 & 0.5 \\ 0.7 & 0.9 \end{bmatrix} - \begin{bmatrix} 0.1 & 0.3 \\ 0.5 & 0.7 \end{bmatrix} \right)

Рассчитаем разницу:

x_t = \begin{bmatrix} 0.2 & 0.4 \\ 0.6 & 0.8 \end{bmatrix} + \begin{bmatrix} 0.2 & 0.2 \\ 0.2 & 0.2 \end{bmatrix}

Выполним сложение:

x_t = \begin{bmatrix} 0.4 & 0.6 \\ 0.8 & 1.0 \end{bmatrix}

Таким образом, результирующее изображение ( x_t ) будет:

x_t = \begin{bmatrix} 0.4 & 0.6 \\ 0.8 & 1.0 \end{bmatrix}

В реальных приложениях матрицы, представляющие изображения или активации нейронных сетей, гораздо больше тех, что я привел в примере. Мы рассмотрели матрицу размерностью 4×4×3.

Влияние значений CFG Scale на качество

Предположим, вы хотите сгенерировать изображение «красивого пейзажа»:

  • CFG Scale = 1: изображение может быть размытым и нечетким, так как текстовая подсказка недостаточно сильно влияет на процесс генерации.

  • CFG Scale = 15: изображение может быть слишком детализированным, с артефактами и чрезмерными деталями, которые делают его менее реалистичным.

  • CFG Scale = 7–10: возможно, это оптимальный диапазон, где пейзаж будет достаточно детализированным и реалистичным, без излишней фокусировки на отдельных элементах.

Почему высокие значения CFG Scale портят генерацию

При высоких значениях CFG Scale теряется детализация и реалистичность из‑за того, что модель начинает слишком сильно фокусироваться на текстовых подсказках, что может привести к переусилению определённых характеристик изображения, запрошенных в тексте. Вот несколько причин, почему это происходит:

  1. Переусиление признаков:

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

  2. Шум и артефакты:

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

  3. Потеря общего контекста:

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

  4. Ограничение креативности модели:

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

Заключение

CFG Scale (Classifier‑Free Guidance Scale) улучшает генерацию изображений диффузионными моделями, интегрируя текстовые подсказки без использования отдельного классификатора. Это снижает вычислительные затраты, упрощает архитектуру модели и позволяет гибко контролировать влияние условий на финальное изображение. Метод обеспечивает высокую точность и качество, делая его полезным для различных приложений, требующих точного соответствия заданным условиям.

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

Habrahabr.ru прочитано 687 раз