Stable Diffusion | AI

Что мы будем делать сегодня? Использовать высокие технологии для генерации п0рно!

Превью этой статьи было сгенерировано с помощью модели – Inkpunk Diffusion.

Содержание

О Stable Diffusion

Для начала если вы хотите использовать Stable Diffusion исключительно со Stable Diffusion – вы скучный человек. Существует Stable Diffusion – как ПО. И Stable Diffusion – как модель нейросети.

Вам ничего не мешает использовать любую модель какую вы только захотите. Скачать вы их можете например тут civitai.com. Или же просто где нибудь в интернете.

Это статья рассказывает о Stable Diffusion, а так же объясняет как развернуть Stable Diffusion в первую очередь локально.

Если вы не знаете что такое Stable Diffusion

Stable Diffusion – это скрытая модель диффузии текста в изображение, способная генерировать от аниме до фотореалистичных изображений при любом вводе текста, культивирующая автономную свободу для создания невероятных изображений, дающая всем возможность создавать пикчи в течение нескольких секунд. В нескольких словах, вы вводите текст = пикча. Можно описать «вставить_тут» мечты.

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

Пикчи


Техническая часть

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


Как работает Stable Diffusion

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Давайте начнем разбираться со внутренностями модели, потому что это поможет нам объяснить ее компоненты, их взаимодействие и значение опций/параметров генерации изображений.

Компоненты Stable Diffusion

Stable Diffusion – это система, состоящая из множества компонентов и моделей. Это не единая монолитная модель.

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Мы начнем с общего обзора, а позже углубимся в подробности машинного обучения. Однако для начала можно сказать, что этот кодировщик текста – это специальная языковая модель Transformer (технически ее можно описать как текстовый кодировщик модели CLIP). Она получает на входе текст и выдает на выходе список чисел (вектор), описывающий каждое слово/токен в тексте.

Далее эта информация передаётся генератору изображений, который состоит из двух компонентов.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Генератор изображений выполняет два этапа:

1. Создание информации изображения

Этот компонент является секретным ингредиентом Stable Diffusion. Именно благодаря нему возник такой рост качества по сравнению с предыдущими моделями.

Этот компонент выполняется в несколько шагов (step), генерируя информацию изображения. Это параметр steps в интерфейсах и библиотеках Stable Diffusion, который часто по умолчанию имеет значение 50 или 100.

Этап создания информации изображения действует полностью в пространстве информации изображения (или в скрытом пространстве). Подробнее о том, что это значит, будет ниже. Это свойство ускоряет работу по сравнению с предыдущими моделями диффузии, работавшими в пространстве пикселей. Этот компонент состоит из нейросети UNet и алгоритма планирования.

Слово «диффузия» (diffusion) описывает происходящее в этом компоненте. Это пошаговая обработка информации, приводящая в конечном итоге к генерации высококачественного изображения (при помощи следующего компонента – декодера изображений).

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

2. Декодер изображений

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

На изображении выше мы видим три основных компонента (каждый со своей собственной нейросетью), из которых состоит Stable Diffusion:

  • ClipText для кодирования текста.

    – Входные данные: текст.
    – Выходные данные: 77 векторов эмбеддингов токенов, каждый в 768 измерениях.

  • UNet + Scheduler для постепенной обработки/диффузии информации в пространстве информации (скрытом пространстве).

    – Входные данные: эмбеддинги текста и исходный многомерный массив (структурированные списки чисел, также называемые тензором), состоящий из шума.
    – Выходные данные: массив обработанной информации

  • Декодер автокодировщика, рисующий готовое изображение при помощи массива обработанной информации.

    – Входные данные: массив обработанной информации (размеры: (4,64,64))
    – Выходные данные: готовое изображение (размеры: (3, 512, 512) – (красный/зелёный/синий, ширина, высота))
Что такое Stable Diffusion и как запустить-использовать Stable Diffusion
Что такое диффузия?

