Погружение в мир диффузионных моделей — путеводитель для новичков

в 20:47, , рубрики: Блог компании Raft, генеративные модели, генерация изображений, искусственный интеллект
Погружение в мир диффузионных моделей — путеводитель для новичков - 1

Диффузионные модели перевернули мир генеративного искусственного интеллекта, вытеснив GAN'ы и вариационные автоэнкодеры. Но как они работают? Чем отличаются друг от друга? И как научиться их использовать?

Эта статья — путеводитель для тех, кто хочет разобраться в диффузионных моделях с нуля. В ней вы найдете три подхода к изучению:

  • Теоретический трек — для тех, кто хочет глубже понять архитектуру и принципы работы моделей

  • Практический трек — для желающих быстро освоить генерацию изображений с помощью доступных онлайн‑инструментов

  • Продвинутый практический трек — для тех, кто хочет погрузиться в кастомизацию, промпт‑инжиниринг, работу с моделями с помощью open‑source инструментов и на уровне кода

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

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

Оглавление:

  1. Введение

  2. Теоретический трек

  3. Практический трек

  4. Продвинутый практический трек

  5. Краткое резюме

Введение

Погружение в мир диффузионных моделей — путеводитель для новичков - 2

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

  1. Процесс прямой диффузии — добавление гауссова шума к изображению

  2. Процесс обратной диффузии — удаление гауссова шума с изображения

Как добавлять шум допустим несложно понять, но как происходит обратный процесс? Расшумление изображения не поддается прямому вычислению, поэтому мы хотим обучить нейронную сеть (U‑Net) для аппроксимации этого процесса. Про то, что из себя представляет U‑Net можно почитать в оригинальной статье или же немного в упрощенном варианте на примере картинок с котиком здесь.

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

Процесс обучение нейронной сети [источник]

Процесс обучение нейронной сети [источник]

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

Теоретический трек

Как мы уже поняли, процесс диффузии поэтапно передает полноразмерное изображение в нейронную сеть U‑Net для получения конечной картинки. Однако из‑за такого подхода скорость работы модели снижается при увеличении количества шагов диффузии и размера изображения. Почему это так? Давайте разберемся. Скажем у нас есть изображение размером 1024×1024, которое состоит из 1 048 576 пикселей и имеет 3 канала для цветов. Если работать с таким изображением в лоб, то процесс займет достаточно много времени и вычислительных ресурсов. Отсюда возникает идея выполнять процесс диффузии в каком‑то уменьшенном масштабе, в сжатом виде, чтобы сэкономить и уменьшить время генерации.

Схема работы с изображением в латентном пространстве [источник]

Схема работы с изображением в латентном пространстве [источник]

Пусть прямой и обратный процессы диффузии у нас будут выполняться в так называемом латентном пространстве. Получается, что у нас теперь под капотом диффузионной модели не только U‑Net для предсказания шума на каждом шаге диффузии, но и 2 новых элемента — энкодер и декодер. Энкодер соответственно сжимает изображение, а декодер, учится разжимать его до исходного состояния с максимальной точностью. Строго говоря, комбинация этих 2-х подсеток является моделью автоэнкодера (Variational Autoencoder, VAE). Более подробно про то, что это такое и как устроено можно почитать здесь. Прочитав главу из замечательного Яндекс Хэндбука вы узнаете про построение и обучение моделей VAE и CVAE, чего будет с лихвой достаточно для общего представления о них (архитектура, как картинки превращаются в объекты в латентном пространстве и что это вообще такое, вывод формулы функции потерь). Также там есть обзоры интересных работ, связанных с VAE, примеры реальных моделей. Рекомендую выделить на это время, так как, рассмотрев реальные примеры, вы достаточно сильно забустите понимание того, что такое модель «Вариационный автоэнкодер» и для каких задач она используется.

А мы движемся дальше, собирая по частям архитектуру современных диффузионных моделей. Настоящая мощь диффузионок заключается в том, что они могут генерировать не только случайные изображения (безусловная генерация), но и изображения на основе различных типов входных сигналов, будь то текст или же изображение (conditional generation). Достигается это за счет механизма Cross Attention, подробнее про него можно почитать в статьях [1], [2], [3]. Иными словами модель обращает внимание на текстовые подсказки, на изображения и прочие условия, которые подаются на вход. Однако нам всё ещё кое‑чего не хватает, а именно — текстового энкодера, ведь нам необходимо однообразие входных данных, поэтому мы всё переводим в эмбеддинги. Также мы хотим генерировать картинки с каким‑то входным условием, например, текстом (text‑to‑image генерация). Для решения этой задачи в современных моделях, как правило, используется CLIP (Contrastive Language‑Image Pre‑Training) — нейронная сеть от OpenAI обученная на парах текст‑изображение. Именно благодаря клипу диффузионные модельки могут достаточно хорошо генерировать изображения на основе наших промптов (кстати про то, как их правильно писать будет сказано в 3-ем разделе). Для более подробного ознакомления с теорией работы CLIP можно обратиться к оригинальной статье от OpenAI.

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

