После выполнения инструкции вы сможете использовать ControlNet для пространственного контроля генерации изображений двумя официально подтверждёнными способами: через Hugging Face Diffusers в коде и через расширение для AUTOMATIC1111 WebUI. Вы получите воспроизводимый порядок действий, способ проверки результата и список типовых ошибок.
- Время: зависит от того, установлены ли у вас модели и среда запуска; официальные источники не дают единой оценки.
- Сложность: средний.
- Стоимость: официальной единой цены нет; она зависит от хостинга, GPU, облака и условий конкретной модели или сервиса.
- Что потребуется: контрольное изображение, подходящая модель ControlNet, совместимая среда Diffusers/PyTorch или установленный AUTOMATIC1111 WebUI, доступ к локальному хранилищу для размещения моделей.
- Актуальность: инструкция сверена по документации Hugging Face ControlNet, официальным репозиториям ControlNet и sd-webui-controlnet по состоянию на 2026-08-15. Ограничение редакции: точные версии пакетов, точные model ID и цены не зафиксированы в source pack, поэтому их нужно дополнительно сверять на странице модели или провайдера перед запуском.
Практический вывод: если вам нужен контроль генерации из кода, ориентируйтесь на официальный workflow Diffusers: подготовьте control image, загрузите ControlNet и pipeline, затем передайте контрольное изображение и
controlnet_conditioning_scale. Если вам нужен UI без кода, используйте расширение Mikubill для AUTOMATIC1111 и отдельно разместите модели вmodels/ControlNet.
Когда ControlNet действительно нужен
ControlNet добавляет к text-to-image diffusion-модели пространственное условие: контуры, глубину, позу или другой структурный сигнал. В оригинальной работе это описано как добавление управления к уже обученной модели через отдельные trainable-слои при замороженной базовой модели.
На практике это нужно, когда вы хотите сохранить структуру сцены лучше, чем это делает один только prompt: повторить позу, удержать геометрию, следовать эскизу или опираться на карту границ.
| Путь | Когда выбирать | Что подтверждено источниками |
|---|---|---|
| Hugging Face Diffusers | Если вы работаете в Python и хотите управлять параметрами из кода | Официальный workflow: подготовить контрольное изображение, загрузить ControlNet и pipeline, передать контрольное изображение и controlnet_conditioning_scale, при необходимости использовать Multi-ControlNet и guess_mode |
| AUTOMATIC1111 + sd-webui-controlnet | Если вы работаете через WebUI | Официально подтверждены установка через Extensions → Install from URL, действие Apply and restart UI, полный перезапуск интерфейса, отдельная загрузка моделей и обновление выпадающего списка моделей |
Пошаговая настройка
- Определите, какую структуру вы хотите сохранить.
Сначала выберите тип контроля по задаче. В официальных материалах и списке моделей 1.1 прямо упоминаются варианты
canny,depth,openpose,scribble,softedge,shuffleиip2p. Для воспроизводимого первого запуска проще всего начать сcanny: этот путь прямо показан в документации Diffusers.Ожидаемый результат: вы понимаете, какой тип контрольного изображения будете подавать в модель: карту границ, карту глубины, позу или эскиз.
- Подготовьте контрольное изображение.
Для сценария с Canny сначала получите карту границ из исходной картинки. Именно такой процесс описан в официальной документации Diffusers: сначала создаётся control image, затем оно передаётся в pipeline.
from PIL import Image import numpy as np import cv2 image = Image.open('control-input.png').convert('RGB') control_image = Image.fromarray(cv2.Canny(np.array(image), 100, 200)) control_image.save('control-canny.png')Если вы работаете не с Canny, а с глубиной или позой, источник подтверждает сам принцип, но не фиксирует один универсальный препроцессор для всех типов условий. В таком случае ориентируйтесь на конкретную карточку модели или текущую страницу документации.
Ожидаемый результат: у вас есть отдельный файл control image, который выражает структуру сцены, а не финальный внешний вид.
- Скачайте и разместите подходящую модель ControlNet.
Если вы используете AUTOMATIC1111, модели после скачивания нужно класть в
models/ControlNet. Wiki расширения отдельно указывает, что обычно используются файлы.pth,.safetensorsили.bin.Если вы используете Diffusers, выберите совместимый артефакт модели по официальной документации или карточке модели. Редакционное ограничение: source pack не фиксирует конкретные актуальные model ID, поэтому не подменяйте этот шаг догадкой и сверяйте идентификатор перед запуском.
Ожидаемый результат: модель доступна вашей среде: либо физически лежит в
models/ControlNet, либо её идентификатор готов для загрузки в Diffusers. - Запустите вариант через Diffusers, если вам нужен контроль из кода.
Официальный workflow Diffusers сводится к трём действиям: загрузить ControlNet и pipeline, передать контрольное изображение, а затем задать параметры генерации. В документации прямо указаны контрольное изображение,
num_inference_steps,guidance_scaleиcontrolnet_conditioning_scale.Вызов pipeline должен включать: - prompt - контрольное изображение - num_inference_steps - guidance_scale - controlnet_conditioning_scaleЕсли вам нужен более сильный или более мягкий контроль, меняйте именно
controlnet_conditioning_scale. Если вы хотите объединить несколько сигналов, документация Diffusers подтверждает Multi-ControlNet: можно передавать список моделей ControlNet и список control images, причём для каждого канала задаётся свой scale.Ожидаемый результат: вы получаете изображение, где общая структура заметно следует control image лучше, чем при генерации только по prompt.
- Установите расширение sd-webui-controlnet, если вы работаете в AUTOMATIC1111.
Откройте
Extensions → Install from URL, установите расширениеMikubill/sd-webui-controlnet, затем выполнитеApply and restart UIи после этого полностью перезапустите WebUI. Это именно тот порядок действий, который подтверждён в официальном репозитории расширения.После перезапуска скачайте модели, положите их в
models/ControlNetи обновите выпадающий список моделей в интерфейсе.Ожидаемый результат: панель ControlNet доступна в WebUI, а нужная модель появляется в списке выбора.
- Запустите генерацию в AUTOMATIC1111 с контрольным изображением.
Загрузите ваше control image в соответствующий блок расширения, выберите модель ControlNet, связанную с типом условия, и выполните генерацию. Если вы хотите управлять этим извне по API, репозиторий расширения требует запускать WebUI с флагом
--apiи включить опциюAllow other scripts to control this extension.Для служебной настройки источники также упоминают аргументы
--controlnet-dirи--no-half-controlnet. Используйте их только если у вас есть конкретная причина менять стандартное поведение.Ожидаемый результат: генерация проходит с учётом контрольного изображения, а не только текстового описания.
- Отрегулируйте силу контроля и при необходимости добавьте второй канал управления.
Если результат слишком свободный, увеличьте силу ControlNet; если изображение выглядит излишне «привязанным» к control image, уменьшите её. В Diffusers за это отвечает
controlnet_conditioning_scale. Для Multi-ControlNet официально подтверждён сценарий со списком моделей и списком изображений; при этом контрольные изображения нужно привести к ожидаемому размеру.Если вы тестируете
guess_mode, документация Diffusers отдельно отмечает, что генерация может опираться на control input даже без prompt. В тех же материалах указаны рекомендованные коэффициенты усиления для этого режима:0.1для DownBlock и1.0для MidBlock. Ограничение: точные интерфейсные названия этих коэффициентов зависят от конкретной реализации pipeline и в source pack не зафиксированы.Ожидаемый результат: вы находите баланс между сохранением структуры и свободой стилизации, а при нескольких каналах контроля не получаете конфликтующих сигналов.
Как проверить, что всё работает
- Сравните контрольное изображение и результат. Официальные примеры предлагают оценивать именно эту пару: control image и generated image.
- Сделайте второй прогон без ControlNet. Используйте тот же prompt, но без контрольного сигнала. Если ControlNet работает, контуры, поза, глубина или структура сцены будут сохраняться заметно лучше в варианте с контролем.
- Проверьте не стиль, а геометрию. Контроль прежде всего относится к пространственной структуре, а не к полной идентичности текстуры или цвета.
- Для Multi-ControlNet проверьте оба ограничения сразу. Например, один канал должен удерживать контур, а второй — дополнительную структуру. Если один из сигналов исчез, проблема обычно в масштабе или размере control images.
Частые ошибки и исправления
- ❌ Ошибка: модель не появляется в AUTOMATIC1111.
✅ Решение: проверьте, что файл лежит именно вmodels/ControlNetи имеет поддерживаемое расширение.pth,.safetensorsили.bin. Затем обновите выпадающий список моделей. - ❌ Ошибка: вы установили ControlNet 1.1 и ожидаете, что это уже расширение A1111.
✅ Решение: не путайте артефакты модели и UI-расширение. РепозиторийControlNet-v1-1-nightlyпрямо предупреждает, что это не расширение для A1111. Для WebUI нужен именноMikubill/sd-webui-controlnet. - ❌ Ошибка: контроль почти не заметен.
✅ Решение: проверьте, что тип модели соответствует типу control image, и увеличьтеcontrolnet_conditioning_scaleв Diffusers или аналогичную силу контроля в WebUI. - ❌ Ошибка: результат слишком жёстко повторяет control image и теряет вариативность.
✅ Решение: уменьшите силу контроля. ControlNet должен удерживать структуру, а не полностью заменять творческую часть генерации. - ❌ Ошибка: внешний API не может управлять ControlNet в A1111.
✅ Решение: запускайте WebUI с--apiи включитеAllow other scripts to control this extension, как требует официальный репозиторий расширения. - ❌ Ошибка: Multi-ControlNet даёт странные или конфликтующие результаты.
✅ Решение: выровняйте размеры контрольных изображений и задайте отдельные scale для каждого канала, как рекомендует документация Diffusers.
Безопасность и ограничения
- Нет единой официальной цены. Стоимость зависит от того, где вы запускаете модель: локально, в облаке или у внешнего провайдера.
- Не все сведения одинаково свежие. В source pack есть предупреждение, что часть wiki-материалов и репозиториев датирована 2024 годом и может отставать от текущих релизов. Перед публикацией или внедрением сверяйтесь с последними release/changelog-страницами.
- Не путайте разные сущности. ControlNet 1.1 — это официальный релиз моделей и заметок по ним, а не A1111-расширение.
- Совместимость моделей нужно проверять отдельно. В source pack есть отдельная неопределённость по SDXL-картам: разные документы могут отражать разное состояние экосистемы. Для практической работы смотрите карточку конкретной модели.
- API-доступ расширяет поверхность управления. Если вы включаете
--apiи разрешаете внешним скриптам управлять расширением, учитывайте это как организационное и инфраструктурное ограничение вашей среды.
Что делать дальше
- Если вам нужен терминологический минимум по архитектуре и ограничениям, откройте глоссарий: ControlNet.
- Если вы параллельно настраиваете контроль в текстовых моделях, сравните другой класс рычагов управления: как настроить Temperature и Top-p для контроля генерации.
- Если вы хотите системнее управлять сложными запросами и пайплайнами, посмотрите как использовать meta-prompting для сложных задач.
- Для рабочего процесса команды зафиксируйте один эталонный prompt, один control image и один диапазон scale — так вам будет проще замечать регрессии после обновлений моделей.
Источники
- Adding Conditional Control to Text-to-Image Diffusion Models
- GitHub – lllyasviel/ControlNet: Let us control diffusion models!
- ControlNet · Hugging Face
- GitHub – Mikubill/sd-webui-controlnet: WebUI extension for ControlNet
- Model download · Mikubill/sd-webui-controlnet Wiki · GitHub
- GitHub – lllyasviel/ControlNet-v1-1-nightly: Nightly release of ControlNet 1.1
Вопросы и ответы
Можно ли использовать ControlNet без prompt?
Да, в документации Diffusers описан guess_mode: генерация может опираться на control input даже без prompt. Но для воспроизводимого результата всё равно лучше начинать с явного prompt и только потом тестировать этот режим.
Можно ли подключить несколько ControlNet одновременно?
Да. Документация Diffusers подтверждает Multi-ControlNet: можно передавать список моделей ControlNet и список контрольных изображений, а для каждого канала задавать собственный scale.
Куда класть модели в AUTOMATIC1111?
В официальной wiki расширения указана папка models/ControlNet. Поддерживаемые файлы обычно имеют расширения .pth, .safetensors или .bin.
ControlNet 1.1 — это уже расширение для WebUI?
Нет. Официальная страница ControlNet-v1-1-nightly отдельно подчёркивает, что это не A1111-расширение. Для WebUI нужен репозиторий Mikubill/sd-webui-controlnet.
Сколько стоит использование ControlNet?
Единой официальной цены нет. Источники прямо указывают, что стоимость зависит от используемого хостинга, GPU, облачной инфраструктуры и условий конкретной модели или сервиса.