Диффузия – это процесс, выполняемый внутри розового компонента «image information creator» (этапа создания информации изображения). Имея эмбеддинги токенов, описывающие введённый текст, и случайный начальный массив информации изображения (также они называются latent), процесс создаёт массив информации, который декодер изображения использует для рисования готового изображения.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Это процесс выполняется поэтапно. Каждый шаг добавляет больше релевантной информации. Чтобы представить процесс в целом, мы можем изучить массив случайных latent, и увидеть, что он преобразуется в визуальный шум. В данном случае визуальное изучение – это прохождение данных через декодер изображений.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Диффузия выполняется в несколько шагов, каждый из которых работает с входным массивом latent и создаёт еще один массив latent, еще больше напоминающий введенный текст, а вся визуальная информация модели собирается из всех изображений, на которых была обучена модель.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Мы можем визуализировать набор таких latent, чтобы увидеть, какая информация добавляется на каждом из шагов.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

В данном случае нечто особо восхитительное происходит между шагами 2 и 4. Как будто контур возникает из шума.

Как работает диффузия

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

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Назовём «срез» (slice) добавленного нами шума «noise slice 1». Сделаем еще один шаг, добавив к шумному изображению еще шума («noise slice 2»).

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Примечание: это небольшое упрощение алгоритма диффузии. На ресурсах по ссылкам в конце статьи представлено более подробное математическое описание.

Рисование изображений устранением шума

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Если обучающий массив данных состоял из эстетически приятных изображений (например, LAION Aesthetics, на котором обучалась Stable Diffusion), то получившееся изображение будет иметь склонность к эстетической приятности.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

В этом по большей мере и заключается описание генерации изображений диффузионными моделями, представленное в статье Denoising Diffusion Probabilistic Models. Теперь, когда мы понимаем, что такое диффузия, нам понятно, как работают основные компоненты не только Stable Diffusion, но и Dall-E 2 с Google Imagen.

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

Увеличение скорости: диффузия сжатых (скрытых) данных, а не пиксельного изображения

Для ускорения процесса генерации изображений Stable Diffusion (по информации из исследовательской статьи) выполняет процесс диффузии не с самими пиксельными изображениями, а со сжатой версией изображения. В статье это называется «переходом в скрытое пространство».

Это сжатие (и последующая распаковка/рисование) выполняется при помощи автокодировщика. Автокодировщик сжимает изображение в скрытое пространство при помощи своего кодировщика, а затем воссоздает его при помощи декодера на основе только сжатой информации.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Далее со сжатыми latent выполняется прямой процесс диффузии. Используются срезы шума, применяемые к этим latent, а не к пиксельному изображению. То есть предсказатель шума на самом деле обучается прогнозировать шум в сжатом описании (в скрытом пространстве).

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Эти два потока показаны на рисунке статьи про LDM/Stable Diffusion:

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Также на этом рисунке показаны компоненты «согласования», которые в данном случае являются текстовыми строками, описывающими изображение, которое должна генерировать модель. Поэтому давайте рассмотрим эти текстовые компоненты.

Текстовый кодировщик: языковая модель Transformer

Языковая модель Transformer используется в качестве компонента понимания языка, она получает текстовую строку и создаёт эмбеддинги токенов. В опубликованной модели Stable Diffusion используется ClipText (модель на основе GPT), а в статье применяется BERT.

В статье, посвященной Imagen, показано, что выбор языковой модели важен. Замена на более объемные языковые модели сильнее влияет на качество генерируемого изображения, чем более объемные компоненты генерации изображений.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Улучшение/увеличение языковых моделей существенно влияет на качество моделей генерации изображений. Источник: Статья про Google Imagen, написанная Saharia и соавторами.

В первых моделях Stable Diffusion просто подключалась предварительно обученная модель ClipText, выпущенная OpenAI. Возможно, будущие модели перейдут на новые и гораздо более объёмные OpenCLIP-варианты CLIP. В эту новую группу входных векторов включены текстовые модели размерами до 354 миллионов параметров, в отличие от 63 миллионов параметров в ClipText.

Как обучается CLIP

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

CLIP – это сочетание кодировщика изображений и кодировщика текста. Обучающий процесс модели можно упрощенно представить как кодирование изображения и его подписи кодировщиками изображений и текста.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Повторяя этот процесс со всем массивом данных и группами входных векторов большого размера, мы получаем кодировщики, способные создавать эмбеддинги, в которых изображение собаки и предложение «a picture of a dog» схожи. Как и в word2vec, процесс обучения также должен включать в себя отрицательные примеры изображений и подписей, которые не совпадают, а модель должна присваивать им низкую оценку схожести.

