Генерация группового портрета в Stable Diffusion или Midjourney нередко заканчивается тем, что у всех персонажей на изображении оказывается одно и то же лицо — модель буквально клонирует одну внешность на всю толпу. Это не случайный глюк, а следствие того, как диффузионные модели обрабатывают повторяющиеся сущности в промпте: одно текстовое описание «woman» или «man» применяется ко всем лицам сразу, и сеть выдаёт усреднённый, статистически «наиболее вероятный» вариант.

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

Почему нейросеть рисует одинаковые лица

Основная причина кроется в архитектуре текстового энкодера. Когда вы пишете промпт вида «group of people, smiling», модель получает одно векторное представление для всех людей на изображении. У неё нет механизма, который бы по умолчанию различал «первого человека» и «второго человека» — оба токена ссылаются на одно и то же понятие.

Вторая причина — работа механизма внимания (attention). Слои cross-attention распределяют текстовые признаки по пространству изображения, и при недостаточной пространственной привязке одни и те же признаки лица «протекают» в разные области картинки. Результат — зеркальные копии одной внешности с минимальными вариациями.

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

💡

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

Проверка: это проблема промпта или модели

Прежде чем менять настройки, выполните простую диагностику. Сгенерируйте тестовое изображение с промптом, где персонажи явно различны: например, «an old man with a beard and a young woman with red hair». Если лица всё равно похожи — проблема глубже, чем формулировка запроса, и связана с моделью или разрешением генерации.

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

  • 🔍 Сгенерируйте сцену с явно разными персонажами (возраст, пол, цвет волос)
  • 📐 Проверьте, сколько пикселей приходится на каждое лицо при текущем разрешении
  • 🎲 Повторите генерацию с другим значением seed — если лица идентичны при разных seed, причина системная
  • 🧪 Протестируйте ту же сцену на другой модели или чекпоинте

Исправление на уровне промпта

Самый доступный метод — детализировать каждого персонажа отдельно. Вместо «three women» опишите каждую: «a blonde woman in a red dress, a brunette woman with glasses, a woman with short black hair». Это даёт текстовому энкодеру разные векторы для разных областей изображения.

Помогает и указание пространственного расположения: «on the left», «in the center», «on the right». Пространственные маркеры помогают механизму внимания привязать конкретное описание к конкретной зоне холста. В ComfyUI и AUTOMATIC1111 дополнительно доступны техники региональных промптов, где каждой области задаётся собственное описание.

📊 Как чаще всего вы решаете проблему одинаковых лиц?
Детализирую промпт для каждого персонажа
Использую региональные промпты или ControlNet
Делаю inpaint лиц по отдельности
Генерирую персонажей по одному и совмещаю

Технические методы: seed, разрешение и расширения

Смена seed меняет конкретные лица, но не устраняет саму тенденцию к клонированию — это скорее лотерея, чем решение. Более надёжный путь — повысить разрешение генерации или использовать Hires. fix / двухпроходный апскейл, чтобы каждое лицо получило достаточно деталей для индивидуализации.

Для точного контроля применяются расширения и ноды пространственного контроля. Возможные варианты (доступность зависит от вашего интерфейса и версии):

  • 🧩 Regional Prompter — разделяет холст на зоны с отдельными промптами для каждой
  • 🎛 ControlNet с референсами — задаёт позу и расположение каждого персонажа
  • 🖌 Latent Couple — композиция нескольких промптов в разных областях latent-пространства
  • 👤 IP-Adapter / ReActor — подстановка конкретных референсных лиц на заданные позиции
⚠️ Внимание: расширения для региональных промптов чувствительны к версии веб-интерфейса. Перед установкой сверяйтесь с документацией конкретного расширения — инструкции для устаревших версий могут не работать или ломать генерацию.

☑️ Порядок действий при одинаковых лицах

Выполнено: 0 / 5

Постобработка: inpaint отдельных лиц

Если изображение уже сгенерировано и композиция нравится, но лица-клоны портят результат, используйте inpaint. Замаскируйте одно лицо, задайте для него отдельный промпт с уникальным описанием и сгенерируйте заново. Повторите для каждого проблемного лица.

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

💡

При inpaint лиц снижайте denoising strength до умеренных значений — так новое лицо сохранит позу и ракурс оригинала, но получит индивидуальные черты.

Сравнение методов решения

МетодСложностьКонтроль результатаКогда применять
Детализация промптаНизкаяСреднийПростые сцены, 2–3 персонажа
Смена seedМинимальнаяНизкийБыстрая проверка вариантов
Региональные промптыСредняяВысокийСложные композиции, много людей
ControlNet + референсыВысокаяОчень высокийТочные позы и конкретные лица
Inpaint по лицамСредняяВысокийИсправление готового изображения
⚠️ Внимание: при использовании реальных референсных фотографий для подстановки лиц учитывайте правовые ограничения. Генерация изображений с лицами реальных людей без их согласия может нарушать законодательство о персональных данных и правах на изображение.

Когда проблема не решается

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

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

Почему маленькие лица в толпе всегда похожи

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

Частые вопросы

Почему лица одинаковые даже при разных seed?

Seed определяет стартовый шум генерации, но текстовое описание персонажей остаётся единым. Если промпт не различает людей, модель будет воспроизводить один «идеальный» типаж лица при любом seed.

Помогает ли негативный промпт против клонирования лиц?

Негативный промпт может слегка снизить эффект (например, указание «identical faces, cloned face»), но он не решает корневую причину — единое текстовое описание. Надёжнее детализировать каждого персонажа в основном промпте.

Работают ли эти методы в Midjourney?

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

Сколько лиц можно качественно сгенерировать на одном изображении?

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

Можно ли исправить одинаковые лица без перегенерации?

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