Базовая архитектура современных диффузионных моделей [источник]

Базовая архитектура современных диффузионных моделей [источник]

Процесс генерации выглядит следующим образом: получаем на вход текстовое описание (условие для генерации), переводим его в текстовые эмбеддинги с помощью модели CLIP, выбираем случайный шум в латентном пространстве, выполняем обратный процесс диффузии с помощью предобученной нейросети, обращая внимание на условие, и, в конечном итоге, декодируем расшумленное изображение в привычный нам размер (например, 512×512 или 1024×1024). Опять таки, для глубокого понимания математики можно вновь обратится к Яндекс Хэнбуку в параграф по диффузионкам.

Последнее, о чем хочется упомянуть в этом разделе — что такое IP‑Adapter и ControlNet. Это относительно новые модели которые используются как внешние расширения (plug‑ins) для диффузионных моделей, влияя на U‑Net и процесс обработки условий.

Виды ControlNet [источник]

Виды ControlNet [источник]

ControlNet — это расширение для диффузионных моделей, которое позволяет точно контролировать структуру генерируемого изображения на основе дополнительных условий (например, позы, контуров, глубины и т. д.). В стандартном варианте текстовые подсказки влияют на изображение косвенно — модель с помощью энкодера интерпретирует текст и пытается создать изображение, соответствующее заданному описанию. Однако, если нужно сохранить жёсткие структурные элементы (позу человека, композицию или контуры), стандартная архитектура не гарантирует точного соблюдения этих условий. ControlNet решает эту проблему, добавляя к архитектуре диффузионной модели дополнительную сеть, которая фиксирует и передаёт структурные особенности изображения. Вместе с привычным нам промптом на вход в модель ещё подается «контрольное изображение», которое прогоняется через дополнительную копию U‑Net. Но эта копия не изменяется — её веса «заморожены». Она нужна не для генерации изображения, а для того, чтобы извлечь полезную информацию из контрольного изображения — например, где находится каждая часть тела или как расположены линии контуров.

Управление генерацией с помощью дополнительных условий [источник]

Управление генерацией с помощью дополнительных условий [источник]

Извлеченная информация, называемая картой признаков (feature map), передаётся обратно в основную модель. На каждом этапе диффузии, когда основная модель удаляет шум, она использует эти карты как ориентир, чтобы изображение не отклонялось от заданной структуры. Благодаря этому изображение постепенно формируется так, чтобы не только соответствовать текстовому описанию, но и сохранять структуру, заданную контрольным изображением. Например, если вы просите модель сгенерировать девушку в красном платье, сидящую на стуле, и добавляете какую‑то конкретную позу с помощью контрольного изображения — ControlNet гарантирует, что поза будет именно такой, как вы и хотели, вот собственно и всё. Если же вам интересно почитать про то, как создавался ControlNet, то переходите по ссылочке.

Примеры работы IP-Adapter [источник]

Примеры работы IP-Adapter [источник]

Если ControlNet помогает жёстко контролировать структуру изображения, то IP‑Adapter (Image Prompt Adapter) — это дополнительный модуль, который позволяет модели учитывать стиль, цветовую гамму и общую композицию из референсного изображения, но без жёсткой привязки к форме. Вместо того чтобы подавать модели текстовую подсказку и контрольное изображение с чёткой структурой (как в ControlNet), здесь в качестве условия используется «референсное изображение». Например, вы хотите создать свой портрет в стиле конкретного фото — IP‑Adapter помогает модели уловить и передать особенности стилевого изображения.

Перенос стиля с помощью IP-Adapter [источник]

Перенос стиля с помощью IP-Adapter [источник]

IP‑Adapter не использует отдельную копию U‑Net, как это делается в ControlNet. Вместо этого он работает через более лёгкий механизм — MLP‑адаптер (многослойный перцептрон), который подключается к процессу генерации. На вход подаётся референсное изображение, и через предварительно обученную модель (например, CLIP Vision) извлекаются эмбеддинги изображения. Затем эти эмбеддинги проходят через MLP‑адаптер — небольшую нейросеть, которая преобразует их в форму, удобную для использования внутри модели диффузии. Эти преобразованные эмбеддинги добавляются в cross‑attention механизм основной модели и теперь на каждом этапе генерации модель не только ориентируется на текст, но и учитывает особенности референсного изображения — его стиль, цветовую палитру и общую структуру. Ключевое отличие от ControlNet заключается в том, что IP‑Adapter даёт модели мягкое руководство: он не требует точного соответствия форме, но помогает сохранить стиль референсного изображения. Опять таки, за подробностями об идее создания IP Адаптеров обращаемся к оригинальной статье.

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

