Скидка 5% при первом запуске GPU по промокоду Активировать скидку

ControlNet в ComfyUI: workflow SDXL Canny

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

Здесь используется SDXL + Canny ControlNet — расширение стартового SDXL-графа, а не workflow FLUX. ControlNet для SD 1.5, SDXL и FLUX нужно сочетать с совместимым семейством модели и подходящими узлами.

Результат workflow Canny

Для этого запуска на RTX 4090 использованы исходник с синей кружкой, новый цвет в промпте и настройки ниже. Сравните контуры и свет с исходником: совпадение пикселей не предполагается.

Результат workflow Canny

Исходник PNG · Оригинальный результат · Точный workflow · Все примеры до и после

Скачайте дополнительные веса

Готовый пресет SDXL содержит RealVisXL, но не веса ControlNet из этого примера. Скачайте diffusion_pytorch_model.fp16.safetensors из diffusers/controlnet-canny-sdxl-1.0. Граф ожидает файл с именем controlnet-canny-sdxl-1.0.safetensors в models/controlnet/.

Выполните команды из корня используемой установки ComfyUI в Bash с включённым set -e: ошибка скачивания должна остановить скрипт до переименования. Сначала проверьте свободное место и условия модели.

set -e
mkdir -p models/controlnet
curl --fail --location --retry 3 \
  'https://huggingface.co/diffusers/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors' \
  --output models/controlnet/controlnet-canny-sdxl-1.0.safetensors.partial
mv models/controlnet/controlnet-canny-sdxl-1.0.safetensors.partial \
  models/controlnet/controlnet-canny-sdxl-1.0.safetensors

После завершения обновите список моделей или безопасно перезапустите ComfyUI. Недокачанный файл или HTML с ошибкой не являются весами модели. Не заменяйте рабочий файл без сохранённой копии.

Импортируйте граф

Скачайте SDXL ControlNet Canny UI JSON, выберите чекпойнт RealVisXL и файл ControlNet, затем загрузите исходное изображение.

В графе пять этапов:

  1. Изменение размера и обрезка исходника по центру до 1024 × 1024.
  2. Выделение контуров встроенным узлом Canny.
  3. Загрузка весов SDXL Canny ControlNet.
  4. Передача позитивного и негативного conditioning через ControlNetApplyAdvanced.
  5. Сэмплинг, декодирование и сохранение изображения SDXL с полученными условиями.

Для этого Canny-примера не нужно стороннее расширение препроцессинга. Для позы и глубины могут понадобиться другие препроцессоры и модели; их зависимости стоит разбирать отдельно. См. модели и custom nodes.

Настраивайте по одному параметру

Параметр Начальное значение Что оценивать
Canny low / high thresholds 0.4 / 0.8 Сохраняются ли полезные контуры без лишнего шума от текстур
Strength 0.65 Не слишком ли слабо или жёстко результат привязан к исходнику
Start / end percentage 0.0 / 0.8 На какой части траектории сэмплинга действует контроль
Размер / batch 1024 × 1024 / 1 Совпадение геометрии и расход памяти

Пороги здесь заданы по шкале ComfyUI от 0 до 1, а не от 0 до 255, как в некоторых примерах OpenCV. Снижение порогов может добавить слабые контуры; сильный контроль — сохранить детали, которые вы хотели убрать. Если результат непонятен, сначала посмотрите изображение контуров.

При сравнении strength фиксируйте исходник, промпт, seed и сэмплер. Если меняете пропорции результата, измените и resize, и размеры пустого latent, чтобы conditioning совпадал с холстом. ControlNet увеличивает расход памяти: сначала проверьте обычную генерацию по тексту, затем решайте, нужна ли другая GPU.

Сохранение и автоматизация

Храните исходник, граф и результат вместе. Для API загрузите исходник и укажите точное серверное имя в API JSON, либо экспортируйте граф после выбора изображения в интерфейсе. Далее — инструкция по API.

Для локальной правки используйте inpainting, для итогового размера — апскейл. Ограничения проверки указаны в коллекции workflow. Источник: руководство ComfyUI по ControlNet.

Готовы запустить?

Запустить GPU-сервер