Нод (node) для быстрой и простой замены лиц на любых изображениях для работы с ComfyUI, основан на ReActor SD-WebUI Face Swap Extension
Данный Нод идёт без фильтра цензуры (18+, используйте под вашу собственную ответственность)
Что нового | Установка | Использование | Устранение проблем | Обновление | Ответственность | Благодарности | Заметка
- Новый нод "Unload ReActor Models" - полезен для сложных воркфлоу, когда вам нужно освободить ОЗУ, занятую РеАктором
- Поддержка ORT CoreML and ROCM EPs, достаточно установить ту версию onnxruntime, которая соответствует вашему GPU
- Некоторые улучшения скрипта установки для поддержки последней версии ORT-GPU
Предыдущие версии
- Поддержка моделей восстановления лиц GPEN 1024/2048 (доступны в датасете на HF https://huggingface.co/datasets/Gourieff/ReActor/tree/main/models/facerestore_models)
- Нод ReActorFaceBoost - попытка улучшить качество заменённых лиц. Идея состоит в том, чтобы восстановить и увеличить заменённое лицо (в соответствии с параметром
face_size
модели реставрации) ДО того, как лицо будет вставлено в целевое изображения (через алгоритмы инсваппера), больше информации здесь (PR#321)
- Сортировка моделей лиц по алфавиту
- Множество исправлений и улучшений
- Поддержка библиотеки Spandrel при работе с GFPGAN
- Исправления: "RAM issue", "No detection" для MaskingHelper
- Появилась возможность строить смешанные модели лиц из пачки уже имеющихся моделей - добавьте для этого нод "Make Face Model Batch" в свой воркфлоу и загрузите несколько моделей через ноды "Load Face Model"
- Огромный буст производительности модуля анализа изображений! 10-кратный прирост скорости! Работа с видео теперь в удовольствие!
- Добавлен выход SWAPPED_FACE для нода Masking Helper
- FIX: Удалён пустой A-канал на выходе IMAGE нода Masking Helper (вызывавший ошибки с некоторым нодами)
- Нод ReActorBuildFaceModel получил выход "face_model" для отправки совмещенной модели лиц непосредственно в основной Нод:
Basic workflow 💾
- Функции маски лица теперь доступна и в версии для Комфи, просто добавьте нод "ReActorMaskHelper" в воркфлоу и соедините узлы, как показано ниже:
Если модель "face_yolov8m.pt" у вас отсутствует - можете скачать её отсюда и положить в папку "ComfyUI\models\ultralytics\bbox"
То же самое и с "sam_vit_b_01ec64.pth" - скачайте (если отсутствует) и положите в папку "ComfyUI\models\sams";
Данный нод поможет вам получить куда более аккуратный результат при замене лиц:
- Нод ReActorImageDublicator - полезен тем, кто создает видео, помогает продублировать одиночное изображение в несколько копий, чтобы использовать их, к примеру, с VAE энкодером:
- ReActorFaceSwapOpt (упрощенная версия основного нода) + нод ReActorOptions для установки дополнительных опций, как (новые) "отдельный порядок лиц для input/source". Да! Теперь можно установить любой порядок "чтения" индекса лиц на изображении, в т.ч. от большего к меньшему (по умолчанию)!
- Небольшое улучшение скорости анализа целевых изображений (input)
- Добавлена поддержка GPEN-BFR-512 и RestoreFormer_Plus_Plus моделей восстановления лиц
Скачать можно здесь: https://huggingface.co/datasets/Gourieff/ReActor/tree/main/models/facerestore_models
Добавьте модели в папку ComfyUI\models\facerestore_models
- По многочисленным просьбам появилась возможность строить смешанные модели лиц и в ComfyUI тоже и использовать их с нодом "Load Face Model" Node или в SD WebUI;
Экспериментируйте и создавайте новые лица или совмещайте разные лица нужного вам персонажа, чтобы добиться лучшей точности и схожести с оригиналом!
Достаточно добавить нод "Make Image Batch" (ImpactPack) на вход нового нода РеАктора и загрузить в пачку необходимые вам изображения для построения смешанной модели:
Пример результата (на основе лиц 4-х актрис создано новое лицо):
Базовый воркфлоу 💾
-
Поддержка CUDA 12 - не забудьте запустить (Windows)
install.bat
или (Linux/MacOS)install.py
для используемого Python окружения или попробуйте установить ORT-GPU для CU12 вручную (https://onnxruntime.ai/docs/install/#install-onnx-runtime-gpu-cuda-12x) -
Исправление Issue Gourieff#173
-
Отдельный Нод для восстаноления лиц (FR Gourieff#191), располагается внутри меню ReActor (нод RestoreFace)
-
(Windows) Установка зависимостей теперь может быть выполнена в Python из PATH ОС
-
Разные исправления и улучшения
-
Face Restore Visibility и CodeFormer Weight (Fidelity) теперь доступны; не забудьте заново добавить Нод в ваших существующих воркфлоу
- Вход "input_image" теперь идёт первым, это даёт возможность корректного байпаса, а также это правильно с точки зрения расположения входов (главный вход - первый);
- Теперь можно сохранять модели лиц в качестве файлов "safetensors" (
ComfyUI\models\reactor\faces
) и загружать их в ReActor, реализуя разные сценарии использования, а также храня супер легкие модели лиц, которые вы чаще всего используете:
- Возможность сохранять модели лиц напрямую из изображения:
- Оба входа опциональны, присоедините один из них в соответствии с вашим воркфлоу; если присоеденены оба - вход
image
имеет приоритет. - Различные исправления, делающие это расширение лучше.
Спасибо всем, кто находит ошибки, предлагает новые функции и поддерживает данный проект!
SD WebUI: AUTOMATIC1111 или SD.Next
- Закройте (остановите) SD-WebUI Сервер, если запущен
- (Для пользователей Windows):
- Установите Visual Studio 2022 (Например, версию Community - этот шаг нужен для правильной компиляции библиотеки Insightface)
- ИЛИ только VS C++ Build Tools, выберите "Desktop Development with C++" в разделе "Workloads -> Desktop & Mobile"
- ИЛИ если же вы не хотите устанавливать что-либо из вышеуказанного - выполните данные шаги (раздел. I)
- Перейдите в
extensions\sd-webui-comfyui\ComfyUI\custom_nodes
- Откройте Консоль или Терминал и выполните
git clone https://github.com/Gourieff/comfyui-reactor-node
- Перейдите в корневую директорию SD WebUI, откройте Консоль или Терминал и выполните (для пользователей Windows)
.\venv\Scripts\activate
или (для пользователей Linux/MacOS)venv/bin/activate
python -m pip install -U pip
cd extensions\sd-webui-comfyui\ComfyUI\custom_nodes\comfyui-reactor-node
python install.py
- Пожалуйста, дождитесь полного завершения установки
- (Начиная с версии 0.3.0) Скачайте дополнительные модели восстановления лиц (по ссылке ниже) и сохраните их в папку
extensions\sd-webui-comfyui\ComfyUI\models\facerestore_models
:
https://huggingface.co/datasets/Gourieff/ReActor/tree/main/models/facerestore_models - Запустите SD WebUI и проверьте консоль на сообщение, что ReActor Node работает:
- Перейдите во вкладку ComfyUI и найдите там ReActor Node внутри меню
ReActor
или через поиск:
Портативная версия ComfyUI для Windows
- Сделайте следующее:
- Установите Visual Studio 2022 (Например, версию Community - этот шаг нужен для правильной компиляции библиотеки Insightface)
- ИЛИ только VS C++ Build Tools, выберите "Desktop Development with C++" в разделе "Workloads -> Desktop & Mobile"
- ИЛИ если же вы не хотите устанавливать что-либо из вышеуказанного - выполните данные шаги (раздел. I)
- Выберите из двух вариантов:
- (ComfyUI Manager) Откройте ComfyUI Manager, нажвите "Install Custom Nodes", введите "ReActor" в поле "Search" и далее нажмите "Install". После того, как ComfyUI завершит установку, перезагрузите сервер.
- (Вручную) Перейдите в
ComfyUI\custom_nodes
, откройте Консоль и выполнитеgit clone https://github.com/Gourieff/comfyui-reactor-node
- Перейдите
ComfyUI\custom_nodes\comfyui-reactor-node
и запуститеinstall.bat
, дождитесь окончания установки - Если модель "face_yolov8m.pt" у вас отсутствует - можете скачать её отсюда и положить в папку "ComfyUI\models\ultralytics\bbox"
То же самое и с "Sams" моделями, скачайте одну или обе [отсюда](https://huggingface.co/datasets/Gourieff/ReActor/tree/main/models/sams) - и положите в папку "ComfyUI\models\sams" 5. Запустите ComfyUI и найдите ReActor Node внутри меню `ReActor` или через поиск
Вы можете найти ноды ReActor внутри меню ReActor
или через поиск (достаточно ввести "ReActor" в поисковой строке)
Список нодов:
- ••• Main Nodes •••
- ReActorFaceSwap (Основной нод)
- ReActorFaceSwapOpt (Основной нод с доп. входом Options)
- ReActorOptions (Опции для ReActorFaceSwapOpt)
- ReActorFaceBoost (Нод Face Booster)
- ReActorMaskHelper (Masking Helper)
- ••• Operations with Face Models •••
- ReActorSaveFaceModel (Save Face Model)
- ReActorLoadFaceModel (Load Face Model)
- ReActorBuildFaceModel (Build Blended Face Model)
- ReActorMakeFaceModelBatch (Make Face Model Batch)
- ••• Additional Nodes •••
- ReActorRestoreFace (Face Restoration)
- ReActorImageDublicator (Dublicate one Image to Images List)
- ImageRGBA2RGB (Convert RGBA to RGB)
Соедините все необходимые слоты (slots) и запустите очередь (query).
input_image
- это изображение, на котором надо поменять лицо или лица (целевое изображение, аналог "target image" в версии для SD WebUI);- Поддерживаемые ноды: "Load Image", "Load Video" или любые другие ноды предоставляющие изображение в качестве выхода;
source_image
- это изображение с лицом или лицами для замены (изображение-источник, аналог "source image" в версии для SD WebUI);- Поддерживаемые ноды: "Load Image" или любые другие ноды с выходом Image(s);
face_model
- это вход для выхода с нода "Load Face Model" или другого нода ReActor для загрузки модели лица (face model или face embedding), которое вы создали ранее через нод "Save Face Model";- Поддерживаемые ноды: "Load Face Model", "Build Blended Face Model";
IMAGE
- выход с готовым изображением (результатом);- Поддерживаемые ноды: любые ноды с изображением на входе;
FACE_MODEL
- выход, предоставляющий модель лица, построенную в ходе замены;- Поддерживаемые ноды: "Save Face Model", "ReActor", "Make Face Model Batch";
Начиная с версии 0.3.0 ReActor Node имеет встроенное восстановление лиц.
Скачайте нужные вам модели (см. инструкцию по Установке) и выберите одну из них, чтобы улучшить качество финального лица.
По умолчанию ReActor определяет лица на изображении в порядке от "большого" к "малому".
Вы можете поменять эту опцию, используя нод ReActorFaceSwapOpt вместе с ReActorOptions.
Если вам нужно заменить определенное лицо, вы можете указать индекс для исходного (source, с лицом) и входного (input, где будет замена лица) изображений.
Индекс первого обнаруженного лица - 0.
Вы можете задать индексы в том порядке, который вам нужен.
Например: 0,1,2 (для Source); 1,0,2 (для Input).
Это означает, что: второе лицо из Input (индекс = 1) будет заменено первым лицом из Source (индекс = 0) и так далее.
Вы можете обозначить, какой пол нужно определять на изображении.
ReActor заменит только то лицо, которое удовлетворяет заданному условию.
Начиная с версии 0.4.0, вы можете сохранять модели лиц как файлы "safetensors" (хранятся в папке ComfyUI\models\reactor\faces
) и загружать их в ReActor, реализуя разные сценарии использования, а также храня супер легкие модели лиц, которые вы чаще всего используете.
Чтобы новые модели появились в списке моделей нода "Load Face Model" - обновите страницу of с ComfyUI.
(Рекомендую использовать ComfyUI Manager - иначе ваше воркфлоу может быть потеряно после перезагрузки страницы, если вы не сохранили его).
I. (Для пользователей Windows) Если вы до сих пор не можете установить пакет Insightface по каким-то причинам или же просто не желаете устанавливать Visual Studio или VS C++ Build Tools - сделайте следующее:
- (ComfyUI Portable) Находясь в корневой директории, проверьте версию Python:
запустите CMD и выполнитеpython_embeded\python.exe -V
Вы должны увидеть версию или 3.10, или 3.11, или 3.12 - Скачайте готовый пакет Insightface для версии 3.10 или для 3.11 (если на предыдущем шаге вы увидели 3.11) или для 3.12 (если на предыдущем шаге вы увидели 3.12) и сохраните его в корневую директорию stable-diffusion-webui (A1111 или SD.Next) - туда, где лежит файл "webui-user.bat" -ИЛИ- в корневую директорию ComfyUI, если вы используете ComfyUI Portable
- Из корневой директории запустите:
- (SD WebUI) CMD и
.\venv\Scripts\activate
- (ComfyUI Portable) CMD
- (SD WebUI) CMD и
- Обновите PIP:
- (SD WebUI)
python -m pip install -U pip
- (ComfyUI Portable)
python_embeded\python.exe -m pip install -U pip
- (SD WebUI)
- Затем установите Insightface:
- (SD WebUI)
pip install insightface-0.7.3-cp310-cp310-win_amd64.whl
(для 3.10) илиpip install insightface-0.7.3-cp311-cp311-win_amd64.whl
(для 3.11) илиpip install insightface-0.7.3-cp312-cp312-win_amd64.whl
(for 3.12) - (ComfyUI Portable)
python_embeded\python.exe -m pip install insightface-0.7.3-cp310-cp310-win_amd64.whl
(для 3.10) илиpython_embeded\python.exe -m pip install insightface-0.7.3-cp311-cp311-win_amd64.whl
(для 3.11) илиpython_embeded\python.exe -m pip install insightface-0.7.3-cp312-cp312-win_amd64.whl
(for 3.12)
- (SD WebUI)
- Готово!
Эта ошибка появляется, если что-то не так с файлом модели inswapper_128.onnx
Скачайте вручную по ссылке отсюда
и сохраните в директорию ComfyUI\models\insightface
, заменив имеющийся файл
Это означает, что поменялось обозначение входных точек (input points) всвязи с последним обновлением
Удалите из вашего рабочего пространства имеющийся ReActor Node и добавьте его снова
- Закройте или остановите ComfyUI сервер, если он запущен
- Перейдите в корневую папку ComfyUI, откройте консоль CMD и выполните следующее:
python_embeded\python.exe -m pip uninstall -y opencv-python opencv-contrib-python opencv-python-headless
python_embeded\python.exe -m pip install opencv-python==4.7.0.72
- Готово!
V. "ModuleNotFoundError: No module named 'basicsr'" или "subprocess-exited-with-error" при установке пакета future-0.18.3
-
Скачайте https://github.com/Gourieff/Assets/raw/main/comfyui-reactor-node/future-0.18.3-py3-none-any.whl
-
Скопируйте файл в корневую папку ComfyUI и выполните в консоли:
python_embeded\python.exe -m pip install future-0.18.3-py3-none-any.whl
-
Затем:
python_embeded\python.exe -m pip install basicsr
Попробуйте клонировать репозиторий с параметром --depth=1
(только последний коммит):
git clone --depth=1 https://github.com/Gourieff/comfyui-reactor-node
Затем вытяните оставшееся (если требуется):
git fetch --unshallow
Положите .bat или .sh скрипт из данного репозитория в папку ComfyUI\custom_nodes
и запустите, когда желаете обновить ComfyUI и Ноды
Это программное обеспечение призвано стать продуктивным вкладом в быстрорастущую медиаиндустрию на основе генеративных сетей и искусственного интеллекта. Данное ПО поможет художникам в решении таких задач, как анимация собственного персонажа или использование персонажа в качестве модели для одежды и т.д.
Разработчики этого программного обеспечения осведомлены о возможных неэтичных применениях и обязуются принять против этого превентивные меры. Мы продолжим развивать этот проект в позитивном направлении, придерживаясь закона и этики.
Подразумевается, что пользователи этого программного обеспечения будут использовать его ответственно, соблюдая локальное законодательство. Если используется лицо реального человека, пользователь обязан получить согласие заинтересованного лица и четко указать, что это дипфейк при размещении контента в Интернете. Разработчики и Со-авторы данного программного обеспечения не несут ответственности за действия конечных пользователей.
Используя данное расширение, вы соглашаетесь не создавать материалы, которые:
- нарушают какие-либо действующие законы тех или иных государств или международных организаций;
- причиняют какой-либо вред человеку или лицам;
- пропагандируют любую информацию (как общедоступную, так и личную) или изображения (как общедоступные, так и личные), которые могут быть направлены на причинение вреда;
- используются для распространения дезинформации;
- нацелены на уязвимые группы людей.
Данное программное обеспечение использует предварительно обученные модели buffalo_l
и inswapper_128.onnx
, представленные разработчиками InsightFace. Эти модели распространяются при следующих условиях:
Перевод из текста лицензии insighface: Предварительно обученные модели InsightFace доступны только для некоммерческих исследовательских целей. Сюда входят как модели с автоматической загрузкой, так и модели, загруженные вручную.
Пользователи данного программного обеспечения должны строго соблюдать данные условия использования. Разработчики и Со-авторы данного программного продукта не несут ответственности за неправильное использование предварительно обученных моделей InsightFace.
Обратите внимание: если вы собираетесь использовать это программное обеспечение в каких-либо коммерческих целях, вам необходимо будет обучить свои собственные модели или найти модели, которые можно использовать в коммерческих целях.
inswapper_128.onnx
MD5:a3a155b90354160350efd66fed6b3d80
SHA256:e4a3f08c753cb72d04e10aa0f7dbe3deebbf39567d4ead6dce08e98aa49e16af
1k3d68.onnx
MD5:6fb94fcdb0055e3638bf9158e6a108f4
SHA256:df5c06b8a0c12e422b2ed8947b8869faa4105387f199c477af038aa01f9a45cc
2d106det.onnx
MD5:a3613ef9eb3662b4ef88eb90db1fcf26
SHA256:f001b856447c413801ef5c42091ed0cd516fcd21f2d6b79635b1e733a7109dbf
det_10g.onnx
MD5:4c10eef5c9e168357a16fdd580fa8371
SHA256:5838f7fe053675b1c7a08b633df49e7af5495cee0493c7dcf6697200b85b5b91
genderage.onnx
MD5:81c77ba87ab38163b0dec6b26f8e2af2
SHA256:4fde69b1c810857b88c64a335084f1c3fe8f01246c9a191b48c7bb756d6652fb
w600k_r50.onnx
MD5:80248d427976241cbd1343889ed132b3
SHA256:4c06341c33c2ca1f86781dab0e829f88ad5b64be9fba56e56bc9ebdefc619e43
Пожалуйста, сравните хэш, если вы скачиваете данные модели из непроверенных источников
Нажмите, чтобы посмотреть
файл | источник | лицензия |
---|---|---|
buffalo_l.zip | DeepInsight | |
codeformer-v0.1.0.pth | sczhou | |
GFPGANv1.3.pth | TencentARC | |
GFPGANv1.4.pth | TencentARC | |
inswapper_128.onnx | DeepInsight | |
inswapper_128_fp16.onnx | Hillobar |
BasicSR - @XPixelGroup
facexlib - @xinntao
@s0md3v, @henryruhs - оригинальное приложение Roop
@ssitu - первая версия расширения с поддержкой ComfyUI ComfyUI_roop
Если у вас возникли какие-либо ошибки при очередном использовании Нода ReActor - не торопитесь открывать Issue, для начала попробуйте удалить текущий Нод из вашего рабочего пространства и добавить его снова
ReActor Node периодически получает обновления, появляются новые функции, из-за чего имеющийся Нод может работать с ошибками или не работать вовсе