Открыть сервис

ControlNet

ControlNet — это нейросетевая архитектура, предназначенная для точного управления процессом генерации изображений в диффузионных моделях, в первую очередь в Stable Diffusion. Она позволяет задавать пространственные, геометрические и структурные условия (например, позу человека, контуры объекта, глубину сцены или карту сегментации), которым должно соответствовать итоговое изображение, сохраняя при этом высокое качество и разнообразие генерируемого контента. ControlNet была предложена исследователями из Стэнфордского университета (Lvmin Zhang и Maneesh Agrawala) в феврале 2023 года.

История

До появления ControlNet управление генерацией изображений в диффузионных моделях было ограничено. Основные методы включали текстовые подсказки (prompt engineering), маскирование (inpainting) и грубые наброски (scribble). Однако эти подходы не обеспечивали точного контроля над пространственными атрибутами, такими как поза персонажа или композиция сцены. ControlNet решил эту проблему, предложив метод, при котором дополнительная управляющая информация (например, карта глубины или скелетная поза) подаётся на вход модели в виде дополнительного канала, не требуя переобучения всей базовой модели.

Архитектура была представлена в феврале 2023 года и быстро получила широкое распространение в сообществе пользователей Stable Diffusion благодаря своей эффективности и совместимости с существующими моделями (например, Stable Diffusion 1.5, 2.1, XL). ControlNet стал одним из ключевых инструментов в области генеративного ИИ, позволив художникам, дизайнерам и разработчикам создавать изображения с высокой степенью контроля.

Принцип работы

ControlNet работает на основе механизма, называемого «замороженная копия» (frozen copy) и «обучаемый блок» (trainable copy). Базовая диффузионная модель (например, Stable Diffusion) остаётся неизменной — её веса заморожены. Параллельно создаётся её копия, которая обучается на задаче управления. Эта копия принимает на вход не только шум и текстовую подсказку, но и дополнительное условие (control image) — например, карту глубины или изображение скелета.

Основные этапы работы:

  1. Подготовка управляющего сигнала: Пользователь предоставляет изображение-условие (например, фотографию, контурный рисунок или карту глубины). Это изображение может быть получено с помощью внешних алгоритмов (например, OpenPose для позы, MiDaS для глубины).
  2. Кодирование: Управляющее изображение подаётся на вход обученной копии ControlNet, которая извлекает из него пространственные признаки.
  3. Интеграция с основной моделью: Признаки, извлечённые ControlNet, добавляются к промежуточным представлениям замороженной модели на каждом шаге диффузии. Это позволяет направлять процесс генерации в соответствии с заданными условиями.
  4. Генерация: Процесс диффузии (обычно 20–50 шагов) идёт с учётом управляющего сигнала. На выходе получается изображение, соответствующее как текстовой подсказке, так и пространственным условиям.

Важной особенностью ControlNet является то, что обучение происходит только на небольшом наборе данных (например, 50–100 тысяч пар «условие-изображение»), а не на миллионах, как для основной модели. Это делает обучение быстрым и доступным.

Виды и модальности ControlNet

ControlNet поддерживает множество типов управляющих сигналов. Каждый тип требует отдельной обученной модели (контрольной точки). Наиболее распространённые модальности:

  • Canny Edge (контуры): Использует детектор границ Кэнни для выделения контуров. Позволяет сохранять чёткие границы объектов.
  • Depth (глубина): Использует карту глубины (например, от MiDaS или ZoeDepth) для задания трёхмерной структуры сцены.
  • OpenPose (поза): Использует скелетную позу человека (ключевые точки тела) для точного контроля над положением персонажа.
  • Scribble (набросок): Позволяет задавать грубые линии или наброски, которые модель интерпретирует как контуры.
  • Segmentation (сегментация): Использует карту семантической сегментации (например, от модели OneFormer), где каждый цвет соответствует определённому классу объектов (небо, земля, человек, здание).
  • Normal Map (карта нормалей): Использует карту нормалей для контроля над освещением и рельефом поверхности.
  • MLSD (линии): Использует детектор прямых линий (например, для архитектурных сцен).
  • Lineart (линейный рисунок): Использует чёрно-белые линии, похожие на карандашный рисунок.
  • Soft Edge (мягкие края): Использует мягкие контуры, полученные с помощью фильтра HED (Holistically-Nested Edge Detection).
  • IP-Adapter (адаптер изображения): Позволяет использовать другое изображение как стилистический референс (не путать с ControlNet, но часто используется вместе).

