Сегодня генерация изображений с помощью искусственного интеллекта становится невероятно доступной и всё более востребованной. Теперь для создания уникальных иллюстраций не нужно обладать художественными навыками или годами изучать программы для дизайна. Достаточно лишь вообразить идею, а современные технологии, такие как Midjourney, DALL-E, Stable Diffusion, или Flux сделают её реальностью. С их помощью каждый может воплотить свои мысли в жизнь — будь то реалистичный портрет, красивый пейзаж или же захватывающий мир фантастической вселенной.

В этой части мы рассмотрим основные принципы написания промптов, которые помогут вам максимально эффективно взаимодействовать с искусственным интеллектом. Мы разберем, как правильно формулировать запросы, какие ключевые слова использовать и как добавлять детали для достижения желаемого результата. Эти навыки
полезны для всех — от обычных пользователей до профессиональных художников, ищущих вдохновение. Рассчитываю, что этот материал принесет вам свежие идеи и знания.
Приятного прочтения!
Как создать промпт
Создание промпта — это первый и самый важный шаг на пути к получению желаемого результата от искусственного интеллекта. Будь то генерация изображений, текстов или даже музыки, правильно составленный запрос становится ключом к воплощению вашей идеи.
Однако важно помнить, что ИИ не "думает" так, как мы. Он анализирует ваш запрос, выделяет ключевые элементы и строит результат на основе этих данных. Поэтому успешный промпт должен быть не только понятным, но и детализированным.
Например, если вы хотите создать изображение, стоит указать стиль, цветовую палитру, ракурс, атмосферу и другие важные детали.
Важно учесть, что большинство моделей ИИ понимают лучше запрос на английском, чем на русском, так как, большинство моделей ИИ, особенно крупные модели, обучались на огромных объемах текста, в основном на английском языке. Английский язык представлен с более высоким качеством по сравнению с другими языками.
В результате, чтобы получить более точный и развернутый ответ от ИИ, рекомендуется использовать английский язык для формулировки промптов.
Давайте для начала рассмотрим самое основное в создании промптов, а затем перейдём к более сложным примерам и попробуем сгенерировать изображения сами.
Базовые принципы написания промпта
Базовые принципы написания промпта помогают создать четкий и эффективный запрос, который позволит ИИ сгенерировать именно то, что вы хотите. Вот некоторые из них:
Четкость
ИИ лучше понимает конкретные, чем размытые запросы. Например, есть запрос: “Средневековый город”, лучше заменить его на такой: “Средневековый город стоит на горе, деревянные дома с остроконечными крышами”

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

Структурированность
Запрос должен быть логичным и последовательным, чтобы ИИ мог правильно вас понять. Можно применять к своим промптам формулу 3 вопроса: “Что + где + как”.
Допустим, я хочу сгенерировать картинку с лесом, написал такой вот промпт: "Мистический лес с высокими деревьями, расположенный среди гор под покровом ночи, деревья светятся мягким голубым светом, туман стелется по земле"

Здесь как раз используется 3 вопроса:
Что? Мистический лес с высокими деревьями
Где? среди гор под покровом ночи
Как? деревья светятся мягким голубым светом, туман стелется по земле
Стиль и атмосфера
Можно указать художественный стиль, будь то манга, реализм или мультяшность. Я попробую сгенерировать картинку в стиле игры Don't Starve.