Передача текстовой информации в процесс генерации изображений

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

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

Слои предсказателя шума Unet (без текста)

Для начала рассмотрим диффузионную Unet, не использующую текст. Ее входы и выходы выглядят так:

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Внутри мы видим следующее:

  • Unet – это последовательность слоев, работающая над преобразованием массива latent.
  • Каждый слой обрабатывает выходные данные предыдущего слоя.
  • Часто выходных данных подается (через остаточные соединения) для обработки на дальнейших этапах сети.
  • Шаг времени преобразуется в вектор эмбеддингов шага времени, который используется в слоях.
Что такое Stable Diffusion и как запустить-использовать Stable Diffusion
Слои предсказателя шума Unet с текстом

Давайте посмотрим, как изменить эту систему, чтобы уделить внимание тексту.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Основное изменение системы, которое необходимо для добавления поддержки текстового ввода (техническое название: text conditioning) – добавление слоя attention между блоками ResNet.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Обратите внимание, что блок resnet не смотрит непосредственно на текст. Слои attention объединяют эти текстовые описания в latent. И теперь следующий ResNet может использовать эту встроенную текстовую информацию в своей обработке.

Заключение

Надеюсь, это даст вам поверхностное понимание работы Stable Diffusion. В ней задействовано множество других концепций, но я считаю, что их проще понять, если вы знаете описанные выше строительные блоки. Для дальнейшего изучения можно воспользоваться представленными ниже полезными ресурсами.

Ресурсы

Источник


Запуск Stable Diffusion

Что нужно для запуска локально?

Для начала ПК, а так же не стоит забывать про видеокарту и особенно процессор.

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

Например с помощью софта от Topaz Labs – Gigapixel AI или Photo AI, пикча ниже была улучшена при использовании последнего.

Что такое Stable Diffusion и как запустить-использовать Stable Diffusion

Кто то пишет что нужно минимум 6Gb VRAM, кто то 10. А кто то что нужна строго карта от зеленых. Но вот вам правда на момент написания статьи и Stable Diffusion 2.1: нужно минимум 6VRAM, 8RAM и не обязательно иметь карту от Nvidia, а так же серии RTX. Stable Diffusion можно запустить на любой карте будь то AMD, Nvidia или даже Intel.

Насчет процессора как таковой информации нету. Но при желании Stable Diffusion можно запустить и на 4VRAM. Используя облегченные форки например от basujindal.

Так же стоит предупредить что официальная Stable Diffusion и правда требует минимум 10VRAM и 16RAM.

Как нынче все что можно запустить в этом мире, моя рекомендация запускать конечно же на SSD, но если вы увлечетесь, а вы увлечетесь, вы скорее всего как и я накачаете моделей на ~100Гб.

Мы будем использовать вариант между, от AUTOMATIC1111, простой, удобный и не слишком требовательный.

То есть понадобится примерно 6VRAM и 16RAM. На выходе мы получим удобный веб интерфейс на локальном хосте, и даже плюсом сможем расшарить его и поделится ссылкой с кем то. Например что бы ваш друг с ноутом 2005 года, тоже мог что то сделать, используя мощность вашего ПК. (Не советую генерировать одновременно)

Установка Stable Diffusion локально

Для начало вам нужно будет скачать или обновить Python, на текущий момент строго версии 3.10.x, тк Pytorch не поддерживает версию 3.11.x. Посмотреть нужную версию питона можно в репозитории на GitHub. На патч версию не обращайте внимания.

ВАЖНО: Запустите установщик от имени админа, установите ДЛЯ ВСЕХ пользователей и не забудьте поставить галочку на Add path.

Качаем или клонируем репозиторий: stable-diffusion-webui.

Далее переходим на HuggingFace. Там вам нужно будет скачать саму модель в формате ckpt или safetensors, не имеет значения в каком.

В чем отличие

ckpt от safetensors

Они одинаковы, но ckpt может содержать вредоносный код.

