Введение

ComfyUI — это мощный и гибкий графический интерфейс на основе узловой системы для создания изображений с помощью нейросетей, главным образом Stable Diffusion. На первый взгляд его назначение может показаться узким, но на деле это инструмент, который раскрывает перед вами огромный потенциал для творчества и экспериментов с ИИ-генерацией. Если вы новичок в мире нейросетей и хотите научиться создавать потрясающие изображения, эта статья поможет вам разобраться с основами.

Представьте ComfyUI как визуальный конвейер производства — вы выстраиваете цепочку операций, где результат одного этапа передаётся на следующий. Это похоже на процесс в Blender, но вместо 3D-моделирования вы работаете с генерацией изображений через искусственный интеллект.

Почему ComfyUI, а не AUTOMATIC1111?

Когда вы начинаете изучать инструменты для работы с Stable Diffusion, вы встретите два основных интерфейса: AUTOMATIC1111 и ComfyUI. Оба решают одинаковые задачи, но подходят к ним по-разному.

Главные преимущества ComfyUI

  • Гибкость — вы можете выстраивать сложные многоэтапные конфигурации, которые невозможно создать в других интерфейсах
  • Видимость процесса — каждый шаг генерации представлен визуально, что помогает лучше понять, как работает нейросеть
  • Эффективность — работает быстро благодаря оптимизированной архитектуре
  • Поддержка продвинутых технологий — ControlNet, LoRA, инпайнтинг, работа с несколькими моделями одновременно

Когда AUTOMATIC1111 может быть удобнее

  • Более простой для абсолютных новичков интерфейс
  • Уже знакомая большинству пользователей схема

Но если вы готовы потратить немного времени на обучение, ComfyUI будет служить вам долго и позволит реализовать самые амбициозные идеи.

Базовая архитектура: узлы и рабочие процессы

ComfyUI работает на основе нодовой системы. Разберёмся, из чего это состоит:

Узлы и Edges

Узлы — это прямоугольные блоки, каждый из которых выполняет определённую операцию. Например:

  • Load Checkpoint — загружает модель Stable Diffusion
  • CLIP Text Encode — преобразует текстовый промпт в числовой вид
  • KSampler — генерирует изображение
  • VAE Decode — преобразует сжатое представление изображения в видимый результат
  • Save Image — сохраняет результат

Edges (рёбра) — это провода, которые соединяют выходы одного узла со входами другого. Данные передаются по этим проводам от узла к узлу.

Рабочий процесс (Workflow)

Рабочий процесс — это полный набор связанных узлов, который описывает всю операцию генерации. Например, минимальный рабочий процесс для создания изображения из текста выглядит так:

Load Checkpoint → CLIP Text Encode → KSampler → VAE Decode → Save Image

Каждый файл в ComfyUI — это полностью воспроизводимый рабочий процесс, что делает результаты предсказуемыми.

Как установить ComfyUI

Процесс установки относительно прост, хотя требует нескольких предварительных знаний:

1. PyTorch и CUDA

Установите необходимые библиотеки для работы нейросетей на вашей видеокарте.

2. Загрузка ComfyUI

Используйте портативную версию для Windows или клонируйте репозиторий.

3. Установка зависимостей

Запустите скрипт установки из текстового файла с инструкциями.

4. Загрузка моделей

Поместите модели Stable Diffusion (checkpoint файлы) в папку ComfyUI/models/checkpoints

5. Запуск интерфейса

Откройте run_cpu.bat (для CPU) или run_nvidia_gpu.bat (для NVIDIA видеокарты)

Если вы не хотите связываться с установкой локально, существуют онлайн-сервисы, которые уже все настроили за вас.

Ключевые технические концепции

Чтобы эффективно использовать ComfyUI, нужно понимать, как Stable Diffusion работает под капотом:

Латентное пространство

Это центральное понятие в работе Stable Diffusion. Вместо того чтобы работать с полноразмерными изображениями (что было бы медленно), нейросеть работает с сжатыми представлениями изображений — латентными пространствами.

Процесс выглядит так:

  1. Начинаем со случайного шума в латентном пространстве
  2. Нейросеть постепенно "очищает" этот шум, добавляя детали в соответствии с вашим текстовым описанием
  3. Конечное сжатое представление преобразуется обратно в полноценное изображение

VAE (Variational Autoencoder)

VAE — это компонент, который переводит изображение между пиксельным пространством (то, что видим мы) и латентным пространством (то, на чём работает нейросеть).

  • Encoder: сжимает обычное изображение (например, 512×512 пикселей) в латентное представление (64×64 чисел)
  • Decoder: преобразует латентное представление обратно в полноценное изображение

CLIP (Contrastive Language-Image Pre-training)

Это языковая модель, которая понимает текст. Она преобразует ваше текстовое описание в числовой вид (эмбеддинги), который нейросеть может использовать для управления генерацией. Благодаря CLIP нейросеть "понимает", что означает "кот с голубыми глазами".

KSampler — сердце генерации

KSampler — это узел, который выполняет основную работу. Он берёт:

  • Модель (MODEL)
  • Текстовый промпт в виде эмбеддингов (от CLIP)
  • Случайный шум в латентном пространстве

И итеративно "очищает" этот шум, создавая изображение.

Ключевые параметры KSampler

  • Seed — определяет начальный шум; один seed всегда дает одинаковый результат
  • Steps — количество итераций очистки (больше = лучше, но дольше)
  • Sampler_name — алгоритм очистки (Euler, DPM++, и др.)
  • Scheduler — скорость изменения уровня шума
  • Denoise — сколько шума удалять (1.0 = полная генерация, 0.5 = половинная)

Первый рабочий процесс: Text-to-Image

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

Пошаговая инструкция

Шаг 1: Загрузка модели

Добавьте узел Load Checkpoint. Нажмите на имя модели и выберите одну из доступных. Для начинающих подойдёт любая модель (например, Stable Diffusion v1.5).

Шаг 2: Обработка промпта

Добавьте два узла CLIP Text Encode:

  • Верхний для положительного промпта (то, что вы хотите видеть)
  • Нижний для отрицательного промпта (то, чего вы не хотите видеть)

Введите промпты на английском языке. Синтаксис простой: просто перечислите объекты, стили, качество: "beautiful landscape, mountains, sunset, high quality, 4k".

Шаг 3: Создание пустого изображения

Добавьте узел Empty Latent Image. Здесь вы указываете размер:

  • Для SD v1.5: 512×512 или 768×768 пикселей
  • Для SDXL: 1024×1024 пикселей

Ширина и высота должны быть кратны 8.

Шаг 4: Семплирование (генерация)

Добавьте узел KSampler и подключите:

  • MODEL из Load Checkpoint
  • Положительный и отрицательный промпты из CLIP Text Encode
  • Пустое изображение из Empty Latent Image

Оставьте стандартные значения параметров:

  • Steps: 20-30
  • Seed: -1 (случайный seed каждый раз)
  • Denoise: 1.0

Шаг 5: Декодирование и сохранение

Добавьте узел VAE Decode, подключив к нему выход KSampler.

Затем добавьте узел Save Image для сохранения результата.

✨ Готово! Нажмите "Queue Prompt" — и через несколько секунд (или минут, в зависимости от вашего ПК) вы получите первое сгенерированное изображение.

Расширенные рабочие процессы

Image-to-Image (Изображение в изображение)

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

Вместо пустого изображения вы загружаете реальное изображение через узел Load Image, затем преобразуете его в латентное пространство через VAE Encode. Подключите результат к KSampler вместо Empty Latent Image. Установите denoise на 0.5-0.7 (чтобы изменить, но не полностью переделать изображение).

Double Sampling (двойное семплирование)

Техника для повышения качества:

  1. Запустите первый KSampler с небольшим количеством шагов
  2. Возьмите результат и передайте его во второй KSampler
  3. Во втором семплере установите denoise на 0.5 и steps на 30

Это значительно улучшает детализацию, особенно на лице и руках.

ControlNet — контроль над композицией

ControlNet позволяет вам управлять позой, краями, глубиной изображения. Это мощная технология, которая требует дополнительного изучения, но кардинально расширяет возможности.

LoRA и Embeddings: персонализация стиля

LoRA (Low-rank Adaptation)

LoRA — это компактные модели, которые применяют определённый стиль или добавляют специфические элементы. Например, LoRA может научить нейросеть рисовать в стиле конкретного художника.

Использование простое:

  1. Добавьте узел Load LoRA
  2. Выберите LoRA файл
  3. Подключите OUTPUT LoRA узла к MODEL из Load Checkpoint

Вы можете применить несколько LoRA одновременно.

Embeddings (текстовая инверсия)

Embeddings позволяют добавлять в промпт пользовательские концепции. Просто напишите в промпте: embedding:BadDream (если у вас есть такой embedding файл).

ComfyUI Manager: управление расширениями

ComfyUI Manager — это встроенный инструмент для установки и обновления пользовательских узлов. Найдите кнопку "Manager" в главном меню.

Основные команды:

  • Install Missing Custom Nodes — автоматически установит узлы, которые требуются для вашего рабочего процесса
  • Update — обновляет существующие узлы

Полезные советы для новичков

✅ Лучшие практики

  1. Фиксируйте seed — если вы довольны результатом, скопируйте значение seed для воспроизведения
  2. Используйте Preview Image вместо Save Image во время экспериментирования — это экономит место
  3. Копируйте узлы через Ctrl+C и Ctrl+V
  4. Минимизируйте узлы — нажмите на точку в углу узла, чтобы убрать беспорядок
  5. Встраивайте рабочие процессы в PNG — ComfyUI сохраняет всю информацию о workflow в метаданных изображения, просто перетащите PNG обратно в ComfyUI, чтобы загрузить workflow