Найти тему
ИИ для "чайников!"

A1111 ControlNet - объяснение на пальцах для детей

ControlNet - это как Image2Image с суперспособностями. Он дает больше контроля и позволяет создавать изображения с помощью Txt2Img и Img2Img более точно и детально.

ControlNet - это расширение для программы Stable Diffusion версии 1.5 и моделей, обученных на базе Stable Diffusion 1.5.

Но, увы, не работает с моделями Stable Diffusion 2.x, которые доступны в настоящее время.

Где взять расширение ControlNet?

Если вы используете пользовательский интерфейс Automatic1111, вы можете установить расширение ControlNet напрямую из вкладки Extensions. Оно может быть спрятано среди других расширений, но его можно найти, если ввести в поиск "sd-webui-controlnet".

Установка расширения в Automatic1111
Установка расширения в Automatic1111

Чтобы использовать ControlNet, вам нужно скачать несколько специальных моделей. На текущий момент, на 23 февраля 2023 года, доступно 4 различных варианта моделей.

1. Более компактные модели SafeTensor, которые подойдут почти каждому пользователю, можно найти на Huggingface (официальная ссылка от создателя расширения Mikubill): https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main

  • Альтернативная ссылка Civitai (неофициальная ссылка): https://civitai.com/models/9251/controlnet-pre-trained-models
  • Обратите внимание, что на официальной странице Huggingface также есть дополнительные модели с префиксом "t2iadapter_"; это экспериментальные модели и не являются основными моделями ControlNet. См. раздел "Experimental Text2Image" ниже.

2. Альтернативные модели SafeTensor с применением разности. Они получены из того же источника, что и обычные модели, но отличаются способом извлечения соответствующей информации. На текущий момент, между обычными моделями и моделями, использующими разность, практически нет разницы, кроме некоторых незначительных эстетических отличий. Просто перечисляем их здесь для полноты картины, на случай, если что-то изменится в будущем.

3. Экспериментальные адаптеры Text2Image с префиксом "t2iadapter_". Это более компактные версии основных обычных моделей. Сейчас, они являются экспериментальными, но работают так же, как обычная модель, но с меньшим размером файла.

4. Если вам нужны полные исходные модели (по какой-то причине), их можно найти на HuggingFace: https://huggingface.co/lllyasviel/ControlNet

Загрузите все компактные модели SafeTensor с Huggingface. Мы рассмотрим каждую из них позже. Huggingface также включает конфигурационный файл "cldm_v15.yaml". Расширение ControlNet уже должно включать этот файл, но будет не лишним скачать его снова, на всякий случай.

Загрузите модели и конфигурационный файл .yaml с сайта Huggingface
Загрузите модели и конфигурационный файл .yaml с сайта Huggingface

Как использовать ControlNet расширение в Automatic1111?

С момента написания этой статьи, 22 февраля 2023 года, существует 8 различных моделей и 3 экспериментальные модели t2iadapter:

  • control_canny-fp16.safetensors
  • control_depth-fp16.safetensors
  • control_hed-fp16.safetensors
  • control_mlsd-fp16.safetensors
  • control_normal-fp16.safetensors
  • control_openpose-fp16.safetensors
  • control_scribble-fp16.safetensors
  • control_seg-fp16.safetensors
  • t2iadapter_keypose-fp16.safetensors (необязательная, экспериментальная)
  • t2iadapter_seg-fp16.safetensors (необязательная, экспериментальная)
  • t2iadapter_sketch-fp16.safetensors (необязательная, экспериментальная)

Эти модели необходимо разместить в папке "extensions\sd-webui-controlnet\models", где установлен Automatic1111. После того, как вы установили расширение и поместили модели в папку, перезапустите Automatic1111.

После перезапуска Automatic1111 и возвращения на вкладку Txt2Img, вы увидите новый раздел "ControlNet" внизу, который можно развернуть.

-3

Божечки, сколько же здесь виджетов и гаджетов!

Да, так оно и есть. Я пройдусь по каждому из этих параметров детально, чтобы помочь описать их назначение (надеюсь). Чтобы соответствовать стандартам ISO для документации по Stable Diffusion, я буду использовать изображение кошко-девушки для моих примеров.

Пример изображения кошко-девочки для стандартной документации Stable Diffusion в соответствии с ISO.
Пример изображения кошко-девочки для стандартной документации Stable Diffusion в соответствии с ISO.

В этом руководстве вы будете загружать изображение для предварительной обработки в специальное изображение "detectmap" для выбранной модели ControlNet. Если вы являетесь опытным пользователем, вы можете непосредственно загрузить свое собственное изображение "detectmap" без необходимости предварительной обработки изображения.

  • Это изображение будет использоваться для управления Stable Diffusion, чтобы он делал то, что вам нужно.
  • "Detectmap" - это просто специальное изображение, которое модель использует для более точного определения композиции и структуры, чтобы управлять вашим запросом.
  • Вы можете щелкнуть мышью и перетащить изображение в форму для загрузки, или для более крупных изображений нажать на маленькую кнопку "Изображение" в верхнем левом углу, чтобы выбрать файл на вашем компьютере для загрузки.
  • После загрузки изображения вы увидите стандартные кнопки, такие как в Img2Img, чтобы наносить пометки на загруженном изображении.
Загрузите изображение в ControlNet
Загрузите изображение в ControlNet

Ниже приведены некоторые параметры, которые позволяют вам делать снимок с веб-камеры, если это позволяет оборудование и политика безопасности / конфиденциальности

Ниже приведены некоторые флажки для различных опций:

 Флажки изображения ControlNet
Флажки изображения ControlNet
  • Включить (Enable): по умолчанию расширение ControlNet отключено. Установите флажок, чтобы включить его.
  • Инвертировать цвет ввода (Invert Input Color): используется для пользовательских изображений "detectmap". Препроцессоры и модели, которые используют черно-белые изображения "detectmap", ожидают белых линий на черном фоне. Однако, если у вас есть изображение "detectmap", на котором черные линии на белом фоне (обычный случай - это нарисованная вами набросочная картина), то это позволит изменить цвета на те, которые ожидаются моделями. Не нужно отмечать эту опцию, если вы используете препроцессор для создания "detectmap" из импортированного изображения.
  • RGB в BGR (RGB to BGR): используется для пользовательских изображений "detectmap" типа нормальной карты, которые могут хранить информацию о цвете изображения в другом порядке, чем ожидается расширением. Не нужно отмечать эту опцию, если вы используете препроцессор для создания "detectmap" нормальной карты из импортированного изображения.
  • Низкий VRAM (Low VRAM): помогает системам с менее чем 6 GiB VRAM за счет замедления обработки.
  • Угадывание (Guess): экспериментальная опция, при которой вы не используете положительный и отрицательный запрос, и ControlNet попытается распознать объект на импортированном изображении с помощью текущего препроцессора.
    Полезно для получения близких вариаций входного изображения.

Ползунки веса и направления определяют, насколько большое влияние ControlNet будет иметь на композицию.

ControlNet веса и сила направления
ControlNet веса и сила направления

Слайдер "Вес" (Weight slider): Он определяет, насколько важным является изображение ControlNet для общего запроса. Это примерно аналогично использованию круглых скобок в Automatic1111 для выделения чего-то. Например, вес "1.15" соответствует "(prompt:1.15)".

Слайдер "Сила направления" (Guidance strength slider:): Это процент от общего количества шагов, на которые будет применяться ControlNet. Это примерно аналогично редактированию запроса в Automatic1111. Например, направление "0.70" соответствует "[prompt::0.70]", где оно применяется только к первым 70% шагов, а затем не используется в последние 30% обработки.

Режим изменения размера (Resize Mode): Он определяет, как будет изменяться размер detectmap при загрузке изображения, если его размеры не совпадают с шириной и высотой настроек Txt2Img. Это не относится к слайдерам "Ширина холста" и "Высота холста" в ControlNet; они используются только для ручных пользовательских штрихов.

ControlNet - resize modes
ControlNet - resize modes
  • Envelope (Outer Fit): Соответствие ширины и высоты Txt2Image размерам изображения ControlNet. Импортированное изображение в ControlNet будет масштабировано вверх или вниз до тех пор, пока ширина и высота настроек Txt2Img не поместятся внутри изображения ControlNet. Сохраняется соотношение сторон изображения ControlNet.
  • Scale to Fit (Inner Fit): Соответствие изображения ControlNet ширине и высоте Txt2Img. Импортированное изображение в ControlNet будет масштабировано вверх или вниз до тех пор, пока оно не будет помещаться внутри ширины и высоты настроек Txt2Img. Сохраняется соотношение сторон изображения ControlNet.
  • Just Resize:: Изображение ControlNet будет растянуто или сжато до соответствия ширине и высоте настроек Txt2Img.

Секция "Холст" ("Canvas") используется только при создании собственных эскизов напрямую в ControlNet, в отличие от импортирования изображения.

  • "Ширина холста (Canvas Width)" и "Высота холста (Canvas Height)" предназначены только для пустого холста, созданного "Создать пустой холст (Create blank canvas)". Они не влияют на импортированные изображения.

Preview annotator result позволяет быстро увидеть, как выбранный препроцессор превратит ваше загруженное изображение или эскиз в detectmap для ControlNet.

Очень полезно для экспериментирования с разными препроцессорами.

Hide annotator result удаляет предварительный просмотр.

ControlNet preprocessor preview
ControlNet preprocessor preview

Prepocessor: главный инструмент ControlNet. Это то, что преобразует загруженное изображение в карту обнаружения, которую ControlNet может использовать для управления Stable Diffusion.

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

Сейчас существует 11 различных Prepocessor'ов:

Canny: создает простые четкие контуры пикселей в областях высокого контраста. Очень детальный, но может выбирать нежелательный шум.

Canny edge detection preprocessor - пример
Canny edge detection preprocessor - пример

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

Если вы не знакомы с картами глубины, то светлые области ближе к наблюдателю, а темные области находятся дальше (думайте о том, что они "убегают в тень").

Depth preprocessor - пример
Depth preprocessor - пример

Depth_lres: создает карту глубины, подобную "Depth", но обладает большим контролем над различными настройками. Эти настройки могут использоваться для создания более подробной и точной карты глубины.

Depth_lres preprocessor - пример
Depth_lres preprocessor - пример

Hed: создает плавные контуры вокруг объектов. Он широко используется, поскольку обеспечивает хорошую детализацию, как и "Canny", но с меньшим количеством шума и более эстетически приятными результатами. Очень полезен для стилизации и перекраски изображений.

Название означает "Целостно-вложенное обнаружение граней (Holistically-Nested Edge Detection)"

Hed preprocessor - пример
Hed preprocessor - пример

MLSD: Создает прямые линии. Очень полезно для архитектуры и других объектов, созданных человеком, с ярко выраженными прямыми контурами. Не столь хорошо работает с органическими, изогнутыми объектами.

Название означает "Мобильное обнаружение сегментов линий (Mobile Line Segment Detection)".

MLSD preprocessor - пример
MLSD preprocessor - пример

Normal Map: Создает базовую оценку нормалей для карты на основе изображения. Сохраняет много деталей, но может приводить к непредвиденным результатам, поскольку нормальная карта является только лучшим предположением на основе изображения, а не создается должным образом в программе 3D-моделирования.

Если вы не знакомы с нормальными картами, три цвета на изображении, красный, зеленый и синий, используются 3D-программами для определения насколько "гладким" или "шероховатым" является объект. Каждый цвет соответствует направлению, например, влево / вправо, вверх / вниз, к / от объекта.

Normal Map preprocessor - пример
Normal Map preprocessor - пример

OpenPose: Создает базовый скелет в стиле OpenPose для фигуры. Очень часто используется, поскольку несколько скелетов OpenPose могут быть составлены вместе в одном изображении и использоваться для лучшего управления Stable Diffusion, чтобы создавать несколько согласованных объектов.

OpenPose preprocessor - пример
OpenPose preprocessor - пример

Pidinet: Создает плавные контуры, что-то среднее между Scribble и Hed

Название расшифровывается как "Сеть разности пикселей".

Pidinet preprocessor - пример
Pidinet preprocessor - пример

Scribble: Используется с опцией "Create Canvas" для рисования базовой картины в ControlNet.

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

Fake scribble: Проходят по изображению, чтобы создать базовый контур картины.

Fake scribble preprocessor - пример
Fake scribble preprocessor - пример

Segmentation: Разделяет изображение на связанные области или сегменты, которые относительно связаны друг с другом.

Это примерно аналогично использованию маски изображения в Img2Img.

Segmentation preprocessor - пример
Segmentation preprocessor - пример

Model: применяет изображение "detectmap" к текстовому запросу при генерации нового набора изображений.

ControlNet models
ControlNet models

Доступные опции зависят от того, какие модели вы загрузили из вышеприведенных ссылок и поместили в папку "extensions\sd-webui-controlnet\models", где бы ни был установлен Automatic1111.

Используйте кнопку с символом круглой стрелки "🔄", чтобы обновить список моделей после добавления или удаления моделей из папки.

Каждая модель названа по типу предварительной обработки, для которой она была разработана, но это не мешает вам добавлять немного анархии и смешивать предварительно обработанные изображения с разными моделями.

Например, предварительная обработка "Depth" и "Depth_lres" предназначена для использования с моделью "control_depth-fp16".

Некоторые предварительные обработчики также имеют модель адаптера с похожим названием. Например, предварительная обработка "OpenPose" может использоваться как с моделью "control_openpose-fp16.safetensors", так и с моделью адаптера "t2iadapter_keypose-fp16.safetensors".

На текущий момент, предварительная обработка Pidinet не имеет "официальной" модели, которая бы с ней соответствовала. Модель "Scribble" работает особенно хорошо, поскольку реализация расширения Pidinet создает гладкие, сплошные линии, которые особенно подходят для набросков.