ControlNet в ComfyUI: поза, глубина и контуры
Промптом позу не объяснишь - покажи модели скелет
ControlNet в ComfyUI простыми словами: pose, depth, canny и scribble, зачем нужен препроцессор и нода Apply ControlNet и как держать позу и композицию под контролем.
Что такое ControlNet простыми словами
Представь, что заказываешь портрет по телефону. Говоришь художнику: «нарисуй девушку в красном пальто на фоне города». Художник толковый, но рисует по-своему. Поза не та. Рука не там. Голова повёрнута куда-то вбок. И ты ничего не можешь сделать - словами позу не передашь. Слов просто не хватает.
А теперь ты вдобавок к словам присылаешь схему: вот тут стоит человек, вот так подняты руки, вот линия горизонта. Это и есть ControlNet. Текст отвечает на вопрос «что нарисовать». ControlNet - на вопрос «где это поставить и в какой позе».
Зачем ControlNet вайбкодеру
Ты собираешь генерацию из нод. И рано или поздно упрёшься в стену. Картинка красивая, но поза не та. Или персонаж стоит не там. Или ты хочешь превратить свой набросок в чистый арт. Промптом это не лечится - сколько ни пиши «руки вверх», модель всё равно решает за тебя.
Вот что ControlNet даёт, а промпт - нет:
- повторить позу с референса - своего фото, скриншота, чужой картинки;
- сохранить композицию и объём сцены, поменяв только стиль;
- превратить корявый набросок в чистый арт;
- сделать серию картинок в одной и той же компоновке.
Без ControlNet ты уговариваешь модель словами. С ControlNet - показываешь. Это разница между «попробуй угадать» и «делай вот так».
Как работает ControlNet: препроцессор и Apply ControlNet
Под капотом всё в два шага. Сначала референс надо перевести на язык схем. Потом эту схему подмешать в генерацию. Разберём оба.
Препроцессор: переводчик фото в схему
Препроцессор Препроцессор (preprocessor) - нода, которая берёт обычную картинку и вытаскивает из неё только нужный слой: скелет позы, карту глубины или контуры. Всё остальное выбрасывает. - это фильтр. Даёшь ему фото человека - он возвращает не фото, а скелет из палочек (режим pose). Или чёрно-белую карту глубины, где ближнее светлое, а дальнее тёмное (depth). Или одни контуры, как в раскраске (canny). Всё лишнее он отрезает. Остаётся чистая схема и ничего больше.
Apply ControlNet: где схема встречается с промптом
Нода Apply ControlNet - то самое место, где схема стыкуется с твоим текстом. Подаёшь в неё три вещи: загруженную модель ControlNet (отдельный файл под нужный тип), картинку-схему от препроцессора и свой кондишенинг (тот самый промпт после энкодера). На выходе - тот же промпт, но теперь «привязанный» к схеме.
Четыре режима ControlNet: pose, depth, canny, scribble
Режимов много, но новичку хватит четырёх. Думай о них как о четырёх способах «обвести» референс - каждый под свою задачу.
Pose (OpenPose): повторяем позу человека
Препроцессор - его часто зовут OpenPose - находит на фото человека и рисует его скелет из точек и палочек: плечи, локти, колени. Дальше модель ставит твоего персонажа ровно в эту позу. Цвет волос, одежду, фон задаёшь промптом - скелет держит только позу, и всё. Бывают расширенные версии: ловят ещё пальцы и мимику лица.
Depth: сохраняем объём и планы сцены
Карта глубины Карта глубины (depth map) - чёрно-белая картинка, где яркость показывает расстояние: что ближе к камере - светлее, что дальше - темнее. подсказывает модели, где у сцены передний план, а где задний. Удобно, когда хочешь сохранить расстановку и объём комнаты или пейзажа, а стиль поменять полностью. Геометрия на месте, наполнение - новое.
Canny: держим чёткие контуры
Canny оставляет от картинки только резкие линии-контуры - как в раскраске. Это самый строгий режим: модель почти точь-в-точь повторяет очертания объектов. То, что надо, когда нужно перекрасить или перерисовать в другом стиле, но форму трогать нельзя.
Scribble: оживляем набросок от руки
Scribble понимает грубые каракули. Нарисовал кружок-голову, палочки-руки, домик на фоне - модель достроит из этого нормальную картинку. Самый свободный режим: ты задаёшь общую идею, остальное берёт на себя модель.
Когда ControlNet нужен, а когда только мешает
- Нужна конкретная поза - повторить с фото или референса.
- Хочешь сохранить композицию сцены, поменяв только стиль.
- Есть набросок, который надо довести до чистого арта.
- Делаешь серию картинок в одной компоновке.
- Тебе всё равно, где и как - хватит обычного промпта.
- Нужна полная свобода модели - схема будет только связывать руки.
- Просто хочешь случайных вариантов для вдохновения.
- Нет подходящего референса - схему банально не из чего сделать.
Пример: задаём позу через ControlNet по шагам
Тебе нужен персонаж в эпичной позе: рука вытянута вперёд, будто кастует заклинание. Пишешь промпт в двадцатый раз - модель упрямо рисует руки по швам. Знакомо? Вот тут ControlNet и выручает.
Как это собрать, шаг за шагом:
- Найди или сделай фото-референс с нужной позой - сгодится и своё селфи в этой позе.
- Поставь через ComfyUI Manager набор препроцессоров ControlNet, если его ещё нет.
- Скачай модель ControlNet под тип pose и положи в папку моделей ControlNet.
- Загрузи референс нодой загрузки картинки.
- Прогони его через препроцессор позы - на выходе будет скелет из точек.
- Добавь ноду Apply ControlNet и подай в неё три входа: модель ControlNet, скелет и свой промпт.
- Дальше как обычно: сэмплер, декод, сохранение.
- Поза держится слишком жёстко или, наоборот, еле-еле? Крути параметр силы.
Частые ошибки новичка в ControlNet
- Скормил схему не той модели. Контуры в depth-модель - и на выходе каша. Тип к типу, всегда.
- Забыл про сам препроцессор. Подал в Apply ControlNet сырое фото вместо схемы - модель не понимает, чего от неё хотят.
- Не поставил набор препроцессоров. Ноды просто не появятся в поиске. Это не баг - это «не установил».
- Вечно задираешь силу на максимум. Слишком жёсткая схема душит модель и портит картинку. Попробуй ослабить.
- Ждёшь чуда от мутного скелета. Поза на референсе нечитаемая - препроцессор выдаст кривой скелет, и поза выйдет кривая.
- Думаешь, что ControlNet рисует за тебя. Он держит геометрию. Содержание и стиль - по-прежнему на промпте.
TL;DR - если коротко
- ControlNet - поводок для генерации: словами ты говоришь «что», а картинкой-схемой - «где и в какой позе».
- Препроцессор вытягивает из фото схему - скелет, глубину или контуры. Apply ControlNet подмешивает её в генерацию.
- Четыре рабочих режима: pose (поза), depth (объём и планы), canny (чёткие контуры), scribble (набросок от руки).
- Железное правило: препроцессор и модель ControlNet должны быть одного типа - canny к canny, depth к depth.
- Сила (strength) - натяжение поводка: выше - схема держит жёстче, ниже - модели больше воли.
- ControlNet не рисует за тебя. Он держит геометрию, а содержание и стиль - всё ещё работа промпта.