Несколько героев на одной картинке: промт, который разделяет, а не сливает

Структура промта Пространственные якоря Веса и регионы

Несколько героев на одной картинке: промт, который разделяет, а не сливает

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

Результат без структуры: «суп» из лиц, смешанные одежды, лишние конечности.

Результат с протоколом: три изолированных контейнера с уникальными атрибутами.

Почему модель смешивает персонажей в одного

Диффузионные модели (Midjourney, Stable Diffusion, DALL·E) не имеют внутренней модели «объекта». Они оперируют вниманием (attention) к токенам. Когда вы пишете «девушка в красном, парень в синем», механизм внимания видит набор слов: {девушка, красный, парень, синий}. Он не знает, что «красный» принадлежит «девушке», а «синий» — «парню». Вероятность смешения пропорциональна близости токенов в промте.

Кросс-внимание (cross-attention) распределяется по всему холсту единовременно. Без явных разделителей градиенты цветов, текстур и черт лиц «текут» друг в друга на уровне латентного пространства.

Ключевой вывод: разделение должно быть синтаксическим, пространственным и весовым — одновременно.

Схема внимания без разделителей

Контейнер персонажа

Жёсткий синтаксический блок, изолирующий все дескрипторы одного героя: внешность, одежда, поза, эмоция, координаты. Формат: [Subject: Description :: Location :: Weight]. Контейнер не даёт вниманию «утечь» к соседям.

Пространственный якорь

Координатная привязка контейнера к зоне холста. Используйте термины: left third, center frame, upper right quadrant. Для SDXL/Midjourney v6 работают натуральные фразы: «standing on the left, facing right».

Весовой коэффициент

Принудительное усиление или ослабление внимания к токенам контейнера. Синтаксис: (token:1.3) или [token::0.7]. Критично для доминантных цветов или сложных поз, которые «побеждают» соседние контейнеры.

Протокол из 5 шагов: от хаоса к композиции

1

Жёсткие разделители

Используйте вертикальные черты |, двойные двоеточия :: (Midjourney) или скобки-контейнеры [ ... ] (SD/ComfyUI). Каждый герой — в своём блоке. Запятые внутри блока, разделители — между блоками.

2

Координатная сетка

Пропишите позицию для каждого контейнера: «left third, looking right», «center, facing camera», «right third, profile view». Избегайте «next to each other» — это вектор к слиянию. Якорь фиксирует латентное положение до этапа денойзинга.

3

Визуальная дифференциация

Максимизируйте контраст: разный пол, возраст, раса, прическа, силуэт одежды, цветовая схема (комплементарные пары), уникальные аксессуары. Модель различает «красную шапку» и «синюю кепку» лучше, чем «человек 1» и «человек 2».

4

Весовые коррекции

Поднимите вес уникальным маркерам: (red hair:1.2), (beard:1.3). Ослабьте общие слова: (person:0.8). Баランス: сумма весов контейнеров ~ 1.0 на токен позиции.

5

Итерационная чистка

Первый проход — черновик. Используйте Inpainting (Midjourney Vary Region, SD Inpaint) для коррекции артефактов: лишние руки, чужой цвет глаз, смешанная ткань. Маскируйте зону контейнера, перерисовывайте только его с чистым под-промтом.

Анатомия провала и успеха

Промт-каша (не делайте так)

A photo of a woman in red dress and a man in blue suit, standing together, smiling, cinematic lighting, 8k, highly detailed
  • Нет разделителей — токены смешались в внимании.
  • Нет координат — модель решает композицию случайно.
  • Общие слова («together», «smiling») применяются к обоим, стерая различия.
  • Риск: два лица на одной голове, рука в рукаве другого цвета, общий силуэт.

Структурированный промт (шаблон)

[Character 1: young woman, (red silk dress:1.2), (curly auburn hair:1.1), green eyes, smiling :: standing in left third, body angled right, looking at character 2 :: weight 1.0] | [Character 2: middle-aged man, (navy tailored suit:1.2), (short gray beard:1.1), brown eyes, calm expression :: standing in right third, body angled left, looking at character 1 :: weight 1.0] | [Environment: modern art gallery, soft volumetric lighting, bokeh background :: full frame :: weight 0.8]
  • Контейнеры [ ... ] изолируют атрибуты.
  • Разделители | блокируют перетекание внимания.
  • Якоря left/right third фиксируют геометрию.
  • Веса :1.2 защищают ключевые маркеры.

Готовые формулы под популярные модели

Midjourney v6 / v6.1

Используйте :: для разделения концептов и --no для запрета слияний.

Character 1: young woman, red dress, auburn hair, green eyes :: left third, facing right :: 1.0 :: Character 2: middle-aged man, navy suit, gray beard, brown eyes :: right third, facing left :: 1.0 :: art gallery, soft lighting :: background :: 0.8 —ar 16:9 —stylize 250 —v 6.1 —no merging, blending, extra limbs, shared clothing

Stable Diffusion XL / ComfyUI

Работает с BREAK, скобками-контейнерами и Regional Prompter / Attention Coupling. Веса в скобках: (token:1.3).

[young woman | red silk dress:1.2 | curly auburn hair:1.1 | green eyes | smiling | left third | facing right] BREAK [middle-aged man | navy tailored suit:1.2 | short gray beard:1.1 | brown eyes | calm | right third | facing left] BREAK [modern art gallery | soft volumetric lighting | bokeh background] Negative: merged faces, shared limbs, blended clothing, extra fingers, mutation, low quality

DALL·E 3 (ChatGPT)

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

Character 1 (Left third): Young woman, red silk dress, curly auburn hair, green eyes, smiling. Body angled right, looking at Character 2. Character 2 (Right third): Middle-aged man, navy tailored suit, short gray beard, brown eyes, calm expression. Body angled left, looking at Character 1. Setting: Modern art gallery, soft volumetric lighting, bokeh background. Strict constraints: No merging of characters. No shared limbs or clothing. Distinct color palettes per character. Separate spatial zones.

Продвинутый контроль: когда протокола мало

Региональное промптинг (Regional Prompting)

ComfyUI / Automatic1111 / Forge

Делит латентное пространство на маски (маска = контейнер) на этапе денойзинга. Каждый шаг самплинга применяет свой под-промт только к своей зоне. Это аппаратное разделение внимания, а не программное. Работает через расширения Regional Prompter, Attention Coupling или нативный Conditioning (Area) в ComfyUI.

Совет: Генерируйте маски по простой геометрии (прямоугольники left/center/right) на ранних шагах (0-0.3 sigma), затем снимите маски для глобальной связности света.

Character Reference (—cref)

Midjourney v6 и SD (IP-Adapter, InstantID) позволяют зафиксировать личность. Сначала сгенерируйте референс каждого героя отдельно (портрет, полный рост). Затем в мульти-промте ссылайтесь на них: --cref URL1 URL2 --cw 100. Это снимает задачу «рисования лиц» с основного промта.

Inpainting-хирургия

Идеальный мульти-персонаж за 1 проход — миф. Профессиональный пайплайн: базовая генерация по протоколу → Vary Region (MJ) / Inpaint (SD) по маске каждого контейнера → чистый под-промт только для этого героя. Исправляет: чужой цвет глаз, чужой узор на футболке, лишнюю руку, наложение тени.

Промт — это не пожелание. Это архитектурный чертеж.

Нейросеть не «видит» сцену. Она решает уравнение вероятностей. Ваша задача — убрать степени свободы, которые приводят к слиянию. Жёсткие контейнеры + координатные якоря + весовые коэффициенты + региональный контроль = предсказуемый результат.

Контейнер Якорь Вес Регион Итерация