Большинство промаков вводит «replace face with photo of John» и получает набор пикселей, похожий на личность только по цвете кожи. Промт для фейс-свапа — это не заклинание, а техническое задание для латентного пространства. Он должен описать три вектора: идентичность, сцену и ограничения. Пропуск любого вектора даёт артефакты: чужую текстуру кожи, несовпадение ракурса или потерю мимики.
Анатомия рабочего промта: четыре слоя
1. Якорь идентичности (Reference)
Ссылка на изображение-донор. В MJ — параметр --cref URL. В SD — загрузка в ControlNet (IP-Adapter / InstantID) или ReActor. Качество донора решает 60% результата: ровный свет, анфас, без очков и волос на лице.
2. Описание целевой сцены (Target Prompt)
Текстовая часть промта: окружение, освещение, ракурс, стиль, одежда. Должен совпадать с геометрией донора. Если донор — портрет анфас, а промт просит «profile view looking up», модель деформирует череп. Пишите: lighting, angle, focal length, style.
3. Вес идентичности (Weight / Strength)
Параметр, балансирующий схожесть и подчиненность сцене. MJ: --cw 0..100 (0 — только черты, 100 — прическа/одежда донора). SD (InstantID/IP-Adapter): scale 0.5..1.5. ReActor: face restore strength. Начинайте с середины диапазона.
4. Негатив и технические фиксы
Обязательный блок: deformed face, asymmetrical eyes, bad anatomy, double face, blur, lowres, watermark, text, signature. Для SD добавляйте embedding EasyNegative или face_negative. В MJ — --no не работает с —cref, чистим инпейном.
Рабочий процесс в Stable Diffusion (ReActor / InstantID)
Подготовка донора
Кроп 1:1, 1024×1024, четкий фокус на глазах, нейтральный фон. Сохранить как PNG.
Загрузка в ControlNet
Вкладка ControlNet → Enable → Preprocessor: face_analysis (InstantID) или None (ReActor). Model: ip-adapter-instant-id_sdxl или reactor.
Промт сцены (Positive)
Описание цели: «cinematic shot, woman in cyberpunk armor, neon lights, 85mm f/1.4, volumetric lighting, 8k». Без упоминания лица.
Настройка весов
InstantID: Scale 0.8–1.0, Control Weight 1.0. ReActor: Denoising 0.3–0.5, Restore Face: CodeFormer. Negative prompt — обязателен.
Генерация и фикс
Batch 4–8. Выбрать лучшую геометрию. Инпейн глаз/рта при артефактах. Апскейл 2x (4x-UltraSharp).
Ситуативные шаблоны: «Если… то…»
Групповое фото
Нужно заменить только одного
В ReActor: включите «Multiple Faces» и укажите Face Index (0 — самый большой, 1 — следующий). В InstantID — маскируйте область в ControlNet (Inpaint Mask). Промт пишите общий для кадра.
Стилизация под арт
Оil painting, anime, 3D render
Снижайте вес идентичности: MJ —cw 20–40, SD InstantID Scale 0.5–0.7. Добавляйте в промт стиль: «oil painting, impasto, visible brushstrokes» или «anime style, cel shaded, key visual». Лицо адаптируется под текстуру.
Экстремальный ракурс
Профиль, низкий/высокий угол
Донор должен иметь похожий ракурс — иначе модель галлюцинирует череп. Если донора нет: в промт цели добавляйте «extreme low angle», «side profile», «looking up» и готовьтесь к инпейну. InstantID лучше держит геометрию при сильных углах, чем ReActor.
Смена возраста/пола
Сохранить личность, изменить демографию
Используйте промт-директивы: «elderly version, wrinkles, gray hair» или «young adult, smooth skin». Вес идентичности держите высоким (MJ —cw 80+, SD Scale 1.0+), иначе потеряется личность. Работает лучше на SD с InstantID.
Готовые шаблоны промтов (копируйте и адаптируйте)
Типичные сбои и быстрая диагностика
Чужое лицо на чужой голове
Вес идентичности слишком низкий. Поднимите —cw или Scale. Проверьте, что донор не обрезан.
Лицо «плавает» / меняется от генерации к генерации
Плохой донор (плохой свет, ракурс, сжатие). Нужен качественный референс. В SD включите ControlNet OpenPose параллельно для фиксации позы головы.
Текстура кожи не совпадает с телом
Проблема блендинга. В SD: увеличьте Denoising strength в ReActor (0.4–0.6) или используйте инпейн маску шеи/ушей. В MJ — только вариации + инпейн в редакторе.
Артефакты у глаз / рта (зрачки, зубы)
Стандартная проблема диффузии. Лечится точечным инпейном (Inpaint mask only eyes/mouth) с тем же промтом и Denoising 0.3. CodeFormer/GFPGAN в post-processing помогает, но может «перегладеть».