Если у вас что-то не получается, то вы можете поискать ответ на волнующий вас вопрос в центре знаний о нейросетях — BotHub Academy. Здесь есть примеры работы с Midjourney и другими нейросетями.
Техническая часть
Сейчас мы рассмотрим, что под капотом у нейросетей для генерации изображений: от базовых принципов их работы и архитектуры до ключевых алгоритмов, таких как GANs, Diffusion Models и GPT, а также разберём, как данные технологии превращают текстовые запросы в детализированные и реалистичные изображения, и поймём, какие параметры и настройки влияют на финальный результат.
Токенизация текста
Перед тем как текстовый запрос будет преобразован в числовое представление, он проходит через процесс токенизации. Токенизация разбивает текст на более мелкие единицы, называемые токенами:
Словами (например, "груша", "город"),
Частью слов (например, "яблок" + "о"),
Символами (например, "!", ",", ".").
Запрос: “Красивый грушевый сад”
Пример токенизации: ["Красивый", "грушевый", "сад"]
Давайте разберёмся, что такое эмбеддинг:
Эмбеддинг — это способ представления слов (или других объектов, таких как изображения) в виде числовых векторов фиксированной длины. Векторы кодируют семантические свойства слов, то есть их смысл и контекст, в многомерном пространстве.
Каждый токен преобразуется в числовое представление с помощью эмбеддинг-слоя:
"Красивый" → [0.1, -0.3, 0.5, ..., 0.2]
"грушевый" → [-0.2, 0.4, 0.1, ..., -0.1]
"сад" → [0.3, 0.2, -0.4, ..., 0.5]
Каждое число в векторе соответствует значению в определённой "оси" многомерного пространства. Такие значения отражают различные признаки слова, такие как его значение, синтаксическая роль или связь с другими словами.
Ключевые слова
Ключевые слова играют центральную роль в работе CLIP, так как они передают основной смысл текстового запроса.
Запрос: "Ancient city at sunset"
Ключевые слова: "Ancient", "city", "sunset"
Нейросеть определит основные элементы изображения: древний городской стиль, закат. ИИ будет опираться именно на данные детали. Если бы был запрос "A city", то модель сгенерировала бы более общий результат.
Давайте разберём отличия архитектур вышеприведённых нейросетей:
Stable Diffusion
Архитектура: Модель скрытой диффузии (Latent Diffusion Model, LDM)
современный подход к генерации изображений, который сочетает в себе несколько ключевых компонентов: UNet-архитектуру, вариационные автокодировщики (VAE) и нейросеть для обработки текста (например, CLIP).
Latent Diffusion Models работают в латентном пространстве, что значительно снижает вычислительную сложность по сравнению с традиционными диффузионными моделями, которые оперируют напрямую с пикселями изображения.
LDM сначала кодирует изображение в латентное представление с помощью VAE, а затем выполняет процесс добавления и удаления шума в латентном пространстве.
Латентное пространство — математическая модель, в которой все возможные образы представлены в виде координат или точек
Процесс диффузии:
-
Добавление шума:
Изображение xt постепенно "разрушается" путем добавления шума на каждом шаге t:
q(xt|xt-1) = N(xt; 1-βtxt-1, βtI)
xt — состояние изображения на шаге t
βt — параметр, определяющий величину шума на шаге t
N(μ,σ2) — нормальное распределение с математическим ожиданием μ и дисперсией σ2
-
Удаление шума:
Модель обучается восстанавливать изображение из шумового состояния, предсказывая шум на каждом шаге:
p0(xt-1|xt)=N(xt-1;μ0(xt,t),∑0(xt,t))
μ0(xt,t) — предсказанное среднее значение.
∑0(xt,t) — предсказанная дисперсия.
UNet архитектура
UNet — это сверточная нейронная сеть, которая используется для предсказания шума на каждом шаге диффузии. Она состоит из двух частей: энкодера и декодера.

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

Данный алгоритм отличается от классической архитектуры нейронной сети U-net класса сверточных нейронных сетей наличием в нем реализации приведения входного изображения к необходимому размеру, из-за существующих ограничений вычислительной мощности, выделяемой для решения поставленной задачи.
Формула для предсказания шума:
UNet предсказывает шум на каждом шаге:
∊0(xt,t)=UNet(xt,t)
xt — текущее состояние изображения,
t — временной шаг.
Variational Autoencoders (VAE)
VAE используются для кодирования изображений в латентное пространство и декодирования их обратно, что снижает вычислительные затраты.

