March 1, 2023

Альтернативa 1111 web-ui

Comfy UI

https://github.com/comfyanonymous/ComfyUI#a-powerful-and-modular-stable-diffusion-gui

Описание из официального репозитория -

"Этот пользовательский интерфейс позволит вам разрабатывать и выполнять продвинутые конвейеры Stable Diffusion, используя интерфейс на основе графов, узлов и блок-схем..."

Это краткий обзор на возможности Comfy UI. Здесь не будет подробных руководств как установить UI. Про Stable Diffusion можно прочитать здесь http://neurobase.ru/
Интерфейс Comfy UI, пример использования txt2image, самого популярного способа генерации картинок.

Рассмотрим для примера классический вариант использования Stable Diffusion.

Квадратики, полосочки, напоминает blue print в Unreal Engine. Но такой дизайн системы позволяет создавать собственные варианты обработки текста в изображения.

Если взглянуть внимательнее, то каждый "квадратик" - это Node, отвечает за определённую функциональность. Для небольшого примера давайте поймём, а где у нас загружается модель? У автоматика это сделано в левом углу

Левый угол sd-web-ui от Automatic1111

Comfy UI предлагает нам Node(далее Нода) CheckpointLoader. Говорящее название т.к. в основном все файлы моделей - это чекпоинты с расширениями .ckpt и .safetensors.

(Неактивный)Загрузчик моделей Comfy UI

Особенностью Comfy UI является быстрый старт, модели не грузятся в память при запуске UI. Загрузчик моделей неактивный т.к. слева от названия CheckpointLoader серый индикатор. От станет зелёным только после запуска генерации, подгрузив модель единожды.

В CheckPointLoader есть три зелёных индикатора справа:

  • Model - используется с блоком из samplers.
  • CLIP - нужен для получения желаемой картинки, обычно используется два - положительный и отрицательный(это промт)
  • VAE - используется с блоком VAEDecoder, нужен чтобы не получать просто шум, а иметь картинку приближённую к нашему описанию

CLIP - это один из основных блоков для построения генерации.

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

Давайте свяжем у себя несколько блоков, чтобы попрактиковаться в настройке.

Возьмём выше описанные блоки и попробуем их связать. Чтобы создать блок нажмите правой кнопкой мыши на серую область.

По нажатии ПКМ по пустой области, появляется меню с выбором.

Нажмите на Add Node

Выбор CLIPTextEncode

Выберете conditioning и выберете CLIPTextEncode, блок появится сразу после нажатия.

Ура, мы создали его

CheckPointLoader не работает без CLIP, поэтому зажмите левую кнопку мыши над индикатором CLIP и потяните в сторону индикатора(clip) CLIPTextEncode.

Перетаскиваем из CLIP к clip до соединения.

Готовое соединение

Те же действия проделайте со вторым выводом.

Объединенные промты.

Далее добавим VAE блок

Нажатием правой кнопки мыши мы выбираем latent VAEDecode

Далее нам надо выбрать блок sampler и добавить к нему блок EmptyLatentImage - это ничто иное как наши параметры для генерации картиночки.

Меню выбора sampler.
KSampler
EmptyLatentImage и откуда его взять.
Содениение EmptyLatentImage и KSampler.

А затем связать sampler таким образом - из CheckPointLoader Model тянем в model KSampler, из Conditioning у CLIPTextEncode в positive и negative.

Соединение остальных блоков

Последним этапом будет совмещение вывода LATENT у KSampler через VAEDecode вместе с SaveImage.

Последние приготовления

Осталось только запустить генерацию, но кнопки генерации нет. Надо нажать Queue promt.

Панель управления ComfyUI.

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

Финальный интерфейс с процессом генерации.

Как видно здесь - в очереди на обработке четыре запроса на генерацию. и у нас выводится картинка!

В данной статье прошлись по основному процессу построения txt2img. Я опустил множество деталей связанных с терминологией и математикой, т.к. хотел сделать уклон на интерфейс.


Упоминания в статье

  1. https://github.com/comfyanonymous/ComfyUI - альтернативный UI для SD.
  2. https://github.com/AUTOMATIC1111/stable-diffusion-webui - самый популярный UI для SD.
  3. http://neurobase.ru - гайды и руководства по SD, от новичка до продвинутого, полезные ссылки.