То же лицо по одному фото: IP-Adapter FaceID
Урок «face-same-photo» в группе Лица и персонажи списка уроков. Шагов: 11.
Сначала согласие
Показывать так можно только того, кто на это согласен: себя, человека, который разрешил, или придуманного героя. Получите согласие реального человека на использование его внешности и разрешение на исходные материалы, учитывайте местные законы. Не помещайте внешность реального человека в откровенное содержимое; исключайте тех, кто младше 18 лет или выглядит младше; не выдавайте человека за того, кто говорил или делал то, чего не было. См. Правила содержимого.
Чему вы научитесь
Вы добавите IP-Adapter FaceID в граф первой картинки, и лицо с фото поведёт лицо на новой картинке.
Что понадобится
- Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
- Паки нод: ComfyUI_IPAdapter_plus. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
- Ноды: Load Checkpoint, KSampler, IPAdapter Unified Loader FaceID, Load Image, IPAdapter FaceID.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Сначала о лицах (чтение)
Показывать так можно только того, кто на это согласен: себя, человека, который разрешил, или придуманного героя. Получите согласие реального человека на использование его внешности и разрешение на исходные материалы, учитывайте местные законы. Не помещайте внешность реального человека в откровенное содержимое; исключайте тех, кто младше 18 лет или выглядит младше; не выдавайте человека за того, кто говорил или делал то, чего не было. Урок учит технике.
IP-Adapter FaceID читает лицо с одного фото и заставляет модель нарисовать это лицо на новой картинке. В примере ваше собственное фото или герой, которого вы сгенерировали.
Ноды этого урока даёт пак ComfyUI_IPAdapter_plus. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете.
Урок продолжает граф из урока «Первая картинка из текста».
Нужен граф первой картинки
На холсте должны быть Load Checkpoint и KSampler, и модель должна идти от одного к другому.
FaceID работает с чекпойнтами SD 1.5 и SDXL. С Flux, SD3 или Wan он ничего полезного не делает: у этих семейств свои способы.
Какие файлы нужны и куда их класть (чтение)
Загрузчик 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) могут при загрузке выполнить код. Берите их только со страницы самой модели. Точные имена перечисляет страница самого пака; берите файлы со страниц, на которые она ссылается.
Добавьте загрузчик FaceID
Добавьте ноду IPAdapter Unified Loader FaceID и соедините выход
MODELноды Load Checkpoint с её входомmodel. ПоставьтеpresetвFACEID PLUS V2, аlora_strengthравным 0.6.Пресет выбирает адаптер и его LoRA.
FACEID PLUS V2взят из примера пака. Сила LoRA 0.6 тоже из примера: больше давит лицо сильнее и делает картинку деревянной.Загрузите фото лица
Добавьте ноду Load Image и выберите фото в её поле
image.Лучше всего фото анфас, чёткое и ровно освещённое, лицо крупное, ничем не закрыто. InsightFace ищет одно лицо: если их несколько, он может взять не то.
Добавьте ноду FaceID
Добавьте ноду IPAdapter FaceID и подключите:
modelиipadapterот одноимённых выходов IPAdapter Unified Loader FaceID;imageот Load Image.
Потом соедините выход
MODELноды IPAdapter FaceID со входомmodelноды KSampler. Связь, которая шла прямо от Load Checkpoint, снимется сама.Задайте силу
В ноде IPAdapter FaceID поставьте
weightравным 1 иweight_faceidv2равным 2, как в примере пака.weightговорит, насколько сильно лицо вдавливается в картинку. Если картинка «горит», с резким контрастом, сломанными цветами или застывшей маской лица, уменьшите его к 0.7.weight_faceidv2работает только с адаптерами V2 и задаёт, насколько лицо похоже на фото.Настройте сэмплер
В ноде KSampler поставьте
stepsравным 30 иcfgравным 6.5, как в примере.С адаптером большой
cfgраньше сжигает картинку: если уменьшенияweightмало, уменьшите иcfg.Что он сохраняет, а что нет (чтение)
FaceID сохраняет лицо: его форму, глаза, нос, рот. Он не сохраняет причёску, возраст, макияж, свет и выражение: они берутся из описания. Пишите их туда.
Фото в жёстком боковом свете даёт лицо с этим светом внутри. Фото снизу даёт широкую челюсть. Поэтому лучше всего работает фото анфас при ровном свете.
Другие адаптеры лица (чтение)
Ещё два способа делают то же для других семейств:
- 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, которую пак скачивает сам. Остальную картинку он меняет меньше.
Их графы похожи на этот: загрузчик, нода, которая берёт фото лица, и модель, идущая дальше в сэмплер.
- Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить 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.