ComfyUI - универсальная схема

Схема будет обновляться по мере возможностей. Она рассчитана на работу с ИЗОБРАЖЕНИЯМИ на моделях из семейств: SD1.5, XL, Flux, Qwen и легко расширяется по аналогии с примерами. В текущей версии используются квантованные, дистиллированные, GGUF и обычные модели проверенные на железе с 12GB VRAM , хотя некоторые комбинации запустятся на менее чем 4GB.

Схема представляет из себя экспериментальную выжимку из сотен схем в единой комбинации, что усложняет логику работы, но позволяет творить невероятные вещи. Несмотря на универсальность приоритет идёт на оптимальность, таким образом если XL справляется быстрее чем Flux и Qwen - то нехер усложнять схему, берётся простой и быстрый способ. Например, сделана отдельная группа для замены лиц на готовой картинке где отлично работает XL и данная группа не является универсальной по этой причине. При этом возможность замены лица по подсказке с помощью комбинирования изображений в Flux Kontext или Qwen edit и им подобных так же остаётся, но в основной группе генерации. Таким образом группа не всегда универсальна и могут быть альтернативные пути в других группах.

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

 Схема позволяет перемещать группы и удалять незадействованные. Пробуйте, экспериментируйте. 

Скачать схемку можно в Telegrame: https://t.me/stalogen, или скачав полноэкранное изображение со схемой (жмём "открыть схему" и открывшееся изображение сохраняем)

Кратко о возможностях

 - ручной ввод подсказки на любом языке с автоматической комбинацией описаний полученных от загруженных изображений (Florence2 и/или Redux).

- выбор различных моделей и их специфических настроек. Загрузка привязанных Lora к модели и дополнительный загрузчик непосредственно с основного вида рассчитанный на быстрое включение/отключение и использование триггерных слов.

- выбор источника Latent

- непосредственно генератор изображения с возможностями inpaint. комбинирования изображений для Flux, загрузкой Controlnet, заменой лиц.

- предпросмотр/сравнение с сохранением результата с/без WorkFlow

Кроме генерации картинок и редактирования в режиме обработки картинки подсказкой (Flux Kontext или Qwen edit) есть возможность работы с помощью дополнительных обработчиков, которые предназначены для работы с готовым изображением и используются для:

- замены лиц и стиля, лучше и быстрее справляется XL - поэтому используется не универсальная, а оптимальная группа. Напомню, что при этом остаётся возможность использования Kontext и Edit подобных моделей в режиме обработки изображения с помощью комбинации изображений и соответствующей подсказки в основной группе генерации;

- детализации;
- расширения (Outpaint);
- увеличения (Upscaler).

* Схема не работает с Видео и Аудио контентом, но основы заложенные в ней помогут это сделать при наличии соответствующего железа, времени и желания.

Перед использованием

Установка и обновление

Прежде всего стоит обновить ComfyUI, ноды и Frontend. Незабываем предварительно сделать копию рабочего ComfYUI - запороть обновлением всю работу можно влёт "как два пальца..." .

1) Обновление ComfyUI и нод. При обновлении, а точнее до него, следует уделить особое внимание резервным копиям следующих папок:
- custom_nodes
- models - output
- user

Само обновление ComfyUI и нод можно осуществить через менеджер (Update All).

2) Обновить Frontend - обычно через bat файл расположенный рядом с папкой "python_embeded", или ввести соответствующие команды в командной строке.

Пример файла .bat:

				
					@echo off
 python_embeded\python.exe -m pip uninstall comfyui-frontend-package -y
 python_embeded\python.exe -m pip install comfyui-frontend-package
pause
				
			
Условности

Цветовая схема - группы, ноды

Приведу лишь пару примеров, т.к. все остальные можно и нужно описывать непосредственно в самой схеме:
⚫ Black #000000 rgb(0, 0, 0) - нода обычная, с параметрами внутри которые иногда требуется поменять.
🔘 Gray rgb(100,100,100) - ноды не содержат параметры, но выполняют некую операцию с входящими данными. Обычно такие ноды свёрнуты.
🟢 Green #008000 rgb(0, 128, 0)  - нода ПОДСКАЗКА, другие ноды и группы которые можно отключить без вреда работы всей схемы, но они могут влиять на скорость или на функционал. Отключать ноду желательно при понимании её воздействия на схему.

