Восстановить лицо на старой картинке: ReActor

<!-- lesson: face-restore -->

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

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

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

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

Вы соберёте граф, который перерисовывает размытые или повреждённые лица на картинке моделью восстановления лиц.

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

  • Паки нод: ComfyUI-ReActor. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
  • Файлы моделей, которые урок проверяет:
    • для поля model ноды Restore Face 🌌 ReActor: модель, не none.
  • Ноды: Load Image, Restore Face 🌌 ReActor, Save Image / Preview Image.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

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

  1. Сначала о том, что такое восстановление (чтение)

    Модель восстановления находит лица на картинке и рисует их заново, чётко. Настоящего лица она не знает: детали она угадывает. Результат даёт сходство, а не запись того, как человек выглядел.

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

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

    Урок собирает граф с пустого холста: «Файл ▸ Новый проект».

  2. Загрузите картинку

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

    Если картинка совсем маленькая, сначала увеличьте её моделью увеличения: модель восстановления работает с лицами определённого размера.

  3. Добавьте восстановление

    Добавьте ноду Restore Face 🌌 ReActor и соедините картинку от Load Image с её входом image. В model выберите модель восстановления; с none ничего не происходит.

    Обычные: codeformer-v0.1.0.pth справляется с сильно повреждёнными лицами, GFPGANv1.4.pth сохраняет больше от исходного, GPEN-BFR-512.onnx чёткий на крупных лицах.

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

  4. Задайте, насколько менять

    В ноде Restore Face 🌌 ReActor поставьте:

    • facedetection: retinaface_resnet50, самый аккуратный способ найти лица;
    • visibility: 1, насколько сильно новое лицо закрывает старое; ниже смешивает их;
    • codeformer_weight: 0.5, только для CodeFormer: ближе к 0 чётче и меньше похоже, ближе к 1 похожее и мягче.
  5. Сохраните картинку

    Добавьте ноду Save Image и соедините выход Restore Face 🌌 ReActor с её входом images.

  6. Если лицо выглядит не так (чтение)

    • Лицо выглядит нарисованным поверх: уменьшите visibility до 0.7.
    • Лицо не похоже: попробуйте GFPGANv1.4.pth или увеличьте codeformer_weight.
    • Лицо пропущено: оно слишком мелкое или отвёрнуто; сначала увеличьте картинку.
    • Остальная картинка осталась старой: нода восстанавливает только лица.

    Пак facerestore_cf делает то же своими нодами и читает ту же папку models/facerestore_models.

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

    Сохраните граф через «Файл ▸ Сохранить 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.

См. также

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

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