Результат без структуры: «суп» из лиц, смешанные одежды, лишние конечности.
Результат с протоколом: три изолированных контейнера с уникальными атрибутами.
Почему модель смешивает персонажей в одного
Диффузионные модели (Midjourney, Stable Diffusion, DALL·E) не имеют внутренней модели «объекта». Они оперируют вниманием (attention) к токенам. Когда вы пишете «девушка в красном, парень в синем», механизм внимания видит набор слов: {девушка, красный, парень, синий}. Он не знает, что «красный» принадлежит «девушке», а «синий» — «парню». Вероятность смешения пропорциональна близости токенов в промте.
Кросс-внимание (cross-attention) распределяется по всему холсту единовременно. Без явных разделителей градиенты цветов, текстур и черт лиц «текут» друг в друга на уровне латентного пространства.
Ключевой вывод: разделение должно быть синтаксическим, пространственным и весовым — одновременно.
Протокол из 5 шагов: от хаоса к композиции
Жёсткие разделители
Используйте вертикальные черты |, двойные двоеточия :: (Midjourney) или скобки-контейнеры [ ... ] (SD/ComfyUI). Каждый герой — в своём блоке. Запятые внутри блока, разделители — между блоками.
Координатная сетка
Пропишите позицию для каждого контейнера: «left third, looking right», «center, facing camera», «right third, profile view». Избегайте «next to each other» — это вектор к слиянию. Якорь фиксирует латентное положение до этапа денойзинга.
Визуальная дифференциация
Максимизируйте контраст: разный пол, возраст, раса, прическа, силуэт одежды, цветовая схема (комплементарные пары), уникальные аксессуары. Модель различает «красную шапку» и «синюю кепку» лучше, чем «человек 1» и «человек 2».
Весовые коррекции
Поднимите вес уникальным маркерам: (red hair:1.2), (beard:1.3). Ослабьте общие слова: (person:0.8). Баランス: сумма весов контейнеров ~ 1.0 на токен позиции.
Итерационная чистка
Первый проход — черновик. Используйте Inpainting (Midjourney Vary Region, SD Inpaint) для коррекции артефактов: лишние руки, чужой цвет глаз, смешанная ткань. Маскируйте зону контейнера, перерисовывайте только его с чистым под-промтом.
Анатомия провала и успеха
Промт-каша (не делайте так)
- Нет разделителей — токены смешались в внимании.
- Нет координат — модель решает композицию случайно.
- Общие слова («together», «smiling») применяются к обоим, стерая различия.
- Риск: два лица на одной голове, рука в рукаве другого цвета, общий силуэт.
Структурированный промт (шаблон)
- Контейнеры
[ ... ]изолируют атрибуты. - Разделители
|блокируют перетекание внимания. - Якоря
left/right thirdфиксируют геометрию. - Веса
:1.2защищают ключевые маркеры.
Готовые формулы под популярные модели
Midjourney v6 / v6.1
Используйте :: для разделения концептов и --no для запрета слияний.
Stable Diffusion XL / ComfyUI
Работает с BREAK, скобками-контейнерами и Regional Prompter / Attention Coupling. Веса в скобках: (token:1.3).
DALL·E 3 (ChatGPT)
Понимает естественный язык лучше всего. Пишите как техническое задание: раздельные абзацы для каждого героя, явные координаты, запрет на смешение в конце.
Продвинутый контроль: когда протокола мало
Региональное промптинг (Regional Prompting)
ComfyUI / Automatic1111 / Forge
Делит латентное пространство на маски (маска = контейнер) на этапе денойзинга. Каждый шаг самплинга применяет свой под-промт только к своей зоне. Это аппаратное разделение внимания, а не программное. Работает через расширения Regional Prompter, Attention Coupling или нативный Conditioning (Area) в ComfyUI.
Character Reference (—cref)
Midjourney v6 и SD (IP-Adapter, InstantID) позволяют зафиксировать личность. Сначала сгенерируйте референс каждого героя отдельно (портрет, полный рост). Затем в мульти-промте ссылайтесь на них: --cref URL1 URL2 --cw 100. Это снимает задачу «рисования лиц» с основного промта.
Inpainting-хирургия
Идеальный мульти-персонаж за 1 проход — миф. Профессиональный пайплайн: базовая генерация по протоколу → Vary Region (MJ) / Inpaint (SD) по маске каждого контейнера → чистый под-промт только для этого героя. Исправляет: чужой цвет глаз, чужой узор на футболке, лишнюю руку, наложение тени.