Перенести лицо на картинку: ReActor
Урок «face-swap» в группе Лица и персонажи списка уроков. Шагов: 9.
Сначала согласие
Показывать так можно только того, кто на это согласен: себя, человека, который разрешил, или придуманного героя. Получите согласие реального человека на использование его внешности и разрешение на исходные материалы, учитывайте местные законы. Не помещайте внешность реального человека в откровенное содержимое; исключайте тех, кто младше 18 лет или выглядит младше; не выдавайте человека за того, кто говорил или делал то, чего не было. См. Правила содержимого.
Чему вы научитесь
Вы соберёте граф, который переносит лицо с одной картинки на человека на другой, уже готовой картинке.
Что понадобится
- Урок продолжает Восстановить лицо на старой картинке: ReActor. Карточка говорит об этом; это подсказка, а не замок.
- Паки нод: ComfyUI-ReActor. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
- Файлы моделей, которые урок проверяет:
- для поля
face_restore_modelноды ReActor 🌌 Fast Face Swap: модель, неnone.
- для поля
- Ноды: Load Image, ReActor 🌌 Fast Face Swap, Save Image / Preview Image.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Сначала о лицах (чтение)
Показывать так можно только того, кто на это согласен: себя, человека, который разрешил, или придуманного героя. Получите согласие реального человека на использование его внешности и разрешение на исходные материалы, учитывайте местные законы. Не помещайте внешность реального человека в откровенное содержимое; исключайте тех, кто младше 18 лет или выглядит младше; не выдавайте человека за того, кто говорил или делал то, чего не было. Урок учит технике.
ReActor находит лицо на одной картинке и ставит его на лицо на другой. Пример: герой, которого вы сгенерировали, получает лицо с вашего собственного фото, или ваше лицо попадает на нарисованную вами картинку.
Ноды этого урока даёт пак ComfyUI-ReActor. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете. В паке есть свой детектор, который отказывается работать с откровенными картинками.
Урок собирает граф с пустого холста: «Файл ▸ Новый проект».
Загрузите картинку, которую меняете
Добавьте ноду Load Image и выберите в её поле
imageкартинку, на которой меняется лицо.Загрузите лицо
Добавьте ноду Load Image и выберите в её поле
imageкартинку с лицом. Это должен быть другой файл, не первый.Лучше всего лицо анфас и чёткое. Если на картинке несколько лиц, нода берёт их по порядку слева; какое именно, выбирают поля
input_faces_indexиsource_faces_index.Добавьте замену
Добавьте ноду ReActor 🌌 Fast Face Swap. Соедините картинку от Load Image с её входом
input_image, а лицо от Load Image с её входомsource_image.В
swap_modelвыберитеinswapper_128.onnx; пак скачивает его в models/insightface при установке. Поставьтеfacedetectionвretinaface_resnet50, самый аккуратный способ найти лица.Сделайте новое лицо чётким
Модель замены работает в маленьком размере, поэтому новое лицо выходит мягким. В ноде ReActor 🌌 Fast Face Swap выберите модель восстановления в
face_restore_model, напримерcodeformer-v0.1.0.pth, поставьтеface_restore_visibilityравным 1 иcodeformer_weightравным 0.5.Они делают то, что объясняет урок «Восстановить лицо на старой картинке: ReActor».
Сохраните результат
Добавьте ноду Save Image и соедините выход
SWAPPED_IMAGEноды ReActor 🌌 Fast Face Swap с её входомimages.Замена, адаптер или LoRA (чтение)
Замена меняет картинку, которая уже есть: поза, свет и одежда остаются, новое только лицо. Адаптер вроде IP-Adapter FaceID рисует вокруг лица новую картинку. LoRA, обученная на герое, держит лицо, тело и одежду на каждой картинке.
Встроенные знания «Облик: адаптер, LoRA или замена» сравнивают их.
Если результат плохой (чтение)
- Лицо выглядит наклеенным: уменьшите
face_restore_visibilityдо 0.7 или попробуйтеGFPGANv1.4.pth. - Меняется не то лицо: поставьте
input_faces_index. - Цвет кожи другой: возьмите фото-источник с похожим светом.
- Ничего не происходит: лицо не найдено; возьмите лицо крупнее и анфас.
Мелкое или сломанное лицо на нарисованной вами картинке чинят в уроке «Исправление лиц и рук детейлером».
Модели InsightFace, которыми пользуется замена, только для некоммерческого использования.
- Лицо выглядит наклеенным: уменьшите
Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Ничто, сделанное так, не должно выдавать человека за того, кто говорил или делал то, чего не было.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите картинку, которую меняете:
- нода Load Image.
imageноды Load Image (картинка, которую меняют): значение выбрано.
- Шаг 3, Загрузите лицо:
- нода Load Image.
imageноды Load Image (лицо): не тот же файл, что в полеimageноды Load Image (картинка, которую меняют).
- Шаг 4, Добавьте замену:
- нода ReActor 🌌 Fast Face Swap.
IMAGEноды Load Image (картинка, которую меняют) во входinput_imageноды ReActor 🌌 Fast Face Swap.IMAGEноды Load Image (лицо) во входsource_imageноды ReActor 🌌 Fast Face Swap.swap_modelноды ReActor 🌌 Fast Face Swap: значение выбрано.facedetectionноды ReActor 🌌 Fast Face Swap:retinaface_resnet50.
- Шаг 5, Сделайте новое лицо чётким:
- в поле
face_restore_modelноды ReActor 🌌 Fast Face Swap стоит файл и нетnone(заглавные буквы, точки и дефисы не важны). face_restore_visibilityноды ReActor 🌌 Fast Face Swap: от 0.5 до 1; «Сделать за меня» ставит 1.codeformer_weightноды ReActor 🌌 Fast Face Swap: от 0.3 до 0.8; «Сделать за меня» ставит 0.5.
- в поле
- Шаг 6, Сохраните результат:
- нода Save Image или Preview Image.
SWAPPED_IMAGEноды ReActor 🌌 Fast Face Swap во входimagesноды Save Image или Preview Image.