ema от nonema

EMA – можно обучать дальше. NONEMA – нельзя.

512 от 768

Это размеры картинок, на которых обучалась модель. На практике 768 работает лучше.

Сравнение можно посмотреть здесь.

Далее скачайте v2-inference-v.yaml.



И так что мы имеем?

  • Вы установили Python, и если вы введете в консоль python -V или python3 -V, вы должны увидеть версию питона, указанную выше или в репозитории на GitHub.
  • Вы скачали репозиторий с гитхаба.
  • Вы скачали модель Stable Diffusion, а так же конфиг файл.

Если все так, идем дальше.

Открываем ../stable-diffusion-webui/models/Stable-diffusion/ – и забрасываем туда модель и конфиг файл.

Далее копируем название модели, и переименовываем конфиг файл в название модели.

Например: v2-1_768-nonema-pruned.ckpt \ v2-1_768-nonema-pruned.yaml.

Далее в корневой папки откройте с помощью текстового редактора файл – webui-user.bat, и измените аргументы запуска (set COMMANDLINE_ARGS=), но сначала изучите информацию ниже!

# Базовые аргументы, нужные для работы
--api --cors-allow-origins=https://www.painthua.com --no-half

# Можете добавить это, что бы расшарить
--share --listen

# Так же можно добавить, об этом ниже
--xformers

# Максимальная оптимизация, позволит вам использовать более высокое разрешение, но повлияет на скорость генерации
--xformers --opt-split-attention --opt-sub-quad-attention --medvram --api --cors-allow-origins=https://www.painthua.com --no-half

Иногда генерируется сомнительная пикча, потому что разрешение слишком маленькое. Поэтому следует использовать последнюю строку параметров запуска.

Аргументы запуска

Xformers

Библиотека Xformers – это дополнительный способ ускорить создание изображений. Но это фича доступна только для видеокарт Nvidia.

Для использования понадобится указать --xformers в параметрах запуска. А так же скачать и установить CUDA 11.3 (какую версию смотреть здесь), выбрать Custom, а далее выбрать только следующее:

--force-enable-xformers – Включает xformers, независимо от того, может ли он запустится или нет. Не сообщает об ошибках, которые могут появится, во время выполнения.

Подробнее здесь.

SHARE и LISTEN

--share – создает публичную ссылку на gradio.

--listen – должен расшарить локалхост внутри локальной сети, но лично у меня не работает.

Из-за параметров share и listen могу не работать некоторые расширения, которые скорее всего еще не установлены, но которые вы возможно захотите установить, например ControlNet.

Оптимизация

АргументПояснение
--opt-split-attentionИспользует черную магию, для снижения памяти почти без затрат.
--disable-opt-split-attentionОтключает вышеуказанную оптимизацию.
--opt-sub-quad-attentionСубквадратичное внимание – оптимизация слоя Cross Attention, эффективная для памяти, которая может значительно уменьшить требуемую память, иногда с небольшими затратами производительности. Рекомендуется при низкой производительности или неудачных генерациях с аппаратной/программной конфигурацией, для которой xformers не работает.
--opt-split-attention-v1Использует более старую версию оптимизации, которая не так требовательна к памяти (она будет использовать меньше VRAM, но будет более ограничена в максимальном размере изображений, которые вы можете сделать).
--medvramЗаставляет модель Stable Diffusion потреблять меньше VRAM, разделяя ее на три части – cond (для преобразования текста в числовое представление), first_stage (для преобразования изображения в латентное пространство и обратно) и unet (для собственно деноизации латентного пространства) и делая так, чтобы только одна из них постоянно находилась в VRAM, отправляя остальные в CPU RAM. Это снижает производительность, но незначительно – за исключением случаев, когда включен предварительный просмотр в реальном времени.
--lowvramЕще более тщательная оптимизация вышеописанного, разбиение unet на множество модулей, и только один модуль хранится в VRAM. Разрушительно для производительности.
*do-not-batch-cond-uncondПредотвращает пакетную обработку положительных и отрицательных подсказок во время выборки, что позволяет работать с размером партии 0,5, экономя много памяти. Снижает производительность. Не опция командной строки, а оптимизация, неявно включаемая при использовании --medvram или --lowvram.
--always-batch-cond-uncondОтключает вышеуказанную оптимизацию. Имеет смысл только вместе с --medvram или --lowvram
--opt-channelslastИзменяет тип памяти torch для стабильной диффузии в каналы в последнюю очередь. Эффекты не изучены.