Применение

ControlNet нашёл широкое применение в различных областях:

  • Искусство и дизайн: Художники используют ControlNet для создания иллюстраций, комиксов, концепт-артов, где требуется точное соблюдение позы, композиции или стиля.
  • Архитектура и интерьер: Архитекторы применяют ControlNet для генерации изображений зданий и интерьеров на основе планов, эскизов или карт глубины.
  • Анимация и кино: ControlNet используется для создания раскадровок, анимации персонажей (с сохранением позы) и генерации фонов.
  • Медицина и наука: В ограниченных объёмах — для визуализации медицинских данных (например, МРТ или КТ) и генерации синтетических данных для обучения моделей.
  • Игры: Разработчики игр используют ControlNet для создания текстур, спрайтов и концепт-артов на основе низкополигональных моделей.

Преимущества и ограничения

Преимущества:

  • Точность: Позволяет задавать конкретные пространственные условия, что невозможно с помощью только текстовых подсказок.
  • Совместимость: Работает с большинством моделей Stable Diffusion без необходимости их переобучения.
  • Гибкость: Поддерживает множество типов управляющих сигналов, которые можно комбинировать.
  • Открытость: Исходный код и модели распространяются бесплатно (обычно под лицензией Apache 2.0 или CreativeML Open RAIL-M).

Ограничения:

  • Зависимость от качества управляющего сигнала: Если входное условие низкого качества (например, размытая карта глубины), результат может быть неудовлетворительным.
  • Вычислительные затраты: Добавление ControlNet увеличивает время генерации и потребление памяти (особенно при использовании нескольких модальностей одновременно).
  • Ограничения по стилю: ControlNet лучше работает с реалистичными изображениями; для абстрактных или стилизованных работ может потребоваться дополнительная настройка.
  • Необходимость в обучении: Для новых типов управляющих сигналов требуется обучение отдельной контрольной точки.

Интересные факты

  • ControlNet был создан Lvmin Zhang, который также известен своей работой над алгоритмом стилизации изображений StyleGAN.
  • Архитектура ControlNet была вдохновлена методами переноса стиля и адаптации доменов, где замороженная модель используется для сохранения качества, а обучаемая — для внесения изменений.
  • ControlNet стал одним из первых методов, который позволил точно управлять позой человека в Stable Diffusion, что было невозможно с помощью стандартных текстовых подсказок.
  • Существуют расширения ControlNet для популярных графических интерфейсов, таких как Automatic1111 WebUI, ComfyUI и InvokeAI.

Критика

Основные критические замечания в адрес ControlNet связаны с его вычислительной сложностью и необходимостью в дополнительных инструментах для подготовки управляющих сигналов. Например, для получения карты глубины или позы требуется отдельная модель (OpenPose, MiDaS), что усложняет рабочий процесс. Кроме того, некоторые пользователи отмечают, что ControlNet может «зашумлять» изображение, если параметры управления (weight) установлены слишком высоко.

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

Источники

  • Zhang, L., & Agrawala, M. (2023). Adding Conditional Control to Text-to-Image Diffusion Models. arXiv:2302.05543.
  • Документация проекта ControlNet на GitHub (lllyasviel/ControlNet).
  • Официальные репозитории моделей ControlNet на Hugging Face.
  • Статьи и обзоры на платформах Towards Data Science, Medium и Hugging Face Blog.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →