Замена лица в ComfyUI: ReActor, FLUX Kontext или Qwen Image Edit
Выбор между тремя методами зависит от сценария, а не от общего рейтинга. Нужен быстрый локальный своп на скромной видеокарте: берите ReActor. Нужен фотореализм с нетронутым фоном и одеждой: FLUX Kontext даёт лучший результат из трёх. Qwen Image Edit умеет почти всё, но для изолированной замены лица подходит хуже всего, потому что меняет композицию вокруг. А если важно качество и при этом не хочется упираться в VRAM, работает гибрид: ReActor делает базовый своп, FLUX Kontext убирает артефакты. Дальше разберём каждый подход по архитектуре, скорости и каталогу провалов.
Три подхода к face swap в ComfyUI: в чём принципиальная разница
Под капотом это три разные машины. ReActor не использует диффузию вообще: его ядро, модель inswapper_128.onnx из проекта InsightFace, выполняет детерминированный ONNX-своп. Одни и те же входы дают один и тот же результат. FLUX Kontext устроен иначе: после InsightFace-выравнивания он прогоняет композит через image-to-image рефайнинг FLUX.1-dev с Kontext-кондиционированием. Qwen вообще не специализированный своппер, а текстовый редактор.
- ReActor: детерминированный ONNX-инсвоппер на базе inswapper_128.onnx, без шага диффузии.
- FLUX Kontext: диффузионный рефайнер, который вклеивает выровненное лицо и дорисовывает блендинг через i2i поверх InsightFace-выравнивания.
- Qwen Image Edit: мультимодальный редактор на 20B-параметрической MMDiT с двойным энкодером Qwen2.5-VL и VAE, работающий по текстовому промпту.
Отсюда и разные артефакты. Детерминированный своп ReActor не выдумывает пиксели, поэтому он быстрый, но и не умеет дорисовывать волосы. Диффузия FLUX Kontext дорисовывает, но может промахнуться на мелком лице. А Qwen, перечитывая всю сцену по тексту, трогает то, что вы трогать не просили.
ComfyUI ReActor: быстрый и детерминированный своп
ReActor закрывает сценарий, где нужна скорость и предсказуемость. Помимо базового inswapper_128.onnx он поддерживает ReSwapper и семейство HyperSwap (hyperswap_1a/1b/1c_256.onnx), добавленное в версии 0.6.2 BETA1. Восстановление лица идёт через CodeFormer и GFPGAN или GPEN. Исходный код и ноды доступны в репозитории ComfyUI-ReActor.
- ReActorFaceBoost восстанавливает и масштабирует заменённое лицо ещё до того, как оно вставляется в кадр, что заметно повышает детализацию.
- Силу свопа задаёт нода ReActorSetWeight в диапазоне от 0 до 100% с шагом 12,5%.
- Скорость выросла: MaskHelper ускорен в 1,5–2 раза, а анализатор изображений в 10 раз начиная с версии 0.5.0 BETA2.
- Есть детекция пола для мультилицевых кадров и встроенный NSFW-детектор.
Слабое место известно и не скрывается. Волосы и линия роста волос у ReActor получаются хуже, чем у IPAdapter: ONNX-своп переносит область лица и не перерисовывает причёску. Установка тоже бывает болезненной. На Windows InsightFace не собирается без Visual Studio или C++ Build Tools, и для многих новичков это первый затык. Сами авторы прямо пишут в README: 'By using this Node you accept and assume responsibility', то есть ответственность за применение лежит на пользователе.
FLUX Kontext Face Swap: фотореалистичный своп с сохранением фона
Умеет ли FLUX Kontext делать face swap? Да, но через сборку нод, а не одной кнопкой. Пайплайн сначала находит лица нодой AutoCropFaces, выравнивает через FaceAlign и вклеивает донора нодой Image Paste Face. Полученный композит масштабируется под FLUX и уходит в i2i-сэмплинг. Готовую сборку публикует воркфлоу FLUX Kontext Face Swap на runcomfy.com.
Две ноды держат всю конструкцию. Put it here LoRA обязателен: без него FLUX размывает лицо по кадру вместо точного локализованного размещения в нужной области. ConditioningZeroOut обнуляет кондиционирование за пределами зоны свопа, поэтому фон и одежда остаются нетронутыми, а ReferenceLatent привязывает генерацию к композиту.
Где FLUX Kontext проседает: мелкие и повёрнутые лица. Без повышения разрешения базового изображения диффузия не получает достаточно пикселей лица и выдаёт мыло. Упрямые линии роста волос тоже не исчезают сами, их приходится прописывать в промпте явно. Зато по главному критерию метод выигрывает: фон и одежда остаются неизменными, и это лучший результат сохранения сцены среди трёх подходов.
Qwen Image Edit: текстовый редактор с ограничениями для face swap
Qwen Image Edit построен как универсальный редактор, и это объясняет его поведение при свопе. Внутри 20B MMDiT с двойным энкодером Qwen2.5-VL и VAE, который читает изображение и текст вместе. Он добавляет и удаляет объекты, меняет стиль и фон, рендерит текст на двух языках.
Та же универсальность мешает изолированной замене лица. Заменяя голову или лицо, Qwen сдвигает позу субъекта, перекрашивает одежду и переписывает фон за пределами целевой области. Изменение мимики отмечено как ограничение в официальном туториале (Demo 16): надёжно поменять только выражение лица не выходит.
По цифрам Qwen силён. На бенчмарке GEdit-Bench-EN он берёт 7,56, лучший результат среди редакторов изображений (данные из репозитория FurkanGozukara на GitHub). Модель открыта под лицензией Apache 2.0, её выпустила команда Alibaba Qwen. Но для face swap есть ещё ловушка: при несовпадении разрешения выходного и входного изображения Qwen отдаёт чёрный кадр. Так что вопрос 'лучше ли Qwen, чем FLUX' упирается в задачу: для текста и многоцелевого редактирования да, для точечной замены лица нет.
Сравнительная таблица: VRAM, скорость, качество, сложность
Критерии выбора сводятся к шести строкам: сколько нужно VRAM, как быстро считает метод, как держит волосы и фон, насколько сложно ставить и сколько стоит. Таблица ниже сводит три подхода по этим осям, а измерения VRAM и времени для Qwen взяты из официального туториала ComfyUI.
| Критерий | ReActor | FLUX Kontext | Qwen Image Edit |
|---|---|---|---|
| Требования к VRAM | Минимальные, ONNX-инференс | Высокие, нужен FLUX.1-dev плюс Put it here LoRA | fp8 модель 20,4 ГБ, 86% VRAM на RTX 4090D 24 ГБ |
| Скорость | Секунды на кадр, детерминированно | Медленнее ReActor, диффузионный сэмплинг | fp8 первая генерация ~94 с, со Lightning LoRA ~55 с |
| Качество волос | Слабое, хуже IPAdapter | Лучшее из трёх, естественный блендинг | Непредсказуемое |
| Сохранение фона и одежды | Фон не трогается, возможны швы на границе | Лучшее, ConditioningZeroOut держит сцену | Меняет фон, одежду и позу |
| Сложность установки | InsightFace требует Visual Studio на Windows | Сборка нод плюс обязательный LoRA | Тяжёлые модели, bf16 весит 40,9 ГБ |
| Стоимость | Бесплатно, открытый код | Бесплатные компоненты, платного тарифа нет | Бесплатно, лицензия Apache 2.0 |
VRAM можно срезать квантизацией, но не бесконечно. Формат Q8_0 GGUF экономит примерно 0,6x памяти против FP16 и при этом даёт менее 1% визуальных артефактов: безопасный выбор для карт 12–16 ГБ. А вот Q4_0 и FP4 сжимают расход до ~0,25x VRAM, но платой идут размытие текстур и разрушение геометрии лица. На 8 ГБ это иногда единственный способ запустить модель, хотя качество свопа заметно падает.
Каталог артефактов: что именно ломается в каждом методе
ReActor: швы на волосах и затронутые соседние лица
Главный артефакт ReActor: неестественный переход на линии роста волос, особенно когда у донора и реципиента разные причёски. Механика простая: ONNX-своп переносит прямоугольник лица, но не согласует его с чужой причёской, и граница выдаёт стык. Второй артефакт коварнее. Восстановление через CodeFormer способно зацепить лица, которые вы менять не собирались: если в кадре несколько человек, постобработка проходит по всем, и незаменяемые лица слегка плывут.
FLUX Kontext: чёрные пятна и лицо в маске
У FLUX Kontext свой набор провалов, и часть всплывает из реальной практики. Один пользователь описал характерный случай при замене головы одного из двух персонажей в кадре.
Если поставить маски на обе входные картинки, в блоке Image Gen вместо головы появляется чёрное пятно с чёрточками из позы. А если в TextEncodeTextImagePlus задать image3 равным image2, иногда вместо лица выходит лицо в медицинской маске.
Причина в том, что маски на обоих входах конфликтуют: пайплайн не понимает, какую область считать донором, и зануляет лицо. Лицо в медицинской маске, это та же путаница входов в ноде TextEncodeTextImagePlus, когда третий слот получает не то изображение. Рабочий обход по тому же опыту: убрать маски и выставить noise_mask в False, хотя тогда меняются все головы в кадре.
Qwen: сдвиг сцены и чёрный кадр
Артефакты Qwen архитектурные, а не настроечные. При замене головы или лица модель сдвигает позу, меняет одежду и фон, потому что перечитывает всю сцену по промпту и не имеет жёсткой области свопа. Отдельный сбой: чёрный вывод. Он возникает при несовпадении разрешения входного и выходного изображения, и лечится только приведением размеров к одному значению до генерации.
Гибридный пайплайн: ReActor для свопа плюс FLUX Kontext для рефайнинга
Гибрид собирает сильные стороны двух методов в один воркфлоу. Идея: пусть ReActor быстро и детерминированно перенесёт черты лица, а FLUX Kontext затем уберёт его фирменные швы на волосах и доведёт блендинг.
- ReActor с включённым FaceBoost делает базовый своп и сразу восстанавливает лицо, давая чистый исходник для рефайнинга.
- Вывод ReActor подаётся как base image на вход FLUX Kontext пайплайна.
- FLUX Kontext с Put it here LoRA рефайнит только область лица, выравнивая линию роста волос и блендинг кожи.
Между шагами важна одна нода: Unload ReActor Models. Она освобождает VRAM после ONNX-свопа, чтобы тяжёлый FLUX.1-dev не упёрся в нехватку памяти. Гибрид нужен не всегда. На простых фронтальных портретах, где у донора и реципиента похожие причёски, ReActor справляется сам, и второй проход через диффузию только тратит время.
Дерево решений: какой метод выбрать под вашу задачу
Сведём всё к алгоритму. Отвечайте на вопросы по порядку и останавливайтесь на первом совпадении.
- GPU меньше 12 ГБ VRAM: берите ReActor с GGUF-квантизованными моделями, остальные два метода упрутся в память.
- Нужен фотореализм с неизменным фоном и одеждой: FLUX Kontext, а при разных причёсках гибрид ReActor→FLUX Kontext.
- Надо одновременно править текст, стиль и фон: это Qwen, но не как изолированный face swap.
- Пакетная обработка и автоматизация: только ReActor, его детерминированность даёт повторяемый результат.
- Мелкие или повёрнутые лица в кадре: ReActor с InsightFace надёжнее, чем FLUX Kontext.
Так лучший ли FLUX Kontext? Для одиночного фотореалистичного портрета с сохранением сцены да, и именно поэтому он стоит в центре гибридной схемы. Но универсального победителя здесь нет: ReActor выигрывает по скорости, VRAM и нефронтальным лицам, а Qwen по широте редактирования. Выбор метода это выбор сценария, и дерево выше доводит его до одного ответа.
по дефолту начинаю с ReActor, детерминированный и для пакета незаменим. на 3060 своп секунды 3-4, дальше FLUX подтягивает волосы. гибрид из статьи это ровно мой workflow уже почти год
inswapper_128 это который из InsightFace? первый раз про onnx своп слышу
@Jaedong он самый, ядро ReActor. диффузии ноль, один вход даёт один и тот же выход
звучит мутно, я думал face swap это одна кнопка а тут ноды какие то
по деньгам все три бесплатные получается?
@5-Minute Crafts да, платного тарифа нет ни у одного. упираешься в железо, а не в подписку
+
что радует, всё локально крутится. ничего наружу не утекает в отличие от онлайн свопалок
по таблице Q8_0 даёт меньше 1% артефактов, а Q4 уже геометрию лица разваливает. для 12 гигов как раз Q8 и берёшь
по диагонали читал, главное усвоил: пакет это только ReActor. мне для автоматизации ровно то и надо
про пакет плюсую. гонял ReActor на 230 портретах для каталога, перезапускаешь и результат тот же, FLUX так не умеет каждый раз чуть иначе дорисовывает. но стык на линии роста волос видно сразу если причёски у донора и реципиента разные
у меня InsightFace на винде вообще не собрался. Visual Studio, build tools, два вечера убил и плюнул
@Cml а на линуксе проще встаёт?
хз, я на винде сижу. на форумах пишут что на линуксе этой боли нет, но сам не проверял
FLUX Kontext без Put it here LoRA ставить смысла ноль, он лицо по всему кадру размазывает. первое что качаешь