OpenPose Editor в Stable Diffusion: полное руководство по управлению позами

Когда сгенерированный персонаж в Stable Diffusion снова получается с лишними пальцами и неестественным положением рук, причина почти всегда одна — модель не понимает, в какой позе должна стоять фигура, и дорисовывает анатомию на своё усмотрение. Решает эту задачу связка ControlNet с препроцессором OpenPose и встроенным редактором скелета, который позволяет вручную задать положение каждого сустава до начала генерации.

В этом материале разберём, как устроен OpenPose Editor, какие способы редактирования поз доступны в Automatic1111 и ComfyUI, как перенести позу с референсной фотографии и что делать, если скелет не распознаётся или руки всё равно «ломаются». Материал ориентирован на практику: только проверяемые действия без лишней теории.

Что такое OpenPose и зачем нужен редактор

OpenPose — это технология распознавания ключевых точек тела человека: голова, плечи, локти, запястья, бёдра, колени и другие суставы. В экосистеме Stable Diffusion она используется как препроцессор для ControlNet: нейросеть строит «скелет» позы, а модель генерации рисует персонажа строго по этому каркасу, не отклоняясь от заданного положения.

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

Важно понимать ограничение: OpenPose передаёт только положение суставов, но не внешность, одежду и стиль. Всё остальное по-прежнему описывается текстовым промптом, поэтому редактор — это инструмент композиции, а не замена промптинга.

Способы редактирования поз: встроенный редактор и внешние инструменты

В зависимости от интерфейса, которым вы пользуетесь, доступны разные варианты редактирования скелета. В Automatic1111 с установленным расширением sd-webui-controlnet есть отдельная вкладка редактора поз, а также поддержка сторонних онлайн-редакторов. В ComfyUI редактирование обычно выполняется через специальные ноды или внешние сервисы с последующей загрузкой готового изображения скелета.

  • 🦴 Встроенный редактор ControlNet — позволяет перетаскивать точки скелета мышью прямо в веб-интерфейсе, добавлять и удалять фигуры.
  • 🌐 Онлайн-редакторы поз — браузерные инструменты, где скелет собирается с нуля, а результат сохраняется как картинка и загружается в ControlNet.
  • 📷 Извлечение из фото — препроцессор OpenPose сам строит скелет по референсному снимку, после чего точки можно скорректировать вручную.
  • 🧍 3D-манекены — программы вроде DesignDoll или Magic Poser, где поза собирается на 3D-модели и экспортируется как референс.

Выбор зависит от задачи. Если нужно быстро поправить одну руку на распознанной позе — достаточно встроенного редактора. Если поза собирается с нуля с точным ракурсом — удобнее 3D-манекен, потому что двумерный скелет плохо передаёт перспективу и повороты корпуса в глубину.

📊 Какой способ задания позы вы используете чаще всего?
Встроенный редактор ControlNet
Скелет из референсного фото
Онлайн-редактор поз
3D-манекен (DesignDoll и др.)

Установка и подготовка ControlNet с OpenPose

Перед началом работы убедитесь, что расширение ControlNet установлено и модели препроцессора загружены. В Automatic1111 расширение ставится через вкладку Extensions → Install from URL с репозиторием sd-webui-controlnet, после чего интерфейс перезапускается. Модели ControlNet (файлы вида control_v11p_sd15_openpose.pth для SD 1.5) размещаются в папке models/ControlNet внутри директории расширения или в общей папке моделей — расположение зависит от версии расширения, поэтому сверьтесь с его документацией.

⚠️ Внимание: модели OpenPose для SD 1.5 и SDXL несовместимы между собой. Если вы генерируете на SDXL, а ControlNet-модель собрана под SD 1.5, скелет либо не применится, либо генерация завершится ошибкой. Проверяйте соответствие версии модели ControlNet базовой модели.

После установки откройте выпадающий список препроцессоров в панели ControlNet и найдите варианты семейства openpose. Их несколько, и различия между ними существенны для результата.

ПрепроцессорЧто распознаётКогда использовать
openposeТело, лицо, базовые точкиСтандартные позы в полный рост
openpose_faceТело + детальные точки лицаПортреты, контроль направления взгляда
openpose_handТело + суставы пальцевКогда критично положение кистей рук
openpose_fullТело, лицо и руки одновременноКомплексный контроль всей фигуры
dw_openpose_fullУлучшенное распознавание всех точекСложные позы, несколько человек в кадре

Если в списке препроцессоров нужный вариант отсутствует, возможная причина — устаревшая версия расширения. Обновите его через вкладку Extensions → Check for updates и перезапустите веб-интерфейс.

☑️ Подготовка OpenPose к работе

Выполнено: 0 / 4

Как отредактировать позу во встроенном редакторе

Рабочий цикл выглядит так: загрузите референсное изображение в блок ControlNet, выберите препроцессор openpose и нажмите кнопку предпросмотра (обычно отмечена значком взрыва или лупы). Препроцессор построит скелет, и рядом появится возможность открыть редактор для ручной правки точек.

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

Как добавить второго персонажа на скелет

В редакторе поз есть функция добавления новой фигуры (обычно кнопка Add). Новый скелет появляется поверх существующего, его нужно отмасштабировать и расставить точки вручную. Учтите: чем больше персонажей, тем выше шанс, что модель «смешает» их черты — для нескольких фигур лучше снижать вес ControlNet или использовать региональные промпты.