Благодаря этим и другим разделениям по цветам - можно визуально быстро находить нужные узлы и быстро ориентироваться на уменьшенном масштабе.

Организация пространства

Группы и связи

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

Примером групп разделённых по функционалу являются:
- группа формирования подсказки
- группа работы с загруженными изображениями
- группа загрузки модели и Lora
- группа выбора Latent
- группа генератора
- группа предварительного просмотра и сохранения результата
- группа обработки маски
- группа формирования композиции
- группа очистки памяти

Субграфы

Если группу не планируется отключать, то часть нод можно разместить внутри субграфа - аналог вложенной папки. У него так же как у нашей группы есть входящие и исходящие данные, которые можно дополнить своими связями и переименовать. Например, в качестве входящих данных можно вывести область ввода текста, а в качестве выхода - объединённый позитив и негатив. Таким образом можно "скрыть" логику работы и оставить только важные поля и настройки. На момент 08.2025 крайне нежелательно отключать группу в которой находится субграф, т.к. он остаётся активным - поэтому такие группы должны быть активными всегда, например группа подсказки активна в большинстве случаев, поэтому для неё субграфы актуальны.

Блоки

Блоки - это условности на который делится функционал. Для себя я выделил три основных блока:

1) основной блок - который включает в себя группы: формирования подсказки, загрузки модели, переключатель латента, генератор, блок показа и сохранения результата. Большая часть этого блока активна всегда и используется в большинстве случаев, но это не значит что этот блок должен быть задействован полностью, поэтому есть специальные переключатели нод и групп.

2) дополнительный блок - состоит из обработчиков уже готовой картинки: замена лица, увеличение изображения, детализация или расширение картинки (Outpaint). Этот функционал используется реже и может применяться к любым изображениям.

3) экспериментальный блок - для тестов и "поиграться", например: plot XY или Turbo-рисовалка. Эти группы интересны, но не обязательны в универсальной схеме в виду очень редкого их использования для специфических задач.

Загрузчик изображений и формирование автоподсказок по ним.

image(AutoPrompt)

Это первая из рассматриваемых групп, поэтому остановимся подробнее на цветовой схеме и структуре групп.

Нода Переключатель групп - имеет свою логику включения, может включать "только одну группу из списка", "несколько групп из списка" . Сам переключатель может работать в режиме Bypass - когда группа пропускает через себя входящие данные, или Never - данные не проходят. Можно пользоваться соответствующими переключателями в правом верхнем углу группы, но правильнее воспользоваться соответствующим переключателем в группе переключателей, ибо в них уже настроена логика и нивелируется шанс ошибки. Нода Переключатель может размещаться как внутри, так и снаружи группы к которой она относится.

Группа или подгруппа может содержать Входящие и Исходящие данные:
- Входящие данные это белые ноды размещённые в верхнем левом углу
- Исходящие данные это красные ноды размещённые в нижнем правом углу

- Розовые группы или Subgraph содержат файлы которые нужно проверить и при необходимости скачать в зависимости от используемой модели генерации.
- Зелёные ноды это подсказки, обычно они свёрнуты и даже частично перегораживаются другими нодами к которым они относятся

- Серые ноды выполняют некую логику работы, но не содержат параметров, поэтому они свёрнуты. Например нода "Switch (Redux)" позволяет автоматически переключиться на первый попавшийся активный вход, и подать данные с него на выход, при этом обязательно должен быть хотя бы один активный вход.

Цифра в заголовке ноды входящих/исходящих данных означает что где-то есть более ранние версии используемые в других группах и они являются зависимыми. Например название "positive2(model)" означает что в группе называемой model есть аналогичный выход, а входом в неё наверняка будет "positive1(группа)" и это позволяет лучше ориентироваться в последовательности работы схемы.

image

