Альтернатив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/
Рассмотрим для примера классический вариант использования Stable Diffusion.
Квадратики, полосочки, напоминает blue print в Unreal Engine. Но такой дизайн системы позволяет создавать собственные варианты обработки текста в изображения.
Если взглянуть внимательнее, то каждый "квадратик" - это Node, отвечает за определённую функциональность. Для небольшого примера давайте поймём, а где у нас загружается модель? У автоматика это сделано в левом углу
Comfy UI предлагает нам Node(далее Нода) CheckpointLoader. Говорящее название т.к. в основном все файлы моделей - это чекпоинты с расширениями .ckpt и .safetensors.
Особенностью Comfy UI является быстрый старт, модели не грузятся в память при запуске UI. Загрузчик моделей неактивный т.к. слева от названия CheckpointLoader серый индикатор. От станет зелёным только после запуска генерации, подгрузив модель единожды.
В CheckPointLoader есть три зелёных индикатора справа:
- Model - используется с блоком из samplers.
- CLIP - нужен для получения желаемой картинки, обычно используется два - положительный и отрицательный(это промт)
- VAE - используется с блоком VAEDecoder, нужен чтобы не получать просто шум, а иметь картинку приближённую к нашему описанию
CLIP - это один из основных блоков для построения генерации.
Стоит заметить, что если не все блоки связаны между собой, то процесс генерации не запустится, выведется сообщение предлагающее перепроверить блоки.
Давайте свяжем у себя несколько блоков, чтобы попрактиковаться в настройке.
Возьмём выше описанные блоки и попробуем их связать. Чтобы создать блок нажмите правой кнопкой мыши на серую область.
Выберете conditioning и выберете CLIPTextEncode, блок появится сразу после нажатия.
CheckPointLoader не работает без CLIP, поэтому зажмите левую кнопку мыши над индикатором CLIP и потяните в сторону индикатора(clip) CLIPTextEncode.
Те же действия проделайте со вторым выводом.
Далее нам надо выбрать блок sampler и добавить к нему блок EmptyLatentImage - это ничто иное как наши параметры для генерации картиночки.
А затем связать sampler таким образом - из CheckPointLoader Model тянем в model KSampler, из Conditioning у CLIPTextEncode в positive и negative.
Последним этапом будет совмещение вывода LATENT у KSampler через VAEDecode вместе с SaveImage.
Осталось только запустить генерацию, но кнопки генерации нет. Надо нажать Queue promt.
Т.к. UI использует понятие очереди, можно нажимать несколько раз, помещая тем самым генерацию в очередь, и история генераций будет записана ниже(скорее всего будет дорабатываться автором). Остальные элементы будут рассмотрены позже.
Финальный интерфейс с процессом генерации.
В данной статье прошлись по основному процессу построения txt2img. Я опустил множество деталей связанных с терминологией и математикой, т.к. хотел сделать уклон на интерфейс.
Упоминания в статье
- https://github.com/comfyanonymous/ComfyUI - альтернативный UI для SD.
- https://github.com/AUTOMATIC1111/stable-diffusion-webui - самый популярный UI для SD.
- http://neurobase.ru - гайды и руководства по SD, от новичка до продвинутого, полезные ссылки.