Игорь Градов
Игорь Градов
6 мин
ai

Генерация лица нейросетью: поэтапная сборка портрета точнее одного промпта

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

Генерация лица нейросетью: поэтапная сборка портрета точнее одного промпта
Почему это важно

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

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

Какую проблему решает поэтапная генерация?

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

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

Что понадобится

  • Stable Diffusion (открытая модель для генерации изображений), установленная локально
  • ControlNet (модуль для управления позой, контурами и другими структурными параметрами через референсное изображение)
  • IP Adapter (модуль, который позволяет задавать стиль или внешность через картинку-образец вместо текста)
  • Compel (библиотека для работы с длинными промптами и управления весом отдельных слов, то есть их влиянием на результат)
  • Матрица совместимости атрибутов: таблица, где заранее отмечено, какие признаки можно задавать вместе, а какие лучше добавлять на отдельных шагах
  • Время: настройка пайплайна займёт от нескольких часов до пары дней, зависит от опыта работы со Stable Diffusion

Пошаговая инструкция

  1. Сравните модели и выберите базовую. Команда Singularis тестировала DALL-E, Midjourney и разные версии Stable Diffusion. Заказчик выбрал локальное решение на Stable Diffusion, потому что оно позволяет работать без облака и полностью контролировать процесс.

  2. Составьте матрицу совместимости атрибутов. Выпишите все нужные параметры: возраст, пол, форма лица, цвет и длина волос, причёска, очки, борода и так далее. Разделите их на две группы: совместимые (можно задавать в одном промпте, не конфликтуют друг с другом) и конфликтующие (при одновременной генерации один параметр ломает другой).

  3. Сгенерируйте базовый портрет через text-to-image. Включите в промпт только совместимые признаки. Используйте Compel для управления весом отдельных слов:

prompt = "photo of a 35 year old caucasian woman, oval face, brown eyes, short dark hair, neutral expression, studio lighting, front view"

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

  1. Добавляйте сложные атрибуты поэтапно через img2img. Возьмите полученное базовое изображение и передайте его в режим img2img (image-to-image, генерация нового изображения на основе существующего). Добавьте один конфликтующий признак, например очки:
input_image = "base_portrait.png"
prompt = "same person wearing thin metal frame glasses"
strength = 0.35

Параметр strength (сила изменения) держите низким, от 0.3 до 0.4, чтобы нейросеть меняла только нужный атрибут, а не перерисовывала лицо целиком.

  1. Используйте ControlNet для структурного контроля. Если нужно сохранить позу или контур лица при добавлении нового признака, подключите ControlNet с картой контуров или позы от базового изображения. Это не даёт генерации «уехать» от исходного портрета.

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

Что ввели и что получили

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

Шаг 1. Text-to-image: промпт с базовыми совместимыми признаками (возраст, пол, форма лица, цвет глаз, волосы). Результат: фотореалистичный портрет без артефактов, все пять признаков на месте.

Шаг 2. Img2img: добавили очки (strength 0.35). Результат: очки появились, но черты лица и причёска остались без изменений.

Шаг 3. Img2img: добавили улыбку (strength 0.3). Результат: выражение лица изменилось, остальные параметры сохранились. Без поэтапного подхода очки и улыбка в одном промпте с остальными признаками приводили к тому, что нейросеть меняла форму лица или «забывала» цвет глаз.

Частые ошибки

Всё в один промпт. Самая распространённая ошибка. Чем больше признаков вы вписываете в один промпт, тем менее предсказуемый результат. Разделяйте на этапы.

Высокий strength при img2img. Если поставить strength выше 0.5, нейросеть начинает перерисовывать лицо целиком, и базовый портрет теряется.

Нет матрицы совместимости. Без неё вы каждый раз гадаете, какие признаки конфликтуют. Составьте таблицу один раз, она экономит часы на каждом следующем наборе.

Игнорирование формулировок. Одно и то же свойство, описанное разными словами, даёт разный результат. «Thin metal frame glasses» и «glasses» это два разных результата. Фиксируйте рабочие формулировки.

Что делать с этим прямо сейчас, по ролям

Авторам Дзена. Если вам нужны уникальные портреты для иллюстраций, поэтапный подход позволяет получить именно того персонажа, который нужен, а не случайное лицо. Не обязательно поднимать локальный Stable Diffusion: принцип «сначала база, потом детали» работает и в облачных сервисах, просто делайте несколько итераций вместо одного промпта.

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

Предпринимателям в РФ. Пайплайн работает полностью локально, без передачи данных в облако. Для биометрических и других чувствительных задач это критично. Stable Diffusion, ControlNet и Compel доступны в России без ограничений, это открытые инструменты.

Мнение редакции dzen.guru

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

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

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

Научитесь управлять нейросетями для контента

В инструментах dzen.guru мы разбираем промпт-инжиниринг и генерацию изображений на практике, от базовых техник до сложных пайплайнов.

Попробовать

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

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Что такое ИИ-агент, который сам договаривается с другими: открытый agents-party за 5 минут
ai

Что такое ИИ-агент, который сам договаривается с другими: открытый agents-party за 5 минут

Представьте: у вас открыты три агентские сессии одновременно, и одна из них меняет код, на который опирается вторая, а вы вручную копируете контекст между…

5 мин
DLSS 5 после волны критики: Nvidia добавила маски по объектам и три сменные нейросети
ai

DLSS 5 после волны критики: Nvidia добавила маски по объектам и три сменные нейросети

Nvidia четвёртого месяца после провального анонса вернулась на SIGGRAPH и раскрыла устройство DLSS 5, показав три сменные нейросети, маски по объектам и…

6 мин
Разработка ИИ-агентов для PHP: из пяти моделей задачу решила только одна
ai

Разработка ИИ-агентов для PHP: из пяти моделей задачу решила только одна

Автор протестировал четыре локальных ИИ-агента и один облачный на реальном PHP/Symfony-проекте с мониторингом сайтов, прогнал каждого через функциональные…

6 мин