Группа "image(AutoPrompt)" позволяет загрузить три изображения:

image1 -  Основное изображение, по логике работы оно должно быть первым при использовании. Обычно это картинка являющаяся основой для рабочего процесса, например если предстоит работа с заменой лица, то основным изображением будет лицо, а то где будем менять - второстепенно и будет помещаться в следующую группу.

image2 - Дополнительное изображение обычно используется в сочетании с первой, например если мы хотим поменять лицо на готовой картинке то тут вставляем изображение на котором планируется замена лица, а само лицо главнее и оно будет идти в первой группе.

image3 - Негативное изображение, обычно используется в сочетании с соответствующей группой автоописания или специфических сценариях. При использовании Redux (Flux) - на ряду с image1 и image2 подмешивается в Positive.

Работа с маской - обычно используется в режиме Inpaint. Для получения маски, после загрузки картинки, нажимаем правую кнопку мыши на картинке и выбираем "*Open in Mask Editor*" - Рисуем маску на месте того, что будет заменяться. Или используем "Open in SAM Detector" - распознаёт часть объекта и делает маску по указанным точкам. Так же можно открыть изображение в Photopea (аналог фотошопа) при условии наличия соответствующего расширения.

Подгружаемые изображения автоматически подстраиваются под 1024 по широкой стороне с сохранением пропорции - это нужно что бы не вылететь по памяти. Параметр можно менять/отключать для повторного Масштабирования (Upscale) и при наличии достаточного количества VRAM

Redux (FLUX)

Redux (FLUX) - группы для получения Автоописаний на более низком уровне чем человеческий язык. Эти описания смешиваются с обычной подсказкой и являются более точным описанием картинки. Актуально для рабочих процессов связанных с заменой одежды. Работает на Flux - о чём говорит название группы и характерно при использовании Kontext моделей. Поэтому все три изображения могут идти в качестве дополнения к Positive.

AutoPrompt

AutoPrompt - группа получения "человеческих" описаний для позитива (image1 image2 image3). Можно не только получить подсказку, но и обработать её. Например при обработке лица можно уточнить что нам нужно получить только описание лица и убрать всё лишнее.

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

Ручной ввод позитивной и негативной подсказок.

Prompt

Группа состоит из субграфа который позволяет упростить внешний вид практически до одной ноды. В данном случае в ней выводятся два поля для текстового ввода Позитивной и Негативной подсказок и выбора стиля из списка.

Если развернуть субграф то можно увидеть внутренности, а именно:

- переводчики для подсказок
- подгрузчик стиля
- объединение подсказок

* Помним что субграфы отключать (bypass) - нельзя, по крайней мере на текущий момент. Точнее можно, но внутрянка не отключается и возникают ошибки. Группа "Prompt" - хороший пример организации пространства.

 

На вход подаётся AutoPositive - комбинация подсказок полученных из изображений

На выходе: positive1(prompt) и negative1(prompt)

Загрузчик модели.

Model

Это одна из массивных групп с возможностями:

- на главном экране выбор моделей из семейств SD1.5 / XL / Flux / Qwen с их разновидностями в виде fill / Konext или Edit / svdq вариантами для обычных и GGUF моделей.

- Lora подключается в двух местах: внутри Subpraph для постоянного использования (например турбо lora) и с главного экрана через LoRA Manager с подключением триггеров к положительной подсказке.
- ускорение генерации происходит не только за счёт возможностей Lora, но и Wavespeed (Apply First Block Cache)
- внутри subgraph происходит Clip кодирование текста, т.к. у каждой модели он свой
- для Flux и Qwen предусмотрены специфические параметры: "Выборка Flux" и "Выборка модели AuraFlow"

Файлы Clip, VAE, постоянные LORA помечены розовыми нодами означающими необходимость проверки выбранных файлов перед запуском схемы, их нужно один раз проверить / перевыбрать как на главном экране схемы, так и внутри subgraph.

Если не хватает моделей - можно легко расширить загрузку по аналогии с представленными группами, главный интерфейс при этом поменяется незначительно .