Если редактируете позу с нуля без референса, начинайте с крупных точек: таз, плечи, голова. Сначала задайте общий силуэт и наклон корпуса, и только потом двигайте конечности. Обратный порядок — сначала руки, потом корпус — почти всегда приводит к неестественным позам, потому что конечности оказываются оторваны от логики положения тела.

Типичные проблемы и их решения

Самая частая жалоба — «поза применяется, но руки всё равно кривые». Здесь возможная причина в том, что используется базовый препроцессор openpose, который передаёт только запястья, но не пальцы. Переключитесь на openpose_hand или dw_openpose_full и проверьте, появились ли точки пальцев на превью скелета.

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

  • 🔍 Скелет не появляется на превью — проверьте, что выбран препроцессор, а не только модель; оба параметра должны быть заданы.
  • Лишние фигуры на превью — препроцессор распознал объекты фона как людей; удалите лишние скелеты в редакторе.
  • ⚖️ Поза применяется слишком жёстко — снизьте параметр Control Weight, чтобы дать модели свободу в деталях.
  • 🖼️ Ракурс не совпадает — двумерный скелет не передаёт глубину; для сложных ракурсов используйте 3D-манекен как источник референса.
⚠️ Внимание: при генерации в высоком разрешении с последующим Hires. fix поза может «плыть» — детализатор перерисовывает мелкие области и иногда искажает кисти. Если это происходит, применяйте ControlNet и на этапе апскейла, либо снижайте denoising strength на втором проходе.

Параметры ControlNet для точного следования позе

Три параметра определяют, насколько строго генерация будет следовать скелету. Control Weight задаёт силу влияния: значения около 1.0 дают жёсткое следование, снижение до 0.6–0.8 оставляет модели пространство для естественной анатомии. Starting Control Step и Ending Control Step определяют, на каких этапах сэмплирования действует контроль.

Практический приём: завершайте действие ControlNet чуть раньше конца генерации (например, Ending Control Step около 0.8–0.9). На финальных шагах модель дорисует мелкие детали свободно, что часто улучшает кожу, волосы и ткани, не нарушая общую позу. Точные значения подбираются экспериментально под конкретную модель — универсальных цифр здесь нет.

Режим Control Mode (Balanced / My prompt is more important / ControlNet is more important) тоже влияет на баланс. Если поза игнорируется ради красивой картинки, переключите приоритет в пользу ControlNet. Если скелет «душит» композицию — наоборот.

Альтернативы и дополнения к OpenPose

OpenPose — не единственный способ контроля фигуры. Препроцессор DensePose строит карту поверхности тела, что лучше работает для обтягивающей одежды. Depth и Normal передают объём сцены и полезны, когда важен ракурс, а не конкретные суставы. Нередко лучший результат даёт комбинация двух блоков ControlNet: OpenPose для позы плюс Depth для композиции.

Для аниме-моделей семейства Animagine или Pony поведение OpenPose может отличаться от фотореалистичных чекпоинтов — часть таких моделей обучена на схематичной анатомии и хуже следует детальным скелетам. В этом случае помогает упрощение скелета: уберите точки лица и пальцев, оставьте только корпус и конечности.

⚠️ Внимание: не запускайте одновременно несколько препроцессоров OpenPose на одном и том же референсе в разных блоках ControlNet — это не усилит контроль, а лишь удвоит расход видеопамяти и может привести к конфликту сигналов. Комбинируйте разные типы контроля (поза + глубина), а не дублируйте один.
Работа с OpenPose в ComfyUI

В ComfyUI препроцессоры OpenPose подключаются через ноды из пакетов вроде comfyui_controlnet_aux. Готовый скелет можно загрузить как изображение через ноду Load Image и подать напрямую в Apply ControlNet, минуя препроцессор, — это удобно, если поза собрана во внешнем редакторе. Схему нод сохраните как шаблон, чтобы не собирать заново.

Часто задаваемые вопросы

Можно ли использовать OpenPose Editor без референсного фото?

Да. Во встроенном редакторе и онлайн-инструментах скелет собирается с нуля: вы добавляете фигуру и вручную расставляете суставы. Для сложных ракурсов удобнее 3D-манекены, из которых поза экспортируется как изображение.

Почему ControlNet игнорирует загруженный скелет?

Проверьте три вещи: включён ли сам блок ControlNet (галочка Enable), выбрана ли модель OpenPose, соответствующая вашей базовой модели, и не слишком ли низкий Control Weight. Если скелет загружен как готовое изображение, препроцессор следует установить в none, чтобы он не перезаписал вашу картинку.

Какой препроцессор выбрать для контроля кистей рук?

Используйте openpose_hand или openpose_full — они распознают суставы пальцев. Базовый openpose передаёт только положение запястий, поэтому пальцы генерируются свободно и часто с ошибками.

Работает ли OpenPose с моделями SDXL?

Работает, но только с ControlNet-моделями, обученными под SDXL. Модели для SD 1.5 несовместимы. Набор доступных препроцессоров и моделей для SDXL отличается, поэтому проверяйте актуальный список в документации вашей версии расширения.

Как задать позу для двух и более персонажей?

В редакторе добавьте дополнительные фигуры и расставьте их точки вручную. Учтите, что при нескольких персонажах модель может смешивать их внешность — помогает снижение веса ControlNet, чёткое разделение персонажей в промпте и достаточное расстояние между фигурами на скелете.