Почему «просто вставить» не работает
Генератор не видит «слои». Он видит пиксели. Если в исходнике человек освещён сбоку мягким светом, а фон — яркий полдень с резкими тенями, модель либо перерисует человека под фон (теряя лиčnostь), либо оставит его «липким» наложением.
Три главных врага реалистичности:
- Светонесовместимость: разные источники, температура, жесткость теней.
- Геометрический конфликт: горизонт камеры, фокусное расстояние, наклон головы не совпадают с линией горизонта фона.
- Дрифт идентичности: модель «улучшает» лицо под статистику обучающей выборки, стирая уникальные черты.
Инструменты: четыре подхода к одной задаче
Midjourney v6 / Niji
Работает через параметры --cref (Character Reference) и --cw (Character Weight). Лучший баланс скорости и качества лица.
--cw 100 (лицо+одежда) или --cw 0 (только лицо).Stable Diffusion XL + IP-Adapter / ControlNet
Полный контроль. IP-Adapter FaceID / PlusV2 передаёт эмбеддинг лица. ControlNet (Depth, Canny, OpenPose) закрепляет позу и глубину. Inpainting маской швов финиширует результат.
Weight 0.8-1.0 для IP-Adapter, ControlNet Strength 0.6-0.8 для позы.DALL·E 3 / ChatGPT + Inpainting
Конверсационный подход. Загружаете фото человека, просите описать его детально, затем просите сгенерировать сцену с этим описанием, потом — inpainting зоны лица для точного попадания.
Специализированные свапперы (InsightFace, FaceFusion, ReActor)
Не генерация, а замена пикселей лица на сгенерированном кадре. Дают 100% сходство, но требуют готового кадра с правильной позой/освещением. Часто финальный шаг в пайплайне SD/MJ.
Сравнение стратегий: слабый vs сильный промт
Слабый промт (наивный)
- Нет референса личности (—cref / IP-Adapter) — лицо будет случайным.
- Нет описания позы — модель «придумает» позу, часто неанатомичную.
- Нет света — лес даёт рассеянный зелёный свет, лицо станет зеленоватым.
- Нет оптики — перспектива лица не совпадёт с перспективой леса.
Сильный промт (технический)
- —cref + URL блокирует идентичность.
- Поза + ракурс (3/4 profile, eye level) синхронизирует геометрию.
- Свет (top-left, warm) задаёт тени на лице заранее.
- —cw 85 оставляет свободу для капюшона/одежды, но держит лицо.
Практический пайплайн: от фото к результату за 4 итерации
Подготовка донора
Выберите фото: лицо в полную/3/4, равномерный свет, высокое разрешение. Обрежьте до квадрата 1:1. Уберите фон (прозрачность не нужна для MJ, но полезна для SD Inpainting).
Базовая генерация сцены
Сгенерируйте фон/сцену БЕЗ персонажа. Зафиксируйте seed, композицию, свет. В MJ используйте —no people. В SD — txt2img с ControlNet Depth от эскиза композиции.
Внедрение (Inpainting / CREF)
MJ: Vary Region (область фигуры) + промт с —cref URL. SD: Inpainting маской фигуры + IP-Adapter FaceID + ControlNet OpenPose от желаемой позы. DALL·E: Selection tool + промт с описанием лица.
Пост-обработка швов
Color Match (Curves / Match Color в PS) для согласования тонов кожи и окружения. Генеративная заливка (Generative Fill) по контуру 5-10px для стирания «обводки». Добавить зернистость / хроматическую аберрацию единообразно.
Три подводных камня, которые игнорируют новички
Парадокс —cw / Weight
Высокий вес (100 / 1.0) замораживает не только лицо, но и одежду, причёску, даже позу донора. Персонаж в пальто не сможет надеть купальник. Решение: генерируйте в два прохода — лицо на высоком весе, затем Inpainting зоны тела на низком весе (—cw 0-20 / Weight 0.3) с промтом одежды.
Игнорирование высоты камеры
Если донор снят снизу (героический ракурс), а сцена генерации подразумевает камеру на уровне глаз — шея вытянется или сожмётся неестественно. Всегда прописывайте camera height (eye level, chest level, low angle) и lens (24mm, 35mm, 85mm) явно.
Цветовые контаминации окружения
Красный кирпичный стене отразится на щеках. Неоновый знак окрасит волосы в синий. Промт должен содержать reflected light / color bounce от фона. В SD используйте ControlNet Tile / Depth + IP-Adapter с низкой силой (0.3-0.4) на проходе релайтинга, чтобы запечь отражения в геометрию лица.