В качестве входящих данных идут Позитивные и Негативные подсказки из группы Prompt. Для Qwen Edit идёт image1 - т.к. изображение подмешивается в подсказку для возможности редактирования.

Несмотря на монструозность Subgraph если присмотреться, то можно увидеть однотипность групп. По аналогии с ними можно подключить ещё не анонсированные модели и существующие тяжеловесные - у меня 12 GB VRAM, поэтому нет тех.возможности для тестирования более тяжёлых моделей.

Важно: подгружается и используется только та модель которая соответствует выбранному индексу, поэтому скачивать все модели необязательно. Например если Вы используете только SDXL модели - достаточно указать файл к этой модели и выбрать индекс 2. И ещё раз, проверяем все задействованные розовые ноды, включая внутри subgraph.

Исходное изображение

Latent

Latent - это скрытое изображение в виде шума, которые модель ИИ использует в качестве отправной точки для генерации или модификации изображений.

- Latent может быть пустой - в том случае если нам важно взять только его разрешение и полностью сгенерировать новую картинку , для этого в ноде KSampler параметр denoise=1. ВНИМАНИЕ: пустые латенты отличаются для Flux/SD3 и SD1.x/SD2.x/SDXL - поэтому внутри Subgraph предусмотрена соответствующая логика в зависимости от индекса выбранной модели.

- Latent может быть подан в виде готового (image1 или image2) - для внесения изменений, при этом обычно в ноде KSampler параметр denoise<<1 - чем меньше значение, тем меньше изменений но больше сохраняется оригинал. Однако для flux-kontext denoise=1 - т.к. сама картинка "вшита" в подсказку.


Помимо очевидного назначения Select latent есть ещё Upscale_image1. Соответственно есть графический регулятор размера пустого Latent.

Image3 в Latent не участвует в виду редкого использования. но при необходимости можно прикрутить по аналогии с другими image.
Сам Subgraph включает логику выбора Latent в зависимости от индекса выбранной модели и незначительные манипуляции по работе с размерами изображений.

Магический блок получения изображения

Generate

Это не единственная группа Генерации во всей схеме, но основная. Группа не содержит Subgraph поэтому логика вся лежит на поверхности и из-за этого кажется что схема сложная. Однако благодаря разделению на подгруппы можно легко разобраться с функциями.

Первое что следует иметь ввиду, это акцент на ранее рассмотренных цветовых схемах и типах переключателей. Поэтому внимательно проходимся по активным розовым нодам - файлы должны быть в наличии и соответствовать основной модели генерации. Так же пользуемся переключателями вместо ручного включения групп.

Для отключения генерации, например при использовании другой группы со своим генератором, достаточно просто переключить все Коричневые (Brown) переключатели.


Для непосредственно простой генерации по подсказке достаточно включить только Generator или Generator-serial.

Замена лица

PuLID

Это группа нацелена на SD1.5 или XL, т.к. Flux kontext или Qwen Edit и так хорошая консистентнасть персонажа. Кроме использования данной группы непосредственно при генерации, дополнительно можно шлифануть готовое изображение соответствующей группой "FaceSwap(XL) / StyleSwap(XL)" - но об этом в другом разделе.

Для работы понадобится модель PuLID под основную модель генерации.

Если планируется новая генерация по подсказке с использованием лица, то необходимо:
1) image1 - загрузить эталон лица
2) Прописать подсказку
3) Активировать группу Генератор с Denoise=1
4) Запустить генерацию

Если в image2 подгрузить референсное изображение и параметр Denoise<0.5 - то мы получим замену лица на существующем изображении.

Рисование в маске

inpaint(mask)

Группа для рисования в маске. Само изображение и маска подгружаются из image1. Причём маска увеличивается в размере для улучшенной генерации мелкой маски и результат накладывается на полное изображение. 

Параметром Denoise=0.65 можно регулировать степень изменения исходного изображения. Но SD1.5 и XL изменяет достаточно сильно сам исходник, либо недостаточно вносит изменений - поэтому можно использовать в тех местах где не критичен оригинал. Для сохранения исходника и внесения существенных изменений идеальный вариант - это использовать модель Flux kontext и активировать группу "Positive+image1(Flux)" - подробнее об этой группе будет далее, выставив параметр Denoise=1 можно получить лучший вариант.


