Генерация изображений с нуля. Часть 3: Погружение в Comfy UI
Приветствую всех, кто добрался до третьей части. В первых двух мы научились генерировать картинки в Forge, разобрались немного с тем, как устроен процесс под капотом, научились контролировать позу через Control Net OpenPose и запускать тяжёлые модели вроде FLUX. Но теперь пришло время сделать следующий шаг - научиться работать с ComfyUI (Да-да, это та страшная штука о которой я говорил в первой части, что начинать свой путь с неё 100% нельзя).
Так зачем же оно нам нужно? Потому что в Forge всё удобно, но иногда хочется детального контроля процесса. Если вы прочли мои две части гайда, то так или иначе уже стали в какой-то степени разбираться в процессе генерации, а Comfy UI позволяет детально работать с каждым этапом генерации, которые в Forge скрыты или минималистично показаны на UI.
Однако если вам не интересно узнать как более детально контролировать генерацию, а так же получить возможность запускать кроме генераторов картинок ещё и нейросети для генерации: аудио, видео, текста и прочее... То в целом вы можете остановиться на том, что умеете работать с Forge. А для всех тех, кто желает изучить что-то более сложное или вам просто интересно почитать... Начнём.
НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПЕРЕД ЧТЕНИЕМ ЭТОЙ ЧАСТИ ИЗУЧИТЬ ПРЕДЫДУЩИЕ:
1-я часть:
2-я часть:
Глава 1. Что такое Comfy UI и чем он отличается от Forge?
1.1) Готовое vs конструктор Lego
Forge - это уже готовый сборник инструментов для удобного использования. Вы делаете минимум махинаций и получаете результат. Удобно, быстро, предсказуемо.
Comfy UI - это как конструктор Lego. Вам дают кучу деталек (нод), и вы сами собираете из них всё, что хотите или можете себе представить (в каком-то смысле). Хотите простую txt2img (как в Forge)? Легко. Хотите пайплайн, где картинка сначала генерируется, потом апскейлится, а в конце сохраняется в трёх разных папках? Тоже легко - просто соедините ноды.
1.2) Главное отличие: ноды вместо вкладок
В Forge у вас есть вкладки: txt2img, img2img, Extras, Inpaint. Каждая является отдельным режимом работы.
В Comfy UI нет вкладок. Вместо этого холст с нодами (узлами), которые вы соединяете проводами. Каждая нода делает что-то одно: загружает модель, кодирует текст, генерирует латент, декодирует в картинку, сохраняет результат и т.д и т.п.
1.3) Плюсы ComfyUI
В Forge процесс скрыт под капотом. Вы нажимаете Generate, и вся "магия" происходит где-то внутри.
В Comfy UI вы видите каждую стадию. Вот текст превращается в числа (CLIP Text Encode), здесь создаётся шум (Empty Latent Image), тут модель убирает шум (KSampler), а здесь латент превращается в картинку (VAE Decode). Это как разница между нажать кнопку на приборе и собрать этот прибор из деталей самому. Второе сложнее, но зато вы понимаете, как это работает.
В Comfy UI можно смешивать всё, что угодно. В Forge сложно подключить два Control Net сразу, в Comfy UI же это делается быстро.
Большая библиотека готовых workflow. Тут я обрадую тех, кто подумал, что вас бросят в песочницу и учись всё делать сам с нуля без помощи. В самом Comfy UI есть раздел готовых workflow, это уже готовые цепочки нод для определенного результата и работы. Т.е вы можете никогда и не собирать ноды в рабочую систему сами, а всегда работать с готовыми.
А сейчас самый крутой и главный плюс для исследователей. Поддержка самых свежих моделей раньше, чем в Forge. Когда выходит новая модель (например новая MiniMax H3), в Comfy UI она появляется в первые дни, а в Forge через недели или месяцы. Потому что в Comfy UI проще добавить поддержку: достаточно написать пару нод, а не переделывать принцип работы.
1.4) Минусы Comfy UI
Высокий порог входа. Первый раз открыв Comfy UI, вы увидите пустой холст и подумаете: "А где кнопки? Где Generate? Что делать то?". Это нормально. Нужно понять логику нод, и тогда всё станет понятно.
Нет удобного "красивого" интерфейса из коробки. Comfy UI выглядит как инструмент для разработчиков, поскольку таковым и является т.к в нём проще тестировать работу модели.
Нужно понимать, что делает каждая нода. В Forge вы можете не знать, что такое латент или CLIP encoder. В Comfy UI вам придётся разобраться, иначе не сможете собрать работающую схему с нуля своими руками.
1.5) Итог
Comfy UI это не замена Forge, а инструмент для исследователей и людей которые хотят творить то, что не позволяет Forge. При том, что я довольно хорошо (по своему мнению) разобрался в Comfy UI, я всё ещё часто использую Forge и Forge Neo. Поскольку когда ты собираешься сделать что-то простое, то зачем идти сложным путём? Да, в Comfy UI если вы сделаете себе workflow под каждую нужду, то это замена Forge, но скорее всего вы всё же предпочтёте использовать Forge когда будете делать что-то простое, т.к подключить какой-то простенький плагин и работать с ним (например тот же Control Net) куда проще в Forge.
Глава 2. Установка, запуск, базовые взаимодействия.
Здесь всё просто: ставим через git либо качаем приложение с сайта comfyai.org. Сам я качал приложение. Там всё просто и поэтапно, поэтому на самом деле тут писать мне нечего, т.к я думаю, что вы с этим справитесь. Сразу перейду к запуску.
Когда вы откроете Comfy UI, увидите холст. Он будет либо пустым, либо с уже какой-то готовой схемой.
Интерфейс с кнопками расположен слева. Можете позаходить и посмотреть что в каждой, но для начала нас интересует седьмая по счету - раздел Templates.
Здесь расположены готовые воркфлоу для огромного количества моделей. На каждую модель может быть несколько, а то и десяток воркфлоу которые сделаны для txt2img, img2img, control net, image edit, video edit и т.д и т.п. Т.е подразумевается, что вы находите воркфлоу под вашу задачу, открываете и после скачивания необходимых моделей генерируете то, что вам нужно. При открытии воркфлоу вам сразу предлагается скачать нужные модели для его работы, если же не предлагается или не получается скачать через сам Comfy UI, то смотрите название моделей в нодах и вписываете в поисковик, и найдете вы их на известном нам Hugging Face. А так же т.к воркфлоу могут быть не на все модели или же они не сразу добавляются (т.к при появлении новой модели обычно проходит пару дней - неделя прежде чем появятся воркфлоу), в таком случае если вы нашли интересующую вас модель на Hugging Face, но нет воркфлоу в Comfy UI, то вам придется читать документацию этой модели (это лучше делать всегда конечно же) и самому собирать воркфлоу, но чаще всего можно найти готовый минимальный воркфлоу в репозитории с этой же моделью, ну или же просто в интернете.
Далее. Вернувшись назад к холсту и посмотрев на верх мы увидим кнопку Extensions. Это плагины. Там собрано огромное множество разных плагинов которые: добавляют новые ноды, добавляют новые функции, меняют или добавляют интерфейсы и т.д и т.п.
Кликнув дважды ЛКМ по пустому месту на холсте вы откроете раздел с нодами. Их там со старта внушительное количество и оно будет постоянно расти при установке плагинов под разные задачи.
Глава 3. Свой первый воркфлоу и немного теории.
Для начала ознакомимся с рабочей папкой Comfy UI куда вы будете кидать модели и т.д. Заходите в место куда скачали Comfy UI и видите это:
Здесь всё просто. В input будут те файлы которые вы подавали на вход, например для img2img, в models будет структура похожая на папку models из Forge, в output всегда будут результаты ваших запусков (т.е если вы не добавляли ноду с предпросмотром картинки внутри Comfy UI, то вы всегда сможете её найти тут). Вернемся к папке models:
В моём случае будет больше папок чем у вас т.к они появляются при установке некоторых плагинов для запуска моделей. Но в начале вас будут интересовать папки vae, diffusion_models, unet, text_encoders, loras, checkpoints, clip. С некоторыми я думаю вы уже знакомы, но вас может смутить разделение на diffusion_models, unet и checkpoints. Эти 3 папки нужны для моделей (как папка Stable-diffusion в Forge). Подразделяется оно на 3 разные папки т.к они будут нести в себе разное взаимодействие с моделью. Об этом поговорим чуть позже.
Создадим свой первый воркфлоу для запуска XL моделей. Вам нужно кинуть свою XL модель в папку checkpoints, ну а VAE в папку vae. После этого приступаем. Кликаем дважды ЛКМ и добавляем поочереди все ноды из скриншота ниже (название ноды написано на ней сверху). У каждой ноды есть входы и выходы, вы соединяете их проводами тем самым связывая их между собой. Не обязательно все входы и выходы должны быть с чем то связаны, у каких то нод из одного входа/выхода может идти сразу несколько проводов.
После добавления всех нод на холст повторите связи между ними как на скриншоте.
В Load Checkpoint мы выбираем нашу XL модель (если её нет, то вы кинули её не туда или создали не ту ноду), от неё идут 2 провода в CLIP и 1 в KSampler. В CLIP пишутся промпты (т.е всё как в том же Forge), верхний CLIP входит в KSampler, в positive, а нижний в Negative. Смысл всё тот же как и в Forge, т.е позитивный и негативный промпты соответственно. Далее Empty Latent Image - это разрешение нашей картинки (или же пустой латент который будет использоваться для зашумления и последующих процессов). KSampler это сам генератор в котором происходит весь основной процесс. В нём мы видим знакомые нам разделы, т.к это всё то, что мы задавали в Forge, но выбор по сэмплерам и т.д там больше. Под KSampler расположен Load VAE. У нас в Load Checkpoint как вы могли заметить есть пустой выход VAE, модель у нас стоит в формате safetensors и я знаю, что в ней есть вшитый VAE как и text encoder, такое есть во многих XL моделях с Civitai, но тут я использую другой VAE, т.е не вшитый в модель, поэтому выход VAE от модели я оставляю пустым т.к он мне не нужен. В Load VAE у меня выбран VAE для PonyXL. Далее из KSampler и Load VAE выходы идут во вход VAE Decode, а из него в Preview Image.
Это самый минимальный воркфлоу для XL модели. В верхнем правом углу интерфейса есть кнопка Run, после её нажатия запустится процесс и вы получите картинку. Вся эта схема в Forge скрыта под капотом и за "красивым" интерфейсом, т.е в Forge знать что с чем и как связано вам не нужно, а здесь это важно т.к отсутствие или присутствие лишней ноды и связи может поломать весь процесс.
В левом нижнем углу интерфейса вы можете найти иконку терминала, открыв её у вас появится окно с процессом генерации как в случае окна cmd с Forge.
В данном случае т.к XL модели простые и неприхотливые к воркфлоу, то как я и сказал это минимальный воркфлоу для всех XL моделей. Т.е просто меняете в Load модели XL и генерируете. Однако если переходить к FLUX моделям и прочим, то там воркфлоу другие.
При желании вы можете сохранить свой воркфлоу нажав ПКМ по его названию сверху и выбрать Save as. Сохраненные воркфлоу будут сохраняться открытыми и содержаться в одноименном разделе слева.
Немного теории
Сейчас я вас познакомлю с разными фундаментами воркфлоу для диффузионных моделей.
Первый вид это так сказать All in one, который и был продемонстрирован выше. Т.е всё содержится в чекпоинте модели. И этот шаблон подходит для всех XL моделей из того же Civitai:
Второй вид. Тут почти всё так же, но ноды загрузки другие. Используется нода Load Diffusion Model, а не Load Checkpoint (т.е модель тогда должна лежать в папке diffusion_models) и она соединяется сразу с KSampler. А также добавляется нода Load Clip. Этот метод подходит вам если вы хотите использовать для XL модели не вшитый CLIP для работы с промптом, а сторонний. Если CLIPа у вас 2, то используется другая нода - Load Dual Clip. Этот шаблон так же подходит для FLUX моделей.
Третий вид. Здесь используется U-Net Loader (модель должна лежать в папке unet), а на входе идут модели в формате gguf. Этот шаблон для того чтобы брать любую модель генерации (тот же XL или FLUX) и сочетать с разными CLIP. Этот шаблон больше для экспериментов чтобы смотреть как ведёт себя модель с разными CLIP. ну или же если вы скачаете модель в формате gguf.
Разумеется заниматься постройкой этих воркфлоу вас никто не заставляет и вы можете всегда работать с готовыми из раздела workflows.
Возможно сейчас вы зададитесь вопросом... Зачем тогда тут делать то, что можно делать в Forge? А я отвечу вам. Чтобы видеть что происходит и как, чтобы экспериментировать, чтобы сразу же работать со свежими моделями и строить сложные цепочки которые не получится сделать в Forge. Например как эта:
В интернете можно будет найти множество разных воркфлоу под самые разные задачи. Некоторые из них будут громадные и вы будете хвататься за голову пытаясь понять что вообще тут происходит, но со временем когда методом проб и ошибок вы будете строить свои воркфлоу, вы научитесь делать всё более многозадачные и разберетесь со страшными махинами.
Заключение
Это был минималистичный вводный гайд по Comfy UI. Думаю, что я рассказал всё необходимое для того чтобы начать работать в Comfy UI... Да и этот гайд позиционировался как раз только для самого старта, а не рассмотрения сложных связей и их принципа работы. Кроме генераторов картинок в Comfy UI можно запускать и аудио генераторы, и видео генераторы, и текстовые генераторы, а так же делать и прочие различные процессы. Но на этом я закончу этот гайд.
Всех благодарю за внимание! И надеюсь, что я смог вам как-то помочь.