Восстановить лицо на старой картинке: ReActor
Урок «face-restore» в группе Лица и персонажи списка уроков. Шагов: 7.
Сначала согласие
Восстанавливайте картинки, которыми вправе распоряжаться: свои, семейные с согласия родных, с придуманными людьми. Получите согласие реального человека на использование его внешности и не помещайте её в откровенное содержимое. См. Правила содержимого.
Чему вы научитесь
Вы соберёте граф, который перерисовывает размытые или повреждённые лица на картинке моделью восстановления лиц.
Что понадобится
- Паки нод: ComfyUI-ReActor. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
- Файлы моделей, которые урок проверяет:
- для поля
modelноды Restore Face 🌌 ReActor: модель, неnone.
- для поля
- Ноды: Load Image, Restore Face 🌌 ReActor, Save Image / Preview Image.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Сначала о том, что такое восстановление (чтение)
Модель восстановления находит лица на картинке и рисует их заново, чётко. Настоящего лица она не знает: детали она угадывает. Результат даёт сходство, а не запись того, как человек выглядел.
Восстанавливайте картинки, которыми вправе распоряжаться: свои, семейные с согласия родных, с придуманными людьми. Получите согласие реального человека на использование его внешности и не помещайте её в откровенное содержимое.
Ноды этого урока даёт пак ComfyUI-ReActor. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете. Если папка models/facerestore_models пуста, пак сам скачивает туда четыре модели восстановления при запуске ComfyUI.
Урок собирает граф с пустого холста: «Файл ▸ Новый проект».
Загрузите картинку
Добавьте ноду Load Image и выберите картинку в её поле
image.Если картинка совсем маленькая, сначала увеличьте её моделью увеличения: модель восстановления работает с лицами определённого размера.
Добавьте восстановление
Добавьте ноду Restore Face 🌌 ReActor и соедините картинку от Load Image с её входом
image. Вmodelвыберите модель восстановления; сnoneничего не происходит.Обычные:
codeformer-v0.1.0.pthсправляется с сильно повреждёнными лицами,GFPGANv1.4.pthсохраняет больше от исходного,GPEN-BFR-512.onnxчёткий на крупных лицах.Файлы старых форматов (.ckpt, .pt, .pth, .bin) могут при загрузке выполнить код. Берите их только со страницы самой модели.
Задайте, насколько менять
В ноде Restore Face 🌌 ReActor поставьте:
facedetection:retinaface_resnet50, самый аккуратный способ найти лица;visibility: 1, насколько сильно новое лицо закрывает старое; ниже смешивает их;codeformer_weight: 0.5, только для CodeFormer: ближе к 0 чётче и меньше похоже, ближе к 1 похожее и мягче.
Сохраните картинку
Добавьте ноду Save Image и соедините выход Restore Face 🌌 ReActor с её входом
images.Если лицо выглядит не так (чтение)
- Лицо выглядит нарисованным поверх: уменьшите
visibilityдо 0.7. - Лицо не похоже: попробуйте
GFPGANv1.4.pthили увеличьтеcodeformer_weight. - Лицо пропущено: оно слишком мелкое или отвёрнуто; сначала увеличьте картинку.
- Остальная картинка осталась старой: нода восстанавливает только лица.
Пак facerestore_cf делает то же своими нодами и читает ту же папку models/facerestore_models.
- Лицо выглядит нарисованным поверх: уменьшите
Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите картинку:
- нода Load Image.
imageноды Load Image: значение выбрано.
- Шаг 3, Добавьте восстановление:
- нода Restore Face 🌌 ReActor.
IMAGEноды Load Image во входimageноды Restore Face 🌌 ReActor.- в поле
modelноды Restore Face 🌌 ReActor стоит файл и нетnone(заглавные буквы, точки и дефисы не важны).
- Шаг 4, Задайте, насколько менять:
facedetectionноды Restore Face 🌌 ReActor:retinaface_resnet50.visibilityноды Restore Face 🌌 ReActor: от 0.5 до 1; «Сделать за меня» ставит 1.codeformer_weightноды Restore Face 🌌 ReActor: от 0.3 до 0.8; «Сделать за меня» ставит 0.5.
- Шаг 5, Сохраните картинку:
- нода Save Image или Preview Image.
IMAGEноды Restore Face 🌌 ReActor во входimagesноды Save Image или Preview Image.
Что дальше
Этот урок продолжают: Перенести лицо на картинку: ReActor.