Активация данной группы автоматически активирует image1 в качестве Latent.

Рисование в маске

Positive+image1(Flux)

Группа для Flux(kontext) - великолепно справляется с сохранением содержимого при внесении изменений, например при использовании inpaint(mask). В принципе это единственное, но очень важное назначение группы.

Внимание, нода "Referance" которая рисует в маске с учётом содержимого, если выключить то будет рисовать просто в маске. На обычную генерацию - не влияет. Но нужно иметь ввиду:
- CFG =1 при одновременном использовании ноды "Referance" и параметра cache_threshold в ноде Nunchaku FLUX DiT Loader отличного от нуля
- CFG>1 при отключении ноды "Referance" или выставлении cache_threshold в ноде Nunchaku FLUX DiT Loader = 0 (при изменении значения нужно очистить память)

cache_threshold в ноде Nunchaku FLUX DiT Loader - отвечает за ускорение за счёт понижения качества, но при значении 0.12 практически незначительно падает качество при заметном ускорении (аналог wavespeed). Поэтому применение данной настройки рекомендуется к использованию, но в уме нужно держать вышеперечисленное касательно значений CFG.

Комбинация изображения

Combo-images(Flux-kontext)

Combo-images (Flux kontext) - ставит картинки рядом с друг другом и предназначена для контекстного изменения основного изображения путём указания в подсказке что взять и как обработать изображения по отношению к основной картинке. Для использования этой группы нужно подгрузить image1 - это основное изображение и image2 и/или image3, нужны например для переодевания, вставки предмета или изменения стиля основной картинки. Незабываем менять источник Latent и прописывать правильную подсказку.

Контрольные изображения

ControlNet

Схема содержит 2 Controlnet, хотя можно подключить больше по аналогии, последовательно. В связи с расширенными возможностями Kontext/Edit моделей необходимость в большем количестве Controlnet отпадает.

Незабываем, в розовых нодах подрубать соответствующие модели Controlnet. Благо дело есть универсальные модели:
- Для Flux: FLUX.1-dev-ControlNet-Union-Pro-2.0-fp8.safetensors
- Для XL: controlnet-union-sdxl-1_0.safetensors
- Для SD1.5 нет универсальной модели, есть целая куча самых разных на вкус и цвет.
- Для Flux Kontext дополнительно пользуются Lora с аналогичным функционалом и описанием в подсказке с использованием "Combo-images(Flux-kontext)".

Минигруппы

Reactor и Kohya

Reactor и Kohya это по сути однонодовые группы.

Для Reactor следует подгрузить референс лица image1 и учесть следующие моменты:

- описание и маска роли не играют.

- в референсе должен быть человекоподобный образ, крайний такой образ - робот. Звери не подходят.

 

Отличие от PulID и InstantID - изменения в целом само хуже. Однако Reactor работает заметно быстрее и менее требователен к ресурсам. Поэтому имеет место быть в случае комбинации вышеуказанных схем или для тех случаев когда важна скорость и изменение только лица.

Kohya - позволяет делать заготовку на меньшем разрешении в течении первых шагов, затем эту заготовку передаёт на генерацию с указанным разрешением. Таким образом уменьшаются эффекты задвоения при использовании повышенного разрешения генерации. Например при рекомендуемом разрешении 512*512px для SD1.5 можно выставить 1024*1024px и выше.

ВАЖНО!! При работе с ControlNet - ноду Kohya нужно отключать - иначе не будет работать ControlNet, точнее будет включаться позже чем задумывалось.

ИТОГИ

Для упрощения схемы пришлось пожертвовать некоторыми редко используемыми функциями - иначе получился бы automatic1111 в обёртке ComfyUI.

Схемка предоставляется как есть и будет допиливаться со временем. Следите за версией. Подписывайтесь на тележку для отслеживания изменений.

Добавить комментарий