-
Энкодер:
Энкодер преобразует изображение x в латентное представление z:
q(z|x)=N(z;μ(x),σ2(x))
μ(x) — среднее значение латентного представления,
σ2(x) — дисперсия латентного представления.
-
Декодер:
Декодер восстанавливает изображение из латентного представления:
p(x|z)=N(x;μ(z),σ2(z))
μ(z) и σ2(z) — параметры распределения восстановленного изображения.
Оптимизация VAE:
Цель VAE — минимизировать расхождение между реальным распределением данных и реконструированным распределением. Для этого используется функция потерь:
LVAE=Eq(z|x)[log p(x|z)]-KL(q(z|x)||p(z))
KL — расстояние Кульбака-Лейблера,
p(z) — априорное распределение латентного пространства (обычно стандартное нормальное).
Обработка текста (CLIP)
CLIP (Contrastive Language-Image Pre-training) — это мультимодальная модель, которая связывает текстовые запросы с изображениями. Она используется для создания семантического эмбеддинга текста, который направляется в LDM.
Обработка текста в CLIP
Текстовый энкодер
Преобразует текстовый запрос text в векторное представление etextetext=TextEncoder(text)
Энкодер изображений
Преобразует изображение x в векторное представление eimage:eimage=ImageEncoder(x)
Сравнение текста и изображения:
CLIP обучается максимизировать сходство между etext и eimage для соответствующих пар "текст-изображение".
Использование в LDM:
Вложение текста etext подается в UNet как дополнительный вход:∊0(xt,t,etext)=UNet(xt,t,etext)
Общая схема работы LDM:
Кодирование изображения:
Изображение x0 кодируется в латентное представление z0 с помощью VAE:
z0=VAEEncoder(x0)
Добавление шума
Латентное представление z0 постепенно зашумляется:q(zt|zt-1)=N(zt;1-βtzt-1,βtI)
Удаление шума
UNet предсказывает шум ∈0(zt,t,etext):
∊0(zt,t,etext)=UNet(zt,t,etext)
Декодирование изображения:
После завершения процесса диффузии латентное представление zT декодируется обратно в изображение:
xT=VAEDecoder(zT)
Принцип работы: Модель обучается на большом количестве пар «текст-изображение». Из случайного шума шаг за шагом «очищает» изображение, добавляя детали, направляемая текстовым описанием.
-
Преимущества:
Открытый исходный код (можно запускать локально).
Гибкость: поддержка дообучения, кастомизации, редакторов.
Большое сообщество и множество расширений.
Высокое качество генерации.
DALL-E
Архитектура: Использует Generative Pre-trained Transformer – GPT в сочетании с диффузионными моделями и моделями автокодировщиков.
DALL-E решает задачу генерации изображений как задачу автозавершения последовательности. Она принимает текстовый запрос (например, "A red apple on a wooden table") и генерирует соответствующее изображение. Ключевая особенность DALL-E — использование одного общего трансформера для обработки как текста, так и изображений.
Представление данных:
DALL-E работает с дискретными представлениями данных:
Текст: Текст преобразуется в последовательность токенов (слов или частей слов).
Изображения: Изображения разделяются на патчи (маленькие фрагменты), которые затем кодируются в дискретные токены с помощью модели VQ-VAE (Vector Quantized Variational Autoencoder).
VQ-VAE используется для кодирования изображений в латентное пространство:
-
Энкодер:
Преобразует изображение x в латентное представление ze:
ze=Encoder(x)
-
Квантизация:
Латентное представление ze квантизируется в дискретные токены zq:
zq=arg min||ze-zk||2
-
Декодер:
Восстанавливает изображение из дискретных токенов:/x=Decoder(zq)
Трансформер
DALL-E использует модифицированную версию архитектуры трансформера для работы с объединённой последовательностью текстовых и визуальных токенов.
Структура трансформера:
-
Входная последовательность:
Текстовые токены: T = [t1,t2, ...,tn],
Токены изображения: I = [i1,i2, ...,im].
Объединённая последовательность:X=[T;I]=[t1,t2, ...,tn,i1,i2, ...,im]
-
Позиционное кодирование:
Добавляется позиционное кодирование для учёта порядка токенов:
Xpos=X+PositionalEncoding(X)
Многослойный трансформер:
Применяются несколько слоёв трансформера, каждый из которых состоит из:
Самовнимание (Self-Attention):Attention(Q,K,V)=softmax(QKTdk)V
Q,K,V — матрицы запросов, ключей и значений,
dk — размерность ключей.
Выход трансформера:
На выходе получается последовательность предсказанных токенов изображения:
Î=Transformer(Xpos)
Генерация изображений
Генерация изображений происходит в два этапа:
-
Трансформер предсказывает токены изображения:
Трансформер генерирует последовательность токенов Î, которая представляет собой дискретное латентное представление изображения.
-
Декодирование изображения:
Дискретные токены Î декодируются в пиксельное представление с помощью декодера VQ-VAE:
x=Decoder(Î)
Обучение модели
DALL-E обучается минимизировать следующую функцию потерь:
-
Перекрёстная энтропия:
Для предсказания правильных токенов изображения:Lcross-entropy= -i=1mlog P(it|i<t,T)
it — истинный токен изображения
i<t — предыдущие токены.
-
Реконструкция изображения:
Для восстановления изображений с помощью VQ-VAE:Lreconstruction=||x-x1||2
Комбинированная функция потерь:
L=Lcross-entropy+λLreconstruction
где λ — весовой коэффициент.
Принцип работы: Модель получает текстовое описание и по нему генерирует изображение. Использует методы CLIP для связывания текста и изображения и diffusion-метод для синтеза картинки.
-
Преимущества:
Глубокая интеграция с экосистемой OpenAI.
Высокое качество и разнообразие изображений.
Поддержка сложных текстовых запросов.
Простота использования через веб-интерфейс.
Midjourney
Midjourney — это коммерческий продукт с закрытым кодом, и точные детали его архитектуры не раскрываются. Однако известно, что он основан на современных генеративных моделях, сочетающих diffusion-механизмы и методы глубокого обучения.
Принцип работы Midjourney заключается в использовании собственной модифицированной архитектуры, вероятно основанной на современных диффузионных или гибридных моделях. Особое внимание уделяется стилистической выразительности, художественности и креативности результатов.
Генеративные методы, вероятно основанные на диффузионных моделях, позволяют добиваться высокой стилизации и уникальности изображений.
Среди преимуществ Midjourney можно отметить высокое качество и уникальный художественный стиль изображений, быструю генерацию результатов и поддержку множества параметров для кастомизации, что делает его мощным инструментом для создания визуального контента.
Вот таблица для наглядности:

