Что мы будем делать сегодня? Использовать высокие технологии для генерации п0рно!
Превью этой статьи было сгенерировано с помощью модели – Inkpunk Diffusion.
Содержание
- 1 О Stable Diffusion
- 2 Техническая часть
- 2.1 Как работает Stable Diffusion
- 2.2 Запуск Stable Diffusion
- 2.3 Аргументы запуска
- 2.4 Промты (Подсказки)
- 2.5 Модели, лоры, инверсии
- 2.6 Сэмплирование
- 3 Как пользоваться Stable Diffusion WebUI
О Stable Diffusion
Для начала если вы хотите использовать Stable Diffusion исключительно со Stable Diffusion – вы скучный человек. Существует Stable Diffusion – как ПО. И Stable Diffusion – как модель нейросети.
Вам ничего не мешает использовать любую модель какую вы только захотите. Скачать вы их можете например тут civitai.com. Или же просто где нибудь в интернете.
Это статья рассказывает о Stable Diffusion, а так же объясняет как развернуть Stable Diffusion в первую очередь локально.
Если вы не знаете что такое Stable Diffusion
Stable Diffusion – это скрытая модель диффузии текста в изображение, способная генерировать от аниме до фотореалистичных изображений при любом вводе текста, культивирующая автономную свободу для создания невероятных изображений, дающая всем возможность создавать пикчи в течение нескольких секунд. В нескольких словах, вы вводите текст = пикча. Можно описать «вставить_тут» мечты.
Выпуск Stable Diffusion стал важной вехой в этом развитии, поскольку высокопроизводительная модель оказалась доступной широкой публике (производительная с точки зрения качества изображения, скорости и относительно низких требований к ресурсам).
Пикчи
djz Ink Punk V21
Inkpunk Diffusion v2
djz Dieselpunk City V21
djz Dieselpunk City V21
umiAIMythologyAndBabes
umiAIMythologyAndBabes
umiAIMythologyAndBabes
umiAIMythologyAndBabes
umiAIMythologyAndBabes
umiAIMythologyAndBabes
umiAIMythologyAndBabes
Техническая часть
В этой части я покажу вам как же все таки запустить и опробовать эту шайтан машину. А так же тут будет очень много текста, который поясняет как это работает. Но читать его не обязательно.
Как работает Stable Diffusion
Stable Diffusion гибка, то есть может использоваться множеством разных способов. Давайте сначала рассмотрим генерацию изображений на основе одного текста (text2img). На картинке выше показан пример текстового ввода и получившееся сгенерированное изображение.
Кроме превращения текста в изображение, другим основным способом применения модели является изменение изображений (то есть входными данными становятся текст + изображение).
Давайте начнем разбираться со внутренностями модели, потому что это поможет нам объяснить ее компоненты, их взаимодействие и значение опций/параметров генерации изображений.
Компоненты Stable Diffusion
Stable Diffusion – это система, состоящая из множества компонентов и моделей. Это не единая монолитная модель.
Изучая внутренности, мы первым делом заметим, что в модели есть компонент понимания текста, преобразующий текстовую информацию в цифровой вид, который передает заложенный в текст смысл.
Мы начнем с общего обзора, а позже углубимся в подробности машинного обучения. Однако для начала можно сказать, что этот кодировщик текста – это специальная языковая модель Transformer (технически ее можно описать как текстовый кодировщик модели CLIP). Она получает на входе текст и выдает на выходе список чисел (вектор), описывающий каждое слово/токен в тексте.
Далее эта информация передаётся генератору изображений, который состоит из двух компонентов.
Генератор изображений выполняет два этапа:
1. Создание информации изображения
Этот компонент является секретным ингредиентом Stable Diffusion. Именно благодаря нему возник такой рост качества по сравнению с предыдущими моделями.
Этот компонент выполняется в несколько шагов (step), генерируя информацию изображения. Это параметр steps в интерфейсах и библиотеках Stable Diffusion, который часто по умолчанию имеет значение 50 или 100.
Этап создания информации изображения действует полностью в пространстве информации изображения (или в скрытом пространстве). Подробнее о том, что это значит, будет ниже. Это свойство ускоряет работу по сравнению с предыдущими моделями диффузии, работавшими в пространстве пикселей. Этот компонент состоит из нейросети UNet и алгоритма планирования.
Слово «диффузия» (diffusion) описывает происходящее в этом компоненте. Это пошаговая обработка информации, приводящая в конечном итоге к генерации высококачественного изображения (при помощи следующего компонента – декодера изображений).
2. Декодер изображений
Декодер изображений рисует картину на основе информации, которую он получил на этапе создания информации. Он выполняется только один раз в конце процесса и создает готовое пиксельное изображение.
На изображении выше мы видим три основных компонента (каждый со своей собственной нейросетью), из которых состоит Stable Diffusion:
- ClipText для кодирования текста.
– Входные данные: текст.
– Выходные данные: 77 векторов эмбеддингов токенов, каждый в 768 измерениях.
- UNet + Scheduler для постепенной обработки/диффузии информации в пространстве информации (скрытом пространстве).
– Входные данные: эмбеддинги текста и исходный многомерный массив (структурированные списки чисел, также называемые тензором), состоящий из шума.
– Выходные данные: массив обработанной информации
- Декодер автокодировщика, рисующий готовое изображение при помощи массива обработанной информации.
– Входные данные: массив обработанной информации (размеры: (4,64,64))
– Выходные данные: готовое изображение (размеры: (3, 512, 512) – (красный/зелёный/синий, ширина, высота))
Что такое диффузия?
Диффузия – это процесс, выполняемый внутри розового компонента «image information creator» (этапа создания информации изображения). Имея эмбеддинги токенов, описывающие введённый текст, и случайный начальный массив информации изображения (также они называются latent), процесс создаёт массив информации, который декодер изображения использует для рисования готового изображения.
Это процесс выполняется поэтапно. Каждый шаг добавляет больше релевантной информации. Чтобы представить процесс в целом, мы можем изучить массив случайных latent, и увидеть, что он преобразуется в визуальный шум. В данном случае визуальное изучение – это прохождение данных через декодер изображений.
Диффузия выполняется в несколько шагов, каждый из которых работает с входным массивом latent и создаёт еще один массив latent, еще больше напоминающий введенный текст, а вся визуальная информация модели собирается из всех изображений, на которых была обучена модель.
Мы можем визуализировать набор таких latent, чтобы увидеть, какая информация добавляется на каждом из шагов.
В данном случае нечто особо восхитительное происходит между шагами 2 и 4. Как будто контур возникает из шума.
Как работает диффузия
Основная идея генерации изображений при помощи диффузионной модели использует тот факт, что у нас есть мощные модели компьютерного зрения. Если им передать достаточно большой массив данных, эти модели могут обучаться сложным операциям. Диффузионные модели подходят к задаче генерации изображений, формулируя задачу следующим образом:
Допустим, у нас есть изображение, сделаем первый шаг, добавив в него немного шума.
Назовём «срез» (slice) добавленного нами шума «noise slice 1». Сделаем еще один шаг, добавив к шумному изображению еще шума («noise slice 2»).
На этом этапе изображение полностью состоит из шума. Теперь давайте возьмём их в качестве примеров для обучения нейронной сети компьютерного зрения. Имея номер шага и изображение, мы хотим, чтобы она спрогнозировала, сколько шума было добавлено на предыдущем шаге.
Хотя этот пример показывает два шага от изображения к полному шуму, мы можем управлять тем, сколько шума добавляется к изображению, поэтому можно распределить его на десятки шагов, создав десятки примеров для обучения на каждое изображение для всех изображений в обучающем массиве данных.
Красота здесь в том, что после того, как эта сеть прогнозирования шума начнет работать правильно, она, по сути, сможет рисовать картины, удаляя шум на протяжении множества шагов.
Примечание: это небольшое упрощение алгоритма диффузии. На ресурсах по ссылкам в конце статьи представлено более подробное математическое описание.
Рисование изображений устранением шума
Обученный предсказатель шума может взять шумное изображение и количество шагов устранения шума, и на основании этого способен спрогнозировать срез шума.
Срез шума прогнозируется таким образом, что если мы вычтем его из изображения, то получим изображение, которое ближе к изображениям, на которых обучалась модель.
Если обучающий массив данных состоял из эстетически приятных изображений (например, LAION Aesthetics, на котором обучалась Stable Diffusion), то получившееся изображение будет иметь склонность к эстетической приятности.
В этом по большей мере и заключается описание генерации изображений диффузионными моделями, представленное в статье Denoising Diffusion Probabilistic Models. Теперь, когда мы понимаем, что такое диффузия, нам понятно, как работают основные компоненты не только Stable Diffusion, но и Dall-E 2 с Google Imagen.
Обратите внимание, что описанный выше процесс диффузии генерирует изображения без использования текстовых данных. В последующих разделах мы расскажем, как в процесс внедряется текст.
Увеличение скорости: диффузия сжатых (скрытых) данных, а не пиксельного изображения
Для ускорения процесса генерации изображений Stable Diffusion (по информации из исследовательской статьи) выполняет процесс диффузии не с самими пиксельными изображениями, а со сжатой версией изображения. В статье это называется «переходом в скрытое пространство».
Это сжатие (и последующая распаковка/рисование) выполняется при помощи автокодировщика. Автокодировщик сжимает изображение в скрытое пространство при помощи своего кодировщика, а затем воссоздает его при помощи декодера на основе только сжатой информации.
Далее со сжатыми latent выполняется прямой процесс диффузии. Используются срезы шума, применяемые к этим latent, а не к пиксельному изображению. То есть предсказатель шума на самом деле обучается прогнозировать шум в сжатом описании (в скрытом пространстве).
При помощи прямого процесса (с использованием кодировщика автокодировщика) мы генерируем данные для обучения предсказателя шума. После его обучения мы можем генерировать изображения, выполняя обратный процесс (при помощи декодера автокодировщика).
Эти два потока показаны на рисунке статьи про LDM/Stable Diffusion:
Также на этом рисунке показаны компоненты «согласования», которые в данном случае являются текстовыми строками, описывающими изображение, которое должна генерировать модель. Поэтому давайте рассмотрим эти текстовые компоненты.
Текстовый кодировщик: языковая модель Transformer
Языковая модель Transformer используется в качестве компонента понимания языка, она получает текстовую строку и создаёт эмбеддинги токенов. В опубликованной модели Stable Diffusion используется ClipText (модель на основе GPT), а в статье применяется BERT.
В статье, посвященной Imagen, показано, что выбор языковой модели важен. Замена на более объемные языковые модели сильнее влияет на качество генерируемого изображения, чем более объемные компоненты генерации изображений.
Улучшение/увеличение языковых моделей существенно влияет на качество моделей генерации изображений. Источник: Статья про Google Imagen, написанная Saharia и соавторами.
В первых моделях Stable Diffusion просто подключалась предварительно обученная модель ClipText, выпущенная OpenAI. Возможно, будущие модели перейдут на новые и гораздо более объёмные OpenCLIP-варианты CLIP. В эту новую группу входных векторов включены текстовые модели размерами до 354 миллионов параметров, в отличие от 63 миллионов параметров в ClipText.
Как обучается CLIP
CLIP обучается на массиве изображений и подписей к ним. Массив данных выглядит примерно так, только состоит из 400 миллионов изображений и подписей:
CLIP – это сочетание кодировщика изображений и кодировщика текста. Обучающий процесс модели можно упрощенно представить как кодирование изображения и его подписи кодировщиками изображений и текста.
Затем мы сравниваем получившиеся эмбеддинги при помощи косинусного коэффициента. В начале процесса обучения схожесть будет низкой, даже если тест описывает изображение правильно.
Мы обновляем две модели так, чтобы в следующий раз при создании эмбеддингов получившиеся эмбеддинги были схожими.
Повторяя этот процесс со всем массивом данных и группами входных векторов большого размера, мы получаем кодировщики, способные создавать эмбеддинги, в которых изображение собаки и предложение «a picture of a dog» схожи. Как и в word2vec, процесс обучения также должен включать в себя отрицательные примеры изображений и подписей, которые не совпадают, а модель должна присваивать им низкую оценку схожести.
Передача текстовой информации в процесс генерации изображений
Чтобы сделать текст частью процесса генерации изображений, нам нужно модифицировать предсказатель шума так, чтобы он использовал в качестве входных данных текст.
Теперь наш массив данных содержит закодированный текст. Так как мы работаем в скрытом пространстве, то входные изображения и прогнозируемый шум находятся в скрытом пространстве.
Чтобы лучше понять, как текстовые токены используются в Unet, давайте глубже разберёмся с Unet.
Слои предсказателя шума Unet (без текста)
Для начала рассмотрим диффузионную Unet, не использующую текст. Ее входы и выходы выглядят так:
Внутри мы видим следующее:
- Unet – это последовательность слоев, работающая над преобразованием массива latent.
- Каждый слой обрабатывает выходные данные предыдущего слоя.
- Часто выходных данных подается (через остаточные соединения) для обработки на дальнейших этапах сети.
- Шаг времени преобразуется в вектор эмбеддингов шага времени, который используется в слоях.
Слои предсказателя шума Unet с текстом
Давайте посмотрим, как изменить эту систему, чтобы уделить внимание тексту.
Основное изменение системы, которое необходимо для добавления поддержки текстового ввода (техническое название: text conditioning) – добавление слоя attention между блоками ResNet.
Обратите внимание, что блок resnet не смотрит непосредственно на текст. Слои attention объединяют эти текстовые описания в latent. И теперь следующий ResNet может использовать эту встроенную текстовую информацию в своей обработке.
Заключение
Надеюсь, это даст вам поверхностное понимание работы Stable Diffusion. В ней задействовано множество других концепций, но я считаю, что их проще понять, если вы знаете описанные выше строительные блоки. Для дальнейшего изучения можно воспользоваться представленными ниже полезными ресурсами.
Ресурсы
- У меня есть одноминутный клип на YouTube по использованию Dream Studio для генерации изображений при помощи Stable Diffusion.
- Stable Diffusion with 🧨 Diffusers
- The Annotated Diffusion Model
- How does Stable Diffusion work? – Latent Diffusion Models EXPLAINED [Видео]
- Stable Diffusion — What, Why, How? [Видео]
- High-Resolution Image Synthesis with Latent Diffusion Models [Статья про Stable Diffusion]
- Более подробное изучение алгоритмов и математики представлено в статье Лилиан Венг What are Diffusion Models?
Запуск Stable Diffusion
Что нужно для запуска локально?
Для начала ПК, а так же не стоит забывать про видеокарту и особенно процессор.
Вам понадобится воистину не слабый комп, но это если вы хотите делать пикчи в очень крутом качестве. Что не является обязательным, тк вы всегда можете улучшить сгенерированную пикчу с помощью другого искусственного интеллекта.
Например с помощью софта от Topaz Labs – Gigapixel AI или Photo AI, пикча ниже была улучшена при использовании последнего.
Кто то пишет что нужно минимум 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. На патч версию не обращайте внимания.
Качаем или клонируем репозиторий: 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 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. Так же будут советы по написанию промтов для генерации.