То же лицо по одному фото: IP-Adapter FaceID

<!-- lesson: face-same-photo -->

Урок «face-same-photo» в группе Лица и персонажи списка уроков. Шагов: 11.

Сначала согласие

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

Чему вы научитесь

Вы добавите IP-Adapter FaceID в граф первой картинки, и лицо с фото поведёт лицо на новой картинке.

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

  • Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
  • Паки нод: ComfyUI_IPAdapter_plus. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
  • Ноды: Load Checkpoint, KSampler, IPAdapter Unified Loader FaceID, Load Image, IPAdapter FaceID.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Сначала о лицах (чтение)

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

    IP-Adapter FaceID читает лицо с одного фото и заставляет модель нарисовать это лицо на новой картинке. В примере ваше собственное фото или герой, которого вы сгенерировали.

    Ноды этого урока даёт пак ComfyUI_IPAdapter_plus. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете.

    Урок продолжает граф из урока «Первая картинка из текста».

  2. Нужен граф первой картинки

    На холсте должны быть Load Checkpoint и KSampler, и модель должна идти от одного к другому.

    FaceID работает с чекпойнтами SD 1.5 и SDXL. С Flux, SD3 или Wan он ничего полезного не делает: у этих семейств свои способы.

  3. Какие файлы нужны и куда их класть (чтение)

    Загрузчик FaceID сам находит свои файлы по именам в этих папках:

    • адаптер FaceID, например ip-adapter-faceid-plusv2_sd15.bin или ip-adapter-faceid-plusv2_sdxl.bin: models/ipadapter;
    • его LoRA с тем же именем, ip-adapter-faceid-plusv2_sd15_lora.safetensors: models/loras;
    • чтение картинки CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors: models/clip_vision;
    • InsightFace с моделью buffalo_l: models/insightface. В ComfyUI должен быть установлен пакет Python InsightFace.

    Файлы старых форматов (.ckpt, .pt, .pth, .bin) могут при загрузке выполнить код. Берите их только со страницы самой модели. Точные имена перечисляет страница самого пака; берите файлы со страниц, на которые она ссылается.

  4. Добавьте загрузчик FaceID

    Добавьте ноду IPAdapter Unified Loader FaceID и соедините выход MODEL ноды Load Checkpoint с её входом model. Поставьте preset в FACEID PLUS V2, а lora_strength равным 0.6.

    Пресет выбирает адаптер и его LoRA. FACEID PLUS V2 взят из примера пака. Сила LoRA 0.6 тоже из примера: больше давит лицо сильнее и делает картинку деревянной.

  5. Загрузите фото лица

    Добавьте ноду Load Image и выберите фото в её поле image.

    Лучше всего фото анфас, чёткое и ровно освещённое, лицо крупное, ничем не закрыто. InsightFace ищет одно лицо: если их несколько, он может взять не то.

  6. Добавьте ноду FaceID

    Добавьте ноду IPAdapter FaceID и подключите:

    • model и ipadapter от одноимённых выходов IPAdapter Unified Loader FaceID;
    • image от Load Image.

    Потом соедините выход MODEL ноды IPAdapter FaceID со входом model ноды KSampler. Связь, которая шла прямо от Load Checkpoint, снимется сама.

  7. Задайте силу

    В ноде IPAdapter FaceID поставьте weight равным 1 и weight_faceidv2 равным 2, как в примере пака.

    weight говорит, насколько сильно лицо вдавливается в картинку. Если картинка «горит», с резким контрастом, сломанными цветами или застывшей маской лица, уменьшите его к 0.7. weight_faceidv2 работает только с адаптерами V2 и задаёт, насколько лицо похоже на фото.

  8. Настройте сэмплер

    В ноде KSampler поставьте steps равным 30 и cfg равным 6.5, как в примере.

    С адаптером большой cfg раньше сжигает картинку: если уменьшения weight мало, уменьшите и cfg.

  9. Что он сохраняет, а что нет (чтение)

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

    Фото в жёстком боковом свете даёт лицо с этим светом внутри. Фото снизу даёт широкую челюсть. Поэтому лучше всего работает фото анфас при ровном свете.

  10. Другие адаптеры лица (чтение)

Ещё два способа делают то же для других семейств:

  • InstantID (пак ComfyUI_InstantID): SDXL; адаптер InstantID в models/instantid, своя ControlNet в models/controlnet и InsightFace AntelopeV2 в models/insightface. Он ещё и сохраняет поворот головы с фото;
  • PuLID (паки PuLID для SDXL и для Flux): файл PuLID в models/pulid, InsightFace AntelopeV2 и модель EVA-CLIP, которую пак скачивает сам. Остальную картинку он меняет меньше.

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

  1. Граф готов (чтение)

Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.

Если публикуете такую картинку, не выдавайте её за фотографию настоящего события.

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 2, Нужен граф первой картинки:
    • нода Load Checkpoint.
    • нода KSampler.
    • MODEL ноды Load Checkpoint во вход model ноды KSampler (можно через Load LoRA или LoraLoaderModelOnly или IPAdapter Unified Loader FaceID или IPAdapter FaceID).
  • Шаг 4, Добавьте загрузчик FaceID:
    • нода IPAdapter Unified Loader FaceID.
    • MODEL ноды Load Checkpoint во вход model ноды IPAdapter Unified Loader FaceID (можно через Load LoRA или LoraLoaderModelOnly).
    • preset ноды IPAdapter Unified Loader FaceID: FACEID PLUS V2.
    • lora_strength ноды IPAdapter Unified Loader FaceID: от 0.5 до 0.7; «Сделать за меня» ставит 0.6.
  • Шаг 5, Загрузите фото лица:
    • нода Load Image.
    • image ноды Load Image: значение выбрано.
  • Шаг 6, Добавьте ноду FaceID:
    • нода IPAdapter FaceID.
    • MODEL ноды IPAdapter Unified Loader FaceID во вход model ноды IPAdapter FaceID.
    • ipadapter ноды IPAdapter Unified Loader FaceID во вход ipadapter ноды IPAdapter FaceID.
    • IMAGE ноды Load Image во вход image ноды IPAdapter FaceID.
    • MODEL ноды IPAdapter FaceID во вход model ноды KSampler (можно через Load LoRA или LoraLoaderModelOnly).
  • Шаг 7, Задайте силу:
    • weight ноды IPAdapter FaceID: от 0.5 до 1; «Сделать за меня» ставит 1.
    • weight_faceidv2 ноды IPAdapter FaceID: от 1 до 2; «Сделать за меня» ставит 2.
  • Шаг 8, Настройте сэмплер:
    • steps ноды KSampler: от 20 до 40; «Сделать за меня» ставит 30.
    • cfg ноды KSampler: от 4 до 7; «Сделать за меня» ставит 6.5.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Face-From-Photo.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.