Также имеется вариант GANs (Generative Adversarial Networks):
Генеративно-состязательные сети — это класс машинного обучения, который используется для генерации новых данных, похожих на исходные.
Данные модели работают в режиме игры с нулевой суммой, где каждая из них стремится улучшить свои результаты за счёт другой.
Принцип работы
Генеративно-состязательные сети работают на принципе состязания двух компонентов: генератора и дискриминатора.
Генератор создаёт новые данные, такие как изображения, текст или аудио, используя случайный шум в качестве входных данных, и его задача заключается в том, чтобы обмануть дискриминатор, убедив его, что сгенерированные данные являются реальными.
Дискриминатор, в свою очередь, обучается отличать настоящие данные, взятые из обучающей выборки, от тех, что созданы генератором, и должен определить, какие из них подлинные.
Генератор и дискриминатор обучаются одновременно, но их цели противоположны: генератор стремится минимизировать вероятность того, что дискриминатор правильно классифицирует сгенерированные данные, тогда как дискриминатор максимизирует свою способность различать реальные и фальшивые данные.
В результате данного процесса достигается равновесие, при котором генератор создаёт настолько реалистичные данные, что дискриминатор больше не может отличить их от настоящих.
Этапы генерации изображений:
Подготовка данных
Нейросети обучаются на датасетах, содержащих миллионы изображений. Например:
COCO (Common Objects in Context) — датасет с размеченными объектами.
LAION (Large-scale Artificial Intelligence Open Network) — огромный открытый датасет изображений с текстовыми описаниями.
Качество и размер датасета напрямую влияют на способности модели генерировать детализированные и реалистичные изображения.
Обучение модели
В процессе обучения модель изучает связи между текстовыми описаниями и визуальными элементами.
Например, при получении запроса "закат над горами", модель учится ассоциировать такие слова, как "закат", "горы", "небо", "свет" с соответствующими визуальными паттернами.
Генерация изображения
На этапе генерации пользователь предоставляет текстовый запрос (промпт), который преобразуется в числовое представление (embedding).
Модель использует данный embedding для создания изображения поэтапно:
В случае GANs: генератор создаёт изображение, а дискриминатор проверяет его реалистичность.
В случае diffusion models: модель постепенно "очищает" зашумлённое изображение, шаг за шагом улучшая его качество.

