Описание
ControlNet — это новая архитектура нейронной сети, предназначенная для обеспечения точного условного управления диффузионными моделями типа «текст в изображение». Это достигается путем дублирования весов блоков диффузионной модели в заблокированную, оригинальную копию и обучаемую копию. Обучаемая копия учится учитывать специфические условия, такие как карты краев, карты глубины или позы человека, в то время как заблокированная копия сохраняет целостность оригинальной, готовой к производству диффузионной модели. Этот инновационный подход предотвращает разрушение предварительно обученных моделей во время дообучения, даже с небольшими наборами данных, что делает возможным обучение на персональном оборудовании.
Основной механизм ControlNet включает «нулевую свертку» — свертку 1x1 с нулевыми начальными весами и смещениями. Изначально эти нулевые свертки выдают нули, гарантируя, что ControlNet не вносит искажений в диффузионный процесс. По мере обучения эти слои учатся интегрировать условную информацию, не изменяя фундаментальные возможности базовой диффузионной модели. Этот метод вычислительно эффективен и требует лишь незначительно большего объема памяти GPU, чем оригинальная диффузионная модель.
ControlNet поддерживает широкий спектр входных данных для условий, включая края Canny, линии M-LSD, границы HED, наброски пользователя, позы человека, карты семантической сегментации и карты глубины. Он также предлагает «Режим угадывания» (Guess Mode), который позволяет модели выводить контент из карт управления даже без явных текстовых подсказок, открывая новые пути для творческих исследований. Компонуемость ControlNet позволяет осуществлять управление по нескольким условиям путем объединения нескольких экземпляров ControlNet. Кроме того, ControlNet может быть интегрирован с различными моделями сообщества, предлагая пользователям широкую гибкость.
Проект предоставляет несколько приложений Gradio для простого экспериментирования с различными типами управления, демонстрируя его практическое применение в генерации изображений. Он также включает скрипты для аннотирования данных и обучения пользовательских ControlNet, позволяя пользователям адаптировать технологию к своим конкретным потребностям. Открытый исходный код ControlNet, размещенный на GitHub, способствует сотрудничеству сообщества и дальнейшему развитию.
ControlNet особенно ценен для художников, дизайнеров, исследователей и разработчиков, работающих с генеративным ИИ, которым требуется более детальный контроль над синтезом изображений. Его способность использовать существующие диффузионные модели при добавлении точных условий делает его мощным инструментом для создания высокоспецифичного и стилизованного визуального контента. Гибкость в обучении и интеграции делает его доступным для широкого круга пользователей, от энтузиастов до продвинутых специалистов по ИИ.
Главное о ControlNet
Добавляет условное управление к диффузионным моделям
Сохраняет веса оригинальной диффузионной модели
Позволяет дообучение на небольших наборах данных
Поддерживает различные входные данные для условий (края, глубина, поза, наброски и т. д.)
Имеет «Режим угадывания» для генерации без подсказок
Компонуемый для управления по нескольким условиям
Совместим с диффузионными моделями сообщества
Режим с низким объемом VRAM для сред с ограниченными ресурсами
Включает приложения Gradio для различных типов управления
Предоставляет скрипты для аннотирования данных и обучения
Реализация с открытым исходным кодом доступна на GitHub
Поддерживает Stable Diffusion V1.5 и V2
Начало работы с ControlNet
Настройка среды: Создайте новую среду conda, используя предоставленный файл environment.yaml.
Загрузка моделей: Получите предварительно обученные модели ControlNet и модели детекторов со страницы Hugging Face.
Организация файлов: Поместите модели SD в 'ControlNet/models', а детекторы — в 'ControlNet/annotator/ckpts'.
Запуск приложений Gradio: Выполните скрипты Python для конкретных типов управления (например, gradio_canny2image.py).
Интеграция через API: Используйте архитектуру ControlNet в пользовательских конвейерах диффузионных моделей.
Обучение пользовательских моделей: Следуйте предоставленным инструкциям для обучения ControlNet на ваших собственных данных.
Исследование режима угадывания: Включите «Режим угадывания» в пользовательском интерфейсе для генерации изображений без подсказок.
Комбинирование ControlNet: Экспериментируйте с комбинированием нескольких ControlNet для управления по нескольким условиям.
Варианты использования ControlNet
- Условная генерация изображений
- Перенос художественного стиля
- Редактирование и манипулирование изображениями
- Синтез изображений на основе позы
- Генерация изображений из набросков
- Создание изображений с учетом глубины
- Управление семантической сегментацией
- Генерация изображений без подсказок