Подробнее здесь.

Промты (Подсказки)

Positive – верхнее поле, туда вы вводите чтобы вы хотели.

Negative – нижние поле, туда вы вводите чтобы вы НЕ хотели.

() – Так же вы можете использовать “приоритет” – вес\акцент промта, который будет применятся, “сильнее”.

  • (1)
  • ((2))
  • (((3)))
  • ((((4))))
  • (((((5)))))
  • ((((((6))))))

[] – Меньшей “приоритет” – уменьшение веса\акцента промта, который будет применятся, “слабее”.

  • [1]
  • [[2]]
  • [[[3]]]
  • [[[[4]]]]
  • [[[[[5]]]]]
  • [[[[[[6]]]]]]

Соотношения – …:1.0, указывает силу\акцент\вес в дробях.

Например: (Blue hair) будет иметь больший вес, чем [Blue hair] в конечном результате, (Blue hair:1.4) увеличит Blue hair на ~40% больше, чем обычно, (Blue hair:0.6) уменьшит их на ~40%.

Модели, лоры, инверсии

Checkpoint (Модель)

Модель она же «checkpoint». Большая, очень большая или не очень большая уже обученная модель.

Генерируют txt2img, img2img, etc. с нуля, исходя из больших данных, которыми обучали модель.

Предоставляется в ckpt и\или safetensors.

Для установки нужно закинуть ее в ../stable-diffusion-webui/models/Stable-diffusion/.

LORA

Lora – это грубо говоря мини-модель. Которую можно обучить используя, 5-7 пикч например. Суть лоры в том что бы добавить “фичу” на пикчу сгенерированную полноценной моделью.

Что дает простор для комбинации самых разных пикч.

Аналогично моделям это ckpt и\или safetensors, но весит она очень мало в сравнение с моделью.

Для установки нужно закинуть ее в ../stable-diffusion-webui/models/Lora/.

Для использования в webui нужно нажать на красную кнопку (🎴), выбрать Lora, обновить список, далее выбрать нужную.

Textual Inversion

Textual Inversion ака «embedding» – это почти как Lora. Что то типа стиля.

Обычно это pt или bin (первый формат используется автором оригинала, второй – библиотекой диффузоров) с вложением в него.

Для установки нужно закинуть ее в ../stable-diffusion-webui/embeddings/.

Использование в webui аналогично лоре.

Hypernetwork

Hypernetwork – это почти тоже самое что и Textual Inversion. Но используя Textual Inversion вы как бы направляете нейросеть куда вам надо, а Hypernetwork будет учитывать прошлые результаты генерации, для последующих генераций. Или нет. Крайне не понятно как это бл7ть работает.

Но вот что известно – это что то типо “оригинального” промта для картинки. Но в любом случае возникают вопросы, а зачем? Если на практике конечного юзера Lora – Textual Inversion – Hypernetwork = одно и тоже.

Для установки нужно закинуть ее в ../stable-diffusion-webui/models/hypernetworks/.

Использование в webui аналогично лоре и текстовой инверсии.

Пара слов о Lora, Textual Inversion и Hypernetwork.

Надеюсь вы прочли текст выше про Hypernetwork.

И вот моя пара слов, если это и имеет смысл, то не имеет смысла различия между Lora, Textual Inversion и Hypernetwork.

То есть если вы будете генерировать пикчу с рандомным сидом (-1), то она каждый раз будет другой. Но если вы поставите определенный сид, а в Extra выставите минимальное или около того различия нового сида, то пикча если и поменяется то незначительно.

И по факту бессмысленно применять что то из выше описанного к каждый раз новой пикче (сид -1). Это будет работать максимум как стиль. Но если сделать изменения сида минимальными, то пикча поменяет общий стиль, или например стиль персонажа (зависит от того что вы используете), не меняя основной композиции.

Сэмплирование

Sampling method – это метод обработки входного шума. Разные методы обрабатывают по разному.

Сильно различные значения Sampling steps – сильно влияют на то как будет выглядеть результат. Обычно Sampling steps добавляет детали делает все более качественным. Но это работает не всегда так, иногда картинке не нужно так много деталей тк модель рассчитана на арт или абстракцию или иногда их слишком много, из за чего пикча может стать гиперреалистичной будучи абстракцией.

На практике Sampling steps сильнее всего влияют на генерацию существ (людей, животных, etc.) и предметов.

Если вам нужен быстрый ответ и вам лень разбираться: Euler и Euler a – дефолтные методы, в 80% пикча будет от так себе то сверх круто. DDIM, DPM++ 2M Karras и DPM++ SDE Karras – самые графонистые, самый топ для генерации персонажей и просторных пейзажей.

Сравнение

Stable Diffusion - Sampling Method Comparison | Сравнение методов семплирования | Методы семплирования в сравнении
jpg (3849×10731)
Stable Diffusion - Sampling Method Comparison | Сравнение методов семплирования | Методы семплирования в сравнении

Как пользоваться Stable Diffusion WebUI

Пояснение за интерфейс

Sampling method и Sampling steps

Про Sampling method и Sampling steps смотреть выше.

Restore faces

Я думаю из названия понятно что это. Обычно плохо работает на артах, абстракциях и подобных.

Если вы не поняли, эта опция восстанавливает лицо.

Tiling

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

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

Hires. fix

Очень нужная опция, но как правило не нужная для пейзажей. Модель обычно обучается на небольших пикчах, чаще всего это 512px или 768px.

Если вы сгенерируете лицо человека в 512px, то вы получите лицо человека. Но если вы сделаете тоже самое в 1К+ например, как повезет, вы получили неожиданный результат.

Вероятней всего сгенерируется мутант с лицом человека, или в лучшем случае лиц будет несколько, пойдет в ширину или в длину, в зависимости от размера :)

Поэтому если вы не хотите получить мутанта, а хотите получить лицо человека в выс. качестве, используйте Hires. fix мин. значение апскейла = 1, то есть никакое. Шаг – 0.5, поэтому если у вас слабая тачка, вы может все равно сможете хоть не много применить апскейл. И да, оно юзает VRAM.

Небольшое отступление, помните главу с параметрами запуска? До применения черной магии, я мог генерировать макс. в 550px. С черной магией же я могу генерировать в 1280x720px, а так же 1024px (1:1). (8VRAM)

Делаем так, генерируем пикчу в макс. большом разрешение с hires. fix, котором можем, а потом еще аскейлим 6x с помощью софта от Topaz Labs.

Batch count и Batch size

Batch count – это кол-во картинок, которое сгенерируется за одно нажатие. Не влияет на потребление VRAM, тк генерирует их по очереди, но влияет на время окончания генерации (логично). Но вы можете открыть папку output и посмотреть уже сгенерированные пикчи из этой очереди.

Batch size – это тоже самое что и Batch count, но генерирует не по очереди, а сразу. Влияет на VRAM, потребляет больше.

То есть Batch count например 3, будет сгенерирована, картинка, потом еще одна, потом еще одна. Batch size 3 сгенерирует разом 3 картинки.

CFG Scale

Насколько вы хотите чтобы Stable Diffusion следовала вашим промтам. Чем больше значение тем менее уникальная пикча со стороны Stable Diffusion, то есть чем больше значение тем больше результат будет = вашим промтам.

Грубый пример:

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

На высоком же значении CFG Scale, сгенерируется только гора и дерево.

Примерные значения:

  • 0 – 6: вы говорите, что результат может игнорировать ваши промты.
  • 6 – 10: вы говорите, что хотите, чтобы оно делало то, о чем вы просите, но не возражаете против небольших вариаций.
  • 10+: вы говорите делать именно то, что вы хотите в промтах, без каких-либо отклонений.

На этом пока что все. Но статья в будущем будет дополнена. Будут описаны способы использования Stable Diffusion НЕ на своем ПК. А в облаке типа Google Colab. Так же будут советы по написанию промтов для генерации.

Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.
Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.