В контексте генерации изображений модели, подобные GPT, используют подход, основанный на autoregressive моделировании, где изображение рассматривается как последовательность токенов (например, пикселей или их абстрактных представлений)
После генерации изображение может быть улучшено с помощью дополнительных алгоритмов, таких как повышение резкости, коррекция цвета или увеличение разрешения (например, через Hires.fix в Stable Diffusion).
Особенности работы нейросетей
Учтите, что разные нейросети будут давать вам разные результаты на один и тот же промпт. Например, посмотрим на работу Stable Diffusion, Midjourney и DALL-E, задавая им один и тот же промпт.
Промпт: “Величественный средневековый каменный замок, возвышающийся на вершине крутой горы, окруженный обрывами с острыми краями, древние стены покрыты мхом и плющом, высокие башни и стены четко выделяются на фоне бурного неба, темные тучи озаряются вспышками молний, узкая извилистая тропа ведет к воротам замка, у подножия горы густой лес, туман, стиль фэнтези”
Stable Diffusion:

Midjourney:

DALL-E:

Как можете видеть, генерируют они по-разному, каждая нейросеть в своём стиле. Так будет и с другими моделями ИИ, такими, как:
Blue Willow, Gencraft и т.д., ведь каждая из них имеет свои уникальные особенности в обработке запросов, интерпретации промптов и генерации изображений.
Итог
Надеюсь, вы получили новые знания в области искусственного интеллекта, обработке промптов и генерации изображений.
Важно помнить, что процесс создания изображений — это не только поиск идеального результата, но и удовольствие от самого творчества. Эксперименты позволяют вам учиться на практике, находить новые способы выражения идей и постепенно формировать свой собственный стиль. Возможно, вы откроете для себя совершенно новый подход, который станет вашей визитной карточкой.
А что добавили бы вы в теорию о создании промптов? Может я что-то упустил? Пишите об этом в комментариях.
Продолжение находится здесь.
Спасибо за прочтение!
Комментарии (3)
IZh
16.05.2025 21:57Интересно, что на приведённых примерах ИИ успешно проигнорировал половину деталей промптов (например, светящиеся руны оказались на плаще, а не на посохе, у замка большинство домиков таки каменные, а не деревянные, а кот лежит не то что бы на белой подушке). Личный опыт обращения с ИИ примерно такой же — очень долго приходится вдалбливать, что же требуется.
pnmv
16.05.2025 21:57замечательная статья (поставил плюс).
однако, мои личные эксперименты приводят к интересному выводу: чем менее конкретен запрос, тем интереснее картинки, хотя и не всегда соответствуют контексту.
ну и, конечно, приводить всего по одной картинке, на каждый запрос, для каждого инструмента, по меньшей мере, странно. с первого раза, могут и не угадать.
Robic
Спасибо! Новые знания получил. Весьма существенная часть текста представляет для меня тот самый "шум") Сомневаюсь, что хоть сколь нибудь широкая аудитория в состоянии его "очистить". Вам ведь нужна эта хоть сколь нибудь широкая аудитория?