Практический трек

Итак, давай поглядим, где и как можно быстро начать что‑то генерировать без особых усилий. Самое первое, что приходит в голову это Hugging Face Spaces — песочница для тестирования моделей. Hugging Face предлагает огромное количество спейсов, где можно попробовать разные модели без регистрации и оплаты. Здесь можно найти как официальные версии Stable Diffusion и FLUX, так и кастомные сборки с уникальными настройками.

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

"Mandalorian holding (((detail green baby Yoda))), anime style, vintage film effect, muted colors, grainy texture, cinematic shot, soft lighting, retro aesthetics, warm tones" (SDXL)

"Mandalorian holding (((detail green baby Yoda))), anime style, vintage film effect, muted colors, grainy texture, cinematic shot, soft lighting, retro aesthetics, warm tones" (SDXL)

Вторая очень крутая моделька это естественно FLUX от компании Black Forest Labs — как и в предыдущем случае, на странице компании есть доступ к спейсам различных вариаций модели, но это только вершинка айсберга.

"In the blurry eyes of wafting dreams, earnestly strange, gallivanting through a gorge of minerals blooming like shards of crystals from blackened skeletons, the frostbite sinking skin closer to the bone, this fancy trail jagging the scenic crypts, these mounds hiding away an enigma of the past,  with a fractued core and spilling dune, reawakening the gloom, alien world, ancient ruin. Adding more details" (FLUX)

"In the blurry eyes of wafting dreams, earnestly strange, gallivanting through a gorge of minerals blooming like shards of crystals from blackened skeletons, the frostbite sinking skin closer to the bone, this fancy trail jagging the scenic crypts, these mounds hiding away an enigma of the past,  with a fractued core and spilling dune, reawakening the gloom, alien world, ancient ruin. Adding more details" (FLUX)

Также вы можете самостоятельно в поиске на Hugging Face вбить «Stable Diffuison» или «FLUX» или любое другое название модели и найдете нужный под вашу задачку спейс. Можно заниматься переносом стиля с одного изображения на другое, можно апскейлить изображения, удалять ненужные объекты, генерить гифки, добавлять эффекты (реализм, аниме стиль) и многое, многое другое.

Главное преимущество — полная свобода экспериментов: вы можете пробовать разные модели, настраивать параметры и сравнивать результаты. Сервис подойдет вам в случае:

  1. Если хотите быстро протестировать разные модели и их возможности

  2. Если не хотите устанавливать ПО и разбираться в сложных настройках

  3. Если нужно быстрое и бесплатное решение

👉 Перейти к Hugging Face Spaces

Погружение в мир диффузионных моделей — путеводитель для новичков - 12

Теперь рассмотрим более продвинутые сервисы. Наиболее популярным из них является Civitai — рай для кастомных моделей и fine‑tuning'а. Это платформа, где пользователи выкладывают дообученные версии различных моделей, а также делятся своими настройками и результатами генерации. Здесь можно найти сотни кастомных чекпоинтов, ориентированных на определенные стили (аниме, реализм, киберпанк и т. п.). Также сервис позволяет скачать эти модели и использовать их в локальных приложениях, таких как Automatic1111 или ComfyUI (про них будет рассказано ниже).

"Anime cyberpunk style, Drifting ,cars initial D , highly detailed, HD, tokyo" (SDXL)

"Anime cyberpunk style, Drifting ,cars initial D , highly detailed, HD, tokyo" (SDXL)

Раскрыв сгенерированные картинки можно изучить с помощью какой модели они были созданы, каким промптом, а иногда авторы даже делятся параметрами генерации, но так или иначе важнее всего информация об использованных чекпоинтах и текстовой подсказке. Этого вполне достаточно чтобы сгенерировать очень похожее или в точности такое же изображение. Сервис является платным, здесь есть своя скажем так валюта, носит забавное название «buzz». Эти buzz можно покупать за свои деньги, если вам нужно много и сразу, либо же просто заходить на сайт каждый день и получать немного бесплатных токенов, чтобы генерировать небольшое число картинок. Скажем в день вы можете получить 50 buzz, а генерация на базовых настройках в среднем стоит 4 buzz.

Фишки сервиса:

  1. Огромная библиотека кастомных моделей

  2. Сообщество пользователей делится промптами и параметрами

  3. Можно скачивать модели и использовать локально

  4. Частично бесплатен — есть лимит на ежедневные генерации

👉 Перейти на Civitai

Погружение в мир диффузионных моделей — путеводитель для новичков - 14

Также есть довольно классный Российский сервис под названием Fusion Brain - бесплатная генерация на базе модели Kandinsky. Это платформа для генерации изображений и видео с помощью нейросети Kandinsky, разработанная компанией «Сбер» при поддержке учёных Института искусственного интеллекта AIRI. Портал довольно удобный, генерировать можно сколько угодно, так как это всё бесплатно, но немного не хватает гибкости настроек. То есть можно настроить только размер выходного изображения, стиль и промпт, но сервис всё равно клевый, обязательно попробуйте там что‑нибудь посоздавать, результаты получаются довольно неплохие.

Для чего подойдет сервис:

  • Если хотите бесплатно генерировать картинки без ограничений

  • Если вас устраивает фиксированный набор параметров (меньше гибкости, чем у SDXL или FLUX)

👉 Попробовать Fusion Brain

Погружение в мир диффузионных моделей — путеводитель для новичков - 15

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

Сильные стороны сервиса:

  1. Необычная художественная генерация

  2. Отлично интерпретирует сложные и творческие промпты

  3. Создает стильные и детализированные изображения

👉 Попробовать Midjourney

Погружение в мир диффузионных моделей — путеводитель для новичков - 16

Далее поглядим на сервис с моделькой от OpenAI — DALL‑E. Тут сразу вспоминается мем: «Списывай, только не точь‑в-точь». Кто у кого вдохновлялся дизайном не знаю, но вышло забавно. Возможности сервиса полностью совпадают с Midjourney, разве что будут отличаться результаты генерации. У модели ограниченная детализация, и она уступает Midjourney и Stable Diffusion в качестве.

В каких случаях пользоваться:

  1. Если нужно апскейлить существующие изображения

  2. Если важно точное следование тексту (DALL‑E хорошо понимает промпты)

  3. Если вас устраивают ограниченные настройки генерации

👉 Перейти к DALL‑E

Погружение в мир диффузионных моделей — путеводитель для новичков - 17

А мы движемся дальше. OpenArt — отличный выбор для кастомизации генерации, исследования различных стилей и оживления ваших картинок. Это мощный сервис, поддерживающий SDXL, FLUX, Juggernaut и другие модели. В нем можно не только генерировать изображения, но и тренировать свои модели или использовать кастомные чекпоинты. Гибкие настройки позволяют задавать количество шагов диффузии, выбирать семплер, управлять стилем и детализацией. Также, как и на Civitai, тут можно вдохновляться работами других людей, смотреть с какими параметрами, промптами и моделями они создают картинки.

Фишки сервиса:

  1. Широкий выбор моделей (SDXL, FLUX, DALL‑E, Juggernaut)

  2. Гибкая настройка генерации (шаги, сэмплеры, стили)

  3. Можно создавать свои модели или дообучать существующие

👉 Попробовать OpenArt

Погружение в мир диффузионных моделей — путеводитель для новичков - 18

Напоследок выделю ещё 2 сервиса — это Lexica и Leonardo.Ai. Lexica это своего рода Pinterest из мира ИИ. Можно по запросу найти себе подходящую картинку, скачать её или добавить в понравившиеся, причем можно узнать каким именно промптом она была создана, что тоже классно. Однако у сайта есть серьезный недостаток — малый выбор моделей и в целом, параметров генерации, поэтому сюда скорее можно переходить чтобы потырить промпты или скачать уже готовые картинки. Ну а ещё бесплатно здесь сгенерировать не получится, нужна хотя бы минимальная подписка, всё жестко.

В каких случаях подойдет Lexica:

  1. Если хотите искать и вдохновляться готовыми AI‑изображениями

  2. Если нужен бесплатный доступ к чужим промптам для улучшения своих генераций

  3. Если не против платной подписки для генерации новых изображений

👉 Перейти на Lexica

Погружение в мир диффузионных моделей — путеводитель для новичков - 19

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

Преимущества Leonardo перед другими сервисами:

  1. Мобильное приложение и веб‑версия

  2. Гибкие настройки (семплеры, стили, количество шагов)

  3. Поддержка fine‑tuning»а моделей

  4. Уникальная модель Phoenix

👉 Попробовать Leonardo.Ai

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

Сервис

Функционал

Размеры выходной картинки

Стоимость

HuggingFace Spaces

text2image

image2image

upscaling

text2video

image2video

choosing the style

parameter settings

Вплоть до 2К

Бесплатно

Civitai

text2image

image2image

upscaling

text2video

image2video

training models

choosing the style

parameter settings

1024х1024

1216х832

832х1216

Можно генерировать бесплатно, но по чуть‑чуть каждый день

Сайтовая валюта buzz по 5$ за 5000 единиц или же взять подписку на месяц за 10$

Fusion Brain

text2image

text2video

вплоть до 1024х1024

Бесплатно

Midjourney Ai

text2image

image2image

upscaling

1024х1024

1344х768

832х1216

1536х640

5 бесплатных генераций при регистрации

Подписка на месяц за 10$

DALL-E AI

text2image

image2image

upscaling

1024х1024

1344х768

832х1216

1536х640

5 бесплатных генераций при регистрации

Подписка на месяц за 10$

OpenArt

text2image

image2image

upscaling

text2video

image2video

training models

choosing the style

parameter settings

image2text

вплоть до 1024х1024

При регистрации выдаются кредиты для генерации (их можно использовать только первые 7 дней

Подписка на месяц за 7$

Lexica

text2image

832х1600

1600х832

Обязательная подписка, минимум за 8$ в месяц

Leonardo.ai

text2image

image2image

upscaling

text2video

image2video

training models

choosing the style

parameter settings

Вплоть до 1120х1120

Можно генерировать бесплатно, но по чуть‑чуть каждый день

Подписка на месяц за 10$

Так какой же сервис выбрать?

Если вы не знаете, с чего начать, вот краткое руководство:

✅ Хочу бесплатный вариант → Hugging Face, Fusion Brain

✅ Хочу кастомные стили и модели → Civitai, OpenArt

✅ Нужен удобный AI‑редактор → Leonardo.Ai

✅ Важно высокое качество без сложных настроек → Midjourney, DALL‑E

✅ Хочу находить готовые картинки и промпты → Lexica

✅ Нужна полная кастомизация параметров генерации → OpenArt

Теперь у вас есть полное понимание, чем отличаются эти сервисы, и вы сможете выбрать наиболее подходящий для своих задач!

Продвинутый практический трек

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

Краткость vs. детализация:

  1. Слишком короткий промпт (1–2 слова) зачастую приводит к размытым и неоднозначным результатам

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

  3. Оптимальная длина и степень детализации зависят от версии модели. В Stable Diffusion XL потолок больше (модель учитывает до 225–256+ токенов), но на практике всё равно лучше не перегружать промпт слишком объёмными описаниями. Что касается Flux — есть свои нюансы. Кто‑то пишет большие промпты, кто‑то маленькие, и оно работает в обоих случаях, но наверняка ограничение на токены всё же существует, просто пока нам не удалось найти какое именно.

Структура промпта:

  1. Объект: кто или что является центральным объектом изображения? (Например, «a cat», «an astronaut», «a portrait of a woman»).

  2. Контекст/окружение: где происходит действие? («in a neon‑lit city», «on Mars», «in a baroque castle»).

  3. Художественный/визуальный стиль: реализм, фэнтези, sci‑fi, барокко, аниме, импрессионизм и т. п. («in the style of Makoto Shinkai», «Baroque painting», «unreal engine 3D render», «cinematic lighting»).

  4. Эмоция/атмосфера: мрачный, весёлый, загадочный и т. д. («dramatic atmosphere», «moody lighting»).

  5. Технические характеристики (по желанию): «high resolution», «8k», «octane render», «hdr», «global illumination» и т. п.

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

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

❌ Пример плохого промпта:

"Cat in the hat" (SDXL)

"Cat in the hat" (SDXL)

Почему он плохой?

  1. Слишком короткий и расплывчатый

  2. Не указаны стиль, цвет, освещение, окружение

  3. Неясно, какой именно кот (реалистичный, мультяшный, фантастический?)

  4. Не задана композиция и детали

Такой текстовой подсказки недостаточно, чтобы подробно объяснить модели, что мы от неё хотим. В данном случае она просто сгенерировала случайное изображение котика, основываясь на своей обучающей выборке. Даже можно заметить, что котик, наверное, побывал в Чернобыле, раз у него выросла дополнительная лапка. Вообщем такой подход никуда не годиться, давайте постараемся написать хороший и подробный промпт.

✅ Пример хорошего промпта:

"Realistic portrait of a fluffy ginger cat with green eyes sitting on an antique wooden table by a window. The cat is wearing an elegant black felt hat with a ribbon. The soft golden light of the setting sun is all around, creating a warm atmosphere. The style is cinematic, with highly detailed wool, light shading and textures" (SDXL)

"Realistic portrait of a fluffy ginger cat with green eyes sitting on an antique wooden table by a window. The cat is wearing an elegant black felt hat with a ribbon. The soft golden light of the setting sun is all around, creating a warm atmosphere. The style is cinematic, with highly detailed wool, light shading and textures" (SDXL)

Почему он лучше?

  1. Четко описаны ключевые элементы: цвет, текстура, окружение

  2. Прописаны свет и атмосфера (закат, теплое освещение)

  3. Добавлена дополнительная деталь (шляпа) и объяснена ее эстетика

  4. Генерация будет более предсказуемой и детализированной

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

Выбор слов и порядок их расположения:

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

Пример:

"A fight between Ironman and Megaman" (акцент на сам бой, меньше внимания к деталям персонажей)

"A fight between Ironman and Megaman" (акцент на сам бой, меньше внимания к деталям персонажей)
"Ironman and Megaman are fighting" (акцент на персонажах, они стали более выразительными)

"Ironman and Megaman are fighting" (акцент на персонажах, они стали более выразительными)

Также было замечено, что использование имен известных художников даёт стабильные стилистические результаты. Лучше всего использовать комбинацию стиля художника + среду изображения («by Van Gogh, oil painting») для точности. По ссылке можно изучить коллекцию того, как, по мнению Stable Diffusion, выглядят стили разных художников. Только имейте в виду, что эти стили лишь имитируют некоторые аспекты работы художников, но могут дать вам хорошую основу для ваших собственных творений.

Контроль детализации и четкости:

Такие слова как: «4K resolution, 8K ultra‑detailed, hyper‑realistic, trending on Artstation, award‑winning photography» — помогают добиться более детализированных изображений. Эти термины не увеличивают разрешение картинки, но заставляют модель использовать высокодетализированные изображения в обучении. Также, модификаторы настроения и освещения, например «cinematic lighting, moody, ethereal» улучшают восприятие.

"A fantasy warrior in massive silver armor stands atop a snow-capped mountain, looking up at the scarlet sky of sunset. His long cloak billows in the wind, and he holds a gleaming sword with runes. Ice clouds swirl around, creating a mysterious atmosphere. The art style is cinematic, inspired by the works of Frazetta and Dark Souls"

"A fantasy warrior in massive silver armor stands atop a snow-capped mountain, looking up at the scarlet sky of sunset. His long cloak billows in the wind, and he holds a gleaming sword with runes. Ice clouds swirl around, creating a mysterious atmosphere. The art style is cinematic, inspired by the works of Frazetta and Dark Souls"
"A fantasy warrior in massive silver armor stands atop a snow-capped mountain, looking up at the scarlet sky of sunset. His long cloak billows in the wind, and he holds a gleaming sword with runes. Ice clouds swirl around him, creating a mysterious atmosphere. Hyper-realistic, ultra-detailed, 8K resolution, cinematic lighting, intricate armor textures, sharp focus, atmospheric depth, trending on Artstation, award-winning photography"

"A fantasy warrior in massive silver armor stands atop a snow-capped mountain, looking up at the scarlet sky of sunset. His long cloak billows in the wind, and he holds a gleaming sword with runes. Ice clouds swirl around him, creating a mysterious atmosphere. Hyper-realistic, ultra-detailed, 8K resolution, cinematic lighting, intricate armor textures, sharp focus, atmospheric depth, trending on Artstation, award-winning photography"

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

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

Для тех, кто не хочет сильно запариваться с теорией написания промптов существуют, так называемые, автопромптеры [4, 5, 6, 7]. Вписываете в них на естественном языке то, что хотите получить, а сервис уже за вас сгенерирует хороший промпт.

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

Количество шагов — чем больше шагов, тем качественнее, но медленнее происходит генерация. Рекомендуется выставлять значения порядка 20–25, можно и больше вплоть до 45, но главное избегайте значений между, скажем 20 и 25 (например 23), так как изображение не будет завершено и придется добавлять ещё 5 шагов, чтобы избавиться от мелких недостатков.

Guidance scale — этот параметр регулирует баланс между творческой вариативностью и соответствием текстовой подсказке. Высокое значение приводит к более точному следованию промпту, но может уменьшать разнообразие. Низкое значение наоборот оставляет пространство для «свободы» для модели.

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

Какие бывают Noise Schedule и как они влияют на изображение?

Линейное (Linear schedule)

  • Шум добавляется равномерно на каждом шаге

  • Довольно простой метод, работает стабильно

  • Но иногда может терять детали на поздних шагах

Косинусное (Cosine schedule)

  • В начале добавляет мало шума, а потом ускоряется

  • Восстановление идёт плавнее, улучшается качество деталей

  • Позволяет лучше передавать контуры и цвета

Сигмоидальное (Sigmoid schedule)

  • В начале и конце изменения шума минимальны, а в середине — максимальны

  • Дает более естественные и мягкие изображения

  • Может размывать границы

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

Тип семплера (Sampler) — выбор сэмплера будет влиять на траекторию, по которой изображение создаётся из шума.

Какие бывают семплеры и как они влияют на изображение?

PLMS (Pseudo Linear Multistep)

  • Работает быстро, но иногда упрощает картинку

  • Хорош для чётких и предсказуемых изображений

  • Может терять детали

DDIM (Denoising Diffusion Implicit Models)

  • Позволяет уменьшать количество шагов без сильной потери качества

  • Быстрее обычных методов

  • Иногда делает изображения более «мягкими», размытыми

Euler и Euler A (Ancestral)

  • Хороший баланс между качеством и скоростью

  • Euler A делает изображения более разнообразными, но иногда даёт неожиданные результаты

DPM++ (Denoising Probabilistic Models++)

  • Самый качественный метод

  • Лучше сохраняет текстуры, цвета и детали

  • Дольше работает, но даёт более реалистичные изображения

Seed — Контролирует повторяемость генерации. Если задать фиксированный seed, модель выдаст одно и то же изображение при одинаковых настройках. Если оставить случайным — изображения будут уникальными при каждом запуске.

Negative prompt — важная вещь, про которую стоит упомянуть отдельно. Этот промпт есть не во всех моделях, но всё же у большинства. С его помощью можно избавляться от каких‑то мелких недостатков на изображении, четко прописывая, что бы вы не хотели видеть на нем. Можно использовать такие слова как «ugly, blurry» и подобные. Такой подход действительно иногда помогает улучшать качество генерируемых картинок, так что не забывайте пользоваться.

Также нам важно понять, под какие задачи лучше всего подходят те или иные современные диффузионные модели (как правило, для чего‑то серьезного чаще всего используются конечно Stable Diffusion, Flux и их производные) и сколько в среднем они будут занимать памяти (важно для инференса). Давайте сделаем такой чек‑лист из моделек, обсудим что они могут:

  • Stable Diffusion — одна из самых универсальных моделей. Она хорошо справляется с генерацией как реалистичных, так и стилизованных изображений. Отличается возможностью локального развертывания и высокой кастомизацией. Лучше всего подходит для художественных изображений, концепт‑арта и анимационных стилей. Однако требует тщательной настройки для генерации фотореалистичных изображений. Средний вес модели составляет от 4 до 16.5 ГБ (всё зависит от версии)

  • Juggernaut — модель, созданная для максимальной детализации и фотореалистичности. Отличается высокой четкостью генерации лиц, кожи и текстур. Хорошо подходит для генерации портретов, рекламных изображений и сцен с множеством деталей. Однако, как и другие модели, может испытывать трудности при генерации сложных объектов, таких как руки или текст. Средний вес модели составляет 7.11 ГБ

  • Flux — относительно новая модель, ориентированная на высокую фотореалистичность. Подходит для создания изображений с точными деталями и сложными текстурами. Хорошо справляется с генерацией людей, особенно в условиях сложного освещения, но пока уступает лидерам в художественном стиле. Средний вес модели составляет от 4 до 24 ГБ (зависит от версии)

  • Midjourney — специализируется на создании эстетически привлекательных художественных изображений. Отлично подходит для абстрактных, фэнтезийных и стилизованных сцен, обладает сильными творческими возможностями. Хотя Midjourney может генерировать реалистичные лица, он менее точен в сравнении с моделями, ориентированными на фотореализм (например, DALL‑E). Точный размер модели неизвестен. Предполагается, что она использует сложную архитектуру, схожую с SDXL, которая весит 6–10 ГБ. Однако для работы Midjourney требуется облачная инфраструктура, а значит, её размер может быть значительно больше

  • DALL‑E — флагманская модель от OpenAI, которая хорошо генерирует фотореалистичные сцены, людей и сложные композиции. Отличается мощным пониманием текстовых подсказок и может точно следовать сложным инструкциям. Особенно хороша для коммерческих приложений, требующих генерации изображений с высоким уровнем достоверности. Точные параметры модели OpenAI не раскрывает, но предположим, что в среднем её вес составляет 10–20 ГБ

  • Kandinsky — ориентирован на художественные и креативные изображения. Эта модель сильна в стилизации, создании абстрактных или сюрреалистичных картин. По качеству детализации уступает Stable Diffusion и DALL‑E, но её главная сила — в создании изображений с ярко выраженной художественной индивидуальностью. Версия 2.1 весит 3,3 ГБ (fp16), а Kandinsky 2.2 — порядка 4 ГБ. Более новая версия Kandinsky 3.0 занимает около 6 ГБ

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

Prompt: "An image of 2 plush toy octopuses sitting on a chair, one is blue, the other is orange. The octopuses have a funny smile. one of them has a little flower on his head"

Prompt: "An image of 2 plush toy octopuses sitting on a chair, one is blue, the other is orange. The octopuses have a funny smile. one of them has a little flower on his head"

Вот такие интересные результаты у нас получились. Мои личные фавориты — это результаты Flux и забавно улыбающиеся осьминожки сгенерированные моделью Phoenix 0.9. Такое сравнение демонстрирует, что каждая из моделей интерпретирует промпт по‑своему. Stable Diffusion дает гибкость в настройке параметров, но требует тщательной работы с промптами и fine‑tuning»а. Midjourney выделяется уникальным художественным стилем, но меньше контролируется пользователем. DALL‑E хорошо понимает текст, но иногда уступает в детализации. Flux демонстрирует отличную фотореалистичность, а Kandinsky больше подходит для художественных и креативных изображений.

Теперь мы переходим к наиболее интересной части этого обзора, а именно — опенсорс тулзы, через которые реализуется «прямое» взаимодействие с диффузионными моделями. Первый способ — использовать библиотеку Diffusers от Hugging Face, которая позволяет работать с сотнями предобученных моделей класса Stable Diffusion. Библиотека очень крутая, поддерживает широкий функционал для генерации, в частности: безусловная генерация, text‑to‑image, image‑to‑image, inpainting, depth‑to‑image. Работу вашего пайплайна можно тонко настраивать, загружая различные модели, сэмплеры, энкодеры, планировщики, адаптеры и даже готовые пайплайны. Разумеется, помимо архитектуры, также можно настраивать и параметры генерации такие как размеры выходного изображения, guidance_scale, количество шагов диффузии и т. д.

Интерфейс Automatic1111

Интерфейс Automatic1111

Ещё очень хочется обратить ваше внимание на 2 невероятно крутых опенсорс тула. Начнем с Automatic1111 — очень популярный веб‑интерфейс для работы с диффузионными моделям, он завоевал свою популярность благодаря удобству использования и широким возможностям настройки. Поддерживает он кстати не только Stable Diffusion, но и другие модели, такие как Flux, Pony и многие другие. Automatic1111 предлагает гибкие настройки и кастомизации процесса генерации (text‑to‑image, image‑to‑image), а также есть и upscale, inpainting, outpainting и т. п. Инструмент действительно классный, уже обладает своим интерфейсом и отлично подойдет для боевых экспериментов.

Интерфейс ComfyUI

Интерфейс ComfyUI

Вторым, но не менее мощным инструментом является ComfyUI — интерфейс для создания пайплайнов генерации изображений. Он предоставляет собой визуальную среду программирования на основе узлов, позволяющую пользователям создавать схемы любой сложности без необходимости написания кода, а техническая часть полностью реализована на Python. То есть, впоследствие всё то, что вы создавал на основе узлов можно будет переписать в виде кода и вполне себе использовать для инференса в ваших рабочих проектах. Также, для ComfyUI существует огромное множество гайдов и технической документации, вот пара ссылок [ссылка] [ссылка], первая на русском, вторая на английском.

В нём можно делать буквально всё, что касается генерации с применением диффузионных моделей (здесь можно использовать любые чекпоинты, даже загружать свои кастомные), можно загружать кастомные узлы или создавать свои узлы — всё ограничивается лишь вашим воображением. Кстати, в скором времени от моего коллеги выйдет классная статья‑гайд про ComfyUI, подписывайтесь чтобы ничего не пропустить!

Краткое резюме

Диффузионные модели представляют собой мощный инструмент генерации изображений, который открывает перед пользователями широкие возможности — от создания художественных иллюстраций до решения сложных индустриальных задач. Мы рассмотрели три подхода к изучению этой технологии: научный, практический и индустриальный, каждый из которых позволяет погрузиться в тему с разной степенью глубины. Независимо от выбранного пути, ключ к освоению диффузионных моделей — это практика и экспериментирование. Современные платформы, такие как Hugging Face, Civitai, OpenArt и другие, делают эти технологии доступными и удобными в использовании. А продвинутые инструменты, такие как Diffusers, Automatic1111 и ComfyUI, позволяют гибко настраивать процессы генерации и адаптировать модели под конкретные задачи.

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

Дорогие читатели! Если у вас остались вопросы о диффузионных моделях или вы хотите поделиться своим опытом их использования, то смело оставляйте комментарий, мне будет очень интересно обсудить это с вами!

Автор: KissedByF1re

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js