ControlNet в ComfyUI: workflow SDXL Canny
ControlNet добавляет к генерации структурную подсказку. Canny использует контуры; другие модели могут работать с глубиной или позой. Это помогает удерживать композицию, но не гарантирует совпадение пикселей, точный текст или неизменную геометрию товара.
Здесь используется SDXL + Canny ControlNet — расширение стартового SDXL-графа, а не workflow FLUX. ControlNet для SD 1.5, SDXL и FLUX нужно сочетать с совместимым семейством модели и подходящими узлами.
Результат workflow Canny
Для этого запуска на RTX 4090 использованы исходник с синей кружкой, новый цвет в промпте и настройки ниже. Сравните контуры и свет с исходником: совпадение пикселей не предполагается.
Исходник 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, затем загрузите исходное изображение.
В графе пять этапов:
- Изменение размера и обрезка исходника по центру до 1024 × 1024.
- Выделение контуров встроенным узлом
Canny. - Загрузка весов SDXL Canny ControlNet.
- Передача позитивного и негативного conditioning через
ControlNetApplyAdvanced. - Сэмплинг, декодирование и сохранение изображения 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-сервер