Замена лица в 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', то есть ответственность за применение лежит на пользователе.

A side-by-side before-and-after comparison of a face swap on a studio portrait, the left frame showing the original woman with long wavy hair and the right frame showing the same pose after a ReActor swap where a visible mismatch runs along the hairline. Set in a plain neutral photo studio against a soft grey backdrop. Fine detail on the slightly blurred seam where the transplanted face meets the original hair, with visible skin pores and stray hair strands. Soft diffused frontal key light from a large softbox, cool neutral white balance, gentle falloff across the cheeks. A clinical, documentary atmosphere.

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 проседает: мелкие и повёрнутые лица. Без повышения разрешения базового изображения диффузия не получает достаточно пикселей лица и выдаёт мыло. Упрямые линии роста волос тоже не исчезают сами, их приходится прописывать в промпте явно. Зато по главному критерию метод выигрывает: фон и одежда остаются неизменными, и это лучший результат сохранения сцены среди трёх подходов.

A ComfyUI node graph screenshot for a FLUX Kontext face swap workflow, with two nodes highlighted by bright orange outlines and labels reading "Put it here LoRA" and "ConditioningZeroOut". Connecting wires fan out across a dark canvas linking image-loading and sampling nodes. Set against the standard dark grey ComfyUI editor background. Crisp readable node titles, coloured socket dots, and a small face-preview thumbnail inside one node. Even flat UI lighting with no shadows and a cool screen glow. A technical, focused workflow atmosphere.

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' упирается в задачу: для текста и многоцелевого редактирования да, для точечной замены лица нет.

A side-by-side before-and-after comparison of a Qwen Image Edit head swap, the left frame showing a man in a blue shirt seated at a wooden desk and the right frame showing the swapped result where his pose has shifted, the shirt turned grey and the office wall behind him changed colour. Set in a small home office. Detail on the inconsistent desk objects and the altered shadow direction between the two frames. Soft warm window light from the left in the original, cooler and flatter light in the edited frame. A revealing, analytical atmosphere.

Сравнительная таблица: 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 затем уберёт его фирменные швы на волосах и доведёт блендинг.

  1. ReActor с включённым FaceBoost делает базовый своп и сразу восстанавливает лицо, давая чистый исходник для рефайнинга.
  2. Вывод ReActor подаётся как base image на вход FLUX Kontext пайплайна.
  3. FLUX Kontext с Put it here LoRA рефайнит только область лица, выравнивая линию роста волос и блендинг кожи.

Между шагами важна одна нода: Unload ReActor Models. Она освобождает VRAM после ONNX-свопа, чтобы тяжёлый FLUX.1-dev не упёрся в нехватку памяти. Гибрид нужен не всегда. На простых фронтальных портретах, где у донора и реципиента похожие причёски, ReActor справляется сам, и второй проход через диффузию только тратит время.

A ComfyUI workflow diagram split into three connected stages, the first stage box labelled "ReActor + FaceBoost" feeding into a middle node labelled "Unload ReActor Models" and then into a third stage box labelled "FLUX Kontext refine". Annotated arrows trace the base image passing left to right across the dark ComfyUI canvas. Clean labelled node boxes, coloured connection wires, a small raw face thumbnail at the start and a refined face thumbnail at the end. Flat even editor lighting with a cool screen tone. An instructional, schematic atmosphere.

Дерево решений: какой метод выбрать под вашу задачу

Сведём всё к алгоритму. Отвечайте на вопросы по порядку и останавливайтесь на первом совпадении.

  • GPU меньше 12 ГБ VRAM: берите ReActor с GGUF-квантизованными моделями, остальные два метода упрутся в память.
  • Нужен фотореализм с неизменным фоном и одеждой: FLUX Kontext, а при разных причёсках гибрид ReActor→FLUX Kontext.
  • Надо одновременно править текст, стиль и фон: это Qwen, но не как изолированный face swap.
  • Пакетная обработка и автоматизация: только ReActor, его детерминированность даёт повторяемый результат.
  • Мелкие или повёрнутые лица в кадре: ReActor с InsightFace надёжнее, чем FLUX Kontext.

Так лучший ли FLUX Kontext? Для одиночного фотореалистичного портрета с сохранением сцены да, и именно поэтому он стоит в центре гибридной схемы. Но универсального победителя здесь нет: ReActor выигрывает по скорости, VRAM и нефронтальным лицам, а Qwen по широте редактирования. Выбор метода это выбор сценария, и дерево выше доводит его до одного ответа.