Почему лицо «плывёт» даже при точном описании
В латентном пространстве модели не хранится «фото конкретного человека». Хранится статистическое распределение признаков: форма глаз, расстояние между зрачками, изгиб губ. Когда вы пишете «женщина 30 лет, карие глаза», сэмплер берёт центр этого кластера — усреднённый облик.
Промт словами («очень похожа на фото», «identical face») работает слабо, потому что текстовый энкодер (CLIP, T5) сжимает описание в вектор, где детали лица теряют приоритет на фоне композиции, света, стиля.
Пять рычагов, которые реально работают
CFG Scale (Guidance)
Низкий CFG (2–4) даёт свободу, лицо «расплывается». Высокий (7–12) заставляет следовать промту, но порождает артефакты. Для лиц: 5–7 — баланс подчиненности и естественности.
Denoising Strength
В img2img / Inpaint. 0.25–0.45 — меняет детали, сохраняет структуру черепа. >0.6 — перерисовывает лицо целиком. Для «только прическа/одежда» ставьте 0.15–0.25.
ControlNet (Canny / Depth)
Жесткий контур. Canny — для сохранения точной овалики и линий профиля. Depth — для объёма, если ракурс меняется. Weight 0.8–1.0, End Step 0.8–1.0.
IP-Adapter / FaceID
Семантический якорь. Передаёт эмбеддинг лица (InsightFace) в cross-attention. Работает без ControlNet. Weight 0.6–0.9. FaceID Plus v2 — текущий стандарт для SDXL/SD1.5.
Seed + ReNoise
Фиксированный Seed даёт детерминизм. ReNoise (в ComfyUI / Automatic1111) позволяет менять композицию/свет, сохраняя низкочастотные частоты (структуру лица) от исходного шума.
Сравнение подходов: слова vs структура
Ввод: «portrait of a specific woman, identical face, same moles, same eyes, photorealistic»
- ❌ Нет детерминизма
- ❌ CLIP теряет мелкие признаки
- ✅ Быстро для черновиков
Ввод: Референс в IP-Adapter (weight 0.8) + Canny ControlNet (weight 0.9) + Промт с антропометрией.
- ✅ Идентичность > 95% (L2 distance)
- ✅ Контроль ракурса через Depth
- ⚙️ Требует ComfyUI / WebUI extensions
Когда промта недостаточно: LoRA и DreamBooth
Если нужно генерировать одного персонажа в сотнях ракурсов, освещений и выражениях — IP-Adapter даёт дрожание (jitter). Обучение LoRA (Low-Rank Adaptation) на 15–25 качественных фото закатывает идентичность в веса модели.
Правило: LoRA обучается на вариативных фото (разный свет, ракурс, эмоции), но одном человеке. Регуляризационные изображения (class images) предотвращают переобучение стиля за счёт лица.
Чек-лист: диагностика потери лица
Причина: нет ControlNet Canny или слабый IP-Adapter weight. Лечение: вкл. Canny (w=1.0), добавьте в негатив asymmetric pupils, uneven eyes.
Причина: Denoising > 0.5 без ControlNet Depth. Лечение: Depth ControlNet (w=0.8) или снизьте denoising до 0.3.
Причина: текстура кожи не зафиксирована. Лечение: IP-Adapter FaceID Plus v2 (high fidelity), добавьте маркеры в промт: mole at [coord].
Причина: слишком высокий CFG (>10) или aggressive smoothing в VAE. Лечение: CFG 5–6, VAE decoder tilt, negative: airbrush, plastic skin, smooth skin.