Нейроискусство
Опубликовано в Нейроискусство
avatar
112 секунд читать

Ультимативный гайд по Stable Diffusion + немного ComfyUI

Всем привет! В интернете я все еще не нашел гайда, который бы нормально объяснял всего по-немногу, чтобы со свистом залететь в генерацию картинок, так что попробую уместить в этот пост свой опыт. Погнали!

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

Рассматривать будем интерфейсы Stable Diffusion Forge и ComfyUI. Первый на 30%-40% быстрее того же от Automatic1111, а второй по сравнению с Forge - линуха. Вход может показаться трудноватым, но там можно вытворять такие вещи, какие и не снились ни Автоматик, ни Force

Содержание

  • Установка SD Forge
  • Модели
  • Интерфейс SD Forge
  • Пишем первый запрос
  • Улучшаем конечный результат
  • Стили
  • Расширения
  • LoRa
  • Правим сгенерированную картинку
  • Повышаем разрешение
  • Немного о ComfyUI
  • Совсем чуть-чуть про Stable Video Diffusion

Установка SD Forge

Собственно, все просто! Заходите по этой ссылке, качаете, разархивируете на диск, где есть от 50 Гб, и запускаете update.bat.

И кстати, системные требования простые: любая видеокарта NVIDIA от тысячной серии. Чем мощнее - чем быстрее генерация. На AMD не пробовал, но по идее тоже работает.

Есть поверие, что можно еще увеличить производительность SD. Заходите в папку webui, открывайте в блокноте файлик webui-user.bat, и к строке set COMMANDLINE_ARGS= нужно приписать вот это:

--no-half-vae --opt-channelslast --opt-sdp-no-mem-attention --api --update-check

На моей системе я не заметил особой разницы, но у вас возможно прокнет. Проверяйте.

Модели

Их тысячи. Что-то для аниме, что-то для реализма, что-то для п#рнухи, и так далее. Вот модели, которыми пользуюсь я:

RevAnimated - умеет во все рисованное. И классический рисунок, и аниме, и все такое. Как раз пару дней назад вышло обновление.

ChilloutMix - что-то среднее между рисовкой и реализмом. Лица делает преимущественно азиатские.

GhostMix - делает отличные рисованные картинки, на уровне с RevAnimated, но более склонен к аниме.

Flat-2D Animerge - стиль манга-рисовки

Realistic Vision - Реализм. Европейские лица.

epiCRealism - тоже реализм, тоже европейские лица.

Модели нужно кидать в Stable Diffusion Forge\webui\models\Stable-diffusion

Все остальное ищите на этом же сайте, ну или на Huffing Face

Интерфейс SD Forge

Как модели скачаны, а Forge обновлен, запускайте интерфейс с ярлыка run.bat

Вы увидите прекрасную картину. Давайте по порядку:

  • Sampling method — отвечает за первоначальную кашу, из которой будет диффузироваться изображение. DPM++ 2M Karras делает более контрастные и резкие изображения, Euler a делает более "обтекаемые" и как будто немного "маслом". С остальными — экспериментируй.
  • Sampling Steps — количество шагов генерации. Чем выше значение — тем больше итерацией будет произведено. Больше - лучше, но не переусердствуй. Среднее количество шагов — от 23 до 40.
  • Width и Height — ширина и высота. Не рекомендуется больше 1000, иначе вместо одного персонажа будет два, или вообще в одной картинке будет две. Модели (не XL) обучаются на 512x512, от этого и исходи.
  • Batch count и Batch size — количество изображений за одно "нажатие" Generate. В одном Batch count содержится один Batch size. Batch size — до 8 картинок, в Batch count — до 100 Batch size. Вот и умножай.
  • CFG Scale — степень соответствия промту. Чем больше значение, тем больше будет обращать внимание модель на каждое слово, и так сказать "запекать" его. Так что экспериментируй. Стандарт - 7, но если сделать больше или меньше (1, например), можно получать интересные результаты.
  • Seed — рандомное число. Если хотите много похожих изображений, жмите на зеленую кнопочку и Seed "застынет".

Собственно, все относительно просто. Теперь пиши, что хочешь и оно генерирует. Пара фактов:

  • Расположение промтов не сильно влияет, как по мне, но обычно основу пишут сначала, а всякое освещение, позы и стили - в конце
  • Если какому-то промту нужно добавить силы, или наоборот, то пишите (promt:цифра). Больше 1 — промт сильнеет, меньше 1, промт слабеет. Пример — (side view:1.5).
  • Можно комбинировать промты. Сначала пример: [blonde | (short pink hair:1.2)]. Оно работает вот так: на первом шагу семплирования картинка будет генерироваться с промтом blonde, на втором шагу — short pink hair, и так по очереди. Особенно хорошо это работает с волосами, делая их как-то покрасивше. Результат этого промта:
[blonde | (short pink hair:1.2)]
[blonde | (short pink hair:1.2)]

Если сделать картинку с только short pink hair:

short pink hair
short pink hair
  • Используй негативные промты! Они нужны, чтобы нейросеть вещи, которые ты опишешь в Negative Promt — не делала, очевидно. Вот шаблон:
deformed, bad anatomy, disfigured, poorly drawn face, mutation, mutated, extra limb, ugly, disgusting, poorly drawn hands, missing limb, floating limbs, disconnected limbs, malformed hands, blurry, ((((mutated hands and fingers)))) , watermark, watermarked, oversaturated, censored, distorted hands, amputation, missing hands, obese, doubled face, double hands

Также есть такая прикольная штука, как Textual Inversion — это файлики, в которых собраны какие-либо промты. Их нужно кидать в \embeddings. Вот такой файлик для плохих рук. Ищи их во вкладке Textual Inversion и кидай в Negative Promts.

Усредненная структура промта:

  • Тема (фото, рисунок, портрет)
  • Объект (кто или что во главе картинки)
  • Стиль (аниме, реализм, мультфильм)
  • Стиль2 (автор, режиссер, модель фотоаппарата (canon eos, polaroid))
  • Разрешение (hdr, high resolution, 4k, 8k)
  • Цветовая гамма (главенствующий цвет композиции)
  • Освещение (moonshine, sunny, soft lightning)
  • Угол камеры и поза

Ловите ультимативный гайд по углам камеры.

Кстати, после генерации все картинки попадают в \outputs\txt2img-images

Стили

Скачай файлик со стилями и кидай его в корень папки с SD. Они очень помогут в стилизации картинки. Находится под вкладкой Generate:

Немного про Dynamic Promts

Устал придумывать промт? Хочется красивые картиночки по какой-нибудь теме? Не беда, ведь можно зарандомить заранее подготовленные промты!

Установка простая. Нужно зайди во вкладку Extensions, зайди в Avaliable, и нажать Load From. Далее находите там Dynamic Promts и справа нажимаете install. Далее нужно зайти в Installed и нажать Apply and restart UI

На Civitai это фильтр Wildcards. Вот самая популярная подборка оттуда. Качай архив и все текстовые файлы кидай в webui\extensions\sd-dynamic-prompts\wildcards

В SD заходи во вкладку Wildcards Manager, и там тебя будет ждать куча "тем", которые ты можешь добавить к своему промту.

В свой промт нужно вписывать название, как в Wildcards file, например: __background_horror_place__. Это работаеть так, что при каждой генерации из списка берется рандомная строчка и подставляется в промт.

LoRa

Лора — это маленькие обученные модели, которые накладываются на основную модель, тем самым внося свои изменения в результат. Покажу на примере моей любимой Мегумин!

Заходя на страницу с LoRa на Civitai, стоит обратить внимание на пару вещей

Использование лоры состоит из двух вещей - веса и триггер-слов. Вес автор чаще всего указывает внизу в описании )в нашем случае 0.6-0.8, а триггер-слова справа (отмечены фиолетовым). Это две обязательные вещи. Также автор может указать вспомогательные промты в описании. Тогда вообще цены ему нет, и надо обязательно поставить лайк этой лоре!

Ну погнали делать, чо

Скачивайте файл и кидайте в webui\models\Lora

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

Собственно, нажимаете на лору и она появляется в положительном промте. Задаем ей рекомендуемый вес, дописываем промт и получаем нашу вайфу!

Inpaint

Ты сделал вайфу, все круто, но какая-то деталь не дает тебе покоя? Вкладка IMG-TO-IMG тебе поможет! В этой вкладке есть подвкладки, и нас интересует Inpaint.

На этой картинке с Зельдой мне не нравятся какие-то крюки на левых домах.

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

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

В настройках в принципе можно ничего не трогать, кроме Denoising strength. В этом стоит поэкспериментировать, и посидев, запомнишь, какие значения для чего нужны. Очень грубо говоря: выше 0.75 ставить не стоит, менее 0.25 - практически ничего не меняется. Для этой картинки я оставил дефолтный 0.75.

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

Апскейл

Как только картинка получилась, стоит и подтянуть разрешение. Нажимай под картинкой на угольник и ты попадешь во вкладку Extras. Хорошие стандартные апскейлеры - R-ESRGAN 4x+ (для реалистичных изображений) и R-ESRGAN 4x+ Anime6B (для аниме). Но лучший для меня - Swin2SR_RealworldSR. Его нужно установить. Качай вот отсюда и кидай в \models\SwinIR. Он не мылит изображение, как R-ESRGAN. Все картинки после апскейла попадают в \outputs\extras-images

Вот апскейленое в 2 раза нашей Мегумин

В чем проблема апскейла - он мылит картинку. Пока что я не нашел апскейлера, который этого не делает, но тот, что я предложил - мылит по минимуму.

Немного о ComfyUI

Этот интерфейс использует систему нод - отдельных блоков, взаимодействующих между собой.

Качать отсюда. Модели класть в ComfyUI\models\checkpoints. Помните про апскейлер, который мы качали? Вот его кидайте в ComfyUI\models\upscale_models

Также стоит скачать ComfyUI Manager. Качаете архивом репозиторий и закидываете в ComfyUI/custom_nodes. Он правда нужен. Оттуда вы будете устанавливать кастомные ноды.

Тут все тоже самое, что и в SD Forge, просто с другим интерфейсом. Загружается модель, пишутся промты, оно прогоняется через семплер, декодируется, и попадает в папку ComfyUI\output. Вот мой "воркфлоу". В интернете вы можете найти и другие, более сложные и комплексные. Как скачаете, зайдите в Manager и нажмите Install Missing Custom Nodes, прокликайте все галочки и жмите install.

Мой песдюк
Мой песдюк

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

Много я о нем расписывать не буду, потому что сам еще не разбираюсь в нем достаточно хорошо. Но я точно буду пересаживаться на него. Почему?

Потому что он быстрее, чем SD Forge, и дает НАМНОГО больше контроля над генерацией, что очень приятно.

Совсем чуть-чуть про Stable Video Diffusion

Правда, совсем чуть-чуть. В интерфейсе SD Forge для этого есть отдельная вкладка, а для ComfyUI вот вам воркфлоу. Настройки особо не трогайте. Менять есть смысл пока что MOTION_BUCKET_ID, он отвечает за "интенсивность движений". Скоро на DTF опубликую развернутый пост про эту тему

Заключение

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

24 Комментарии

avatar
Сардж Мадовски
2 месяца назад

Это мы читаем! И добавляем в закладки.

avatar
Basil
2 месяца назад

Такое надо сохранить

avatar
Ноа
2 месяца назад

Спасибо за статью =)
Очень полезно! Использую иногда в работе нейро-помощников, когда нужно поработать с идеей/композицией/светом. Часто выручают, показывая разные варианты решения =)

----- Forge на 30%-40% быстрее того же от Automatic1111
А за счёт чего Forge быстрее? Там питоновские скрипты разные?

avatar
Карасик Автор
2 месяца назад

Я особо не разбирался. Скорее всего оптимизация и какие-нибудь другие библиотеки. Но точно ничего не вырезано

avatar
_42
2 месяца назад

Там зависит от железа, но в основном просто оптимизация и актуальные библиотеки, да.

avatar
Mao
2 месяца назад

Добавлю недавнее тупое, но очень полезное открытие (особенно если много лор скачено). Если в папку с лорой кинуть пикчу с таким же именем файла, то SD будет отображать ее как обложку.

avatar
A4Y
2 месяца назад

Ты лучший <3

avatar
Дмитрий
2 месяца назад

Спасибо огромное за подробный пост!

avatar
_42
2 месяца назад

В Установка в параметрах батника лучше убрать --api если вам не используется

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

Когда-нибудь я уделю достаточно времени, что бы в этом разобраться. А пока добавлю в закладки, спасибо.
И да, какие системные требования у всего этого? Что использует, видеокарту или процессор? Просто ты в статье указал только 50 Гб свободного места.

avatar
Карасик Автор
2 месяца назад

Точно, сорян
NVIDIA от 1000 серии

avatar
Светлослав
2 месяца назад

Уфф мля, на работе радеон стоит, сранные карты от амд не используются популярностью и нейросетевиков(

avatar
Mao
2 месяца назад

Можно и на амд, но надо гайды искать, не все так просто как с nvidia

avatar
Garrett
2 месяца назад

Хорошая статья, спасибо)

avatar
Delta
2 месяца назад

О, это нам явно надо. Большое спасибо за пост!

avatar
Dark-Exo
2 месяца назад

я использую сборку stable от хруста, это имеет какое это значение или надо обязательно ставить Stable Diffusion Forge ?

avatar
Карасик Автор
2 месяца назад

Нет, значения не имеет
Но по поводу производительности сборки Хруста ничего не могу сказать

avatar
Dark-Exo
2 месяца назад

Хорошо спасибо!)

avatar
Dark-Exo
2 месяца назад

Вопрос в форже есть вкладка с контрл нет, и там вижу ip adapter слева в предпроцессорах указаны, а вот справа модели пусто, мне искать конкретные модели ip adapter? Вопрос в том подойдет ли модель ip adapter отсюда? https://huggingface.co/ostris/ip-composition-adapter/tree/main

avatar
Карасик Автор
2 месяца назад

https://huggingface.co/h94/IP-Adapter/tree/main/models
Бери отсюда
С припиской plus_face

avatar
Klakson
2 месяца назад

немного не понял про wildcards, все делал по гайду, банально нет такой вкладки у меня после запуска)

avatar
Карасик Автор
2 месяца назад

Странно
По идее поставляется вместе с Dynamic Promts
Попробуй переустановить (удалить расширение из папки extensions, и удалить папку venv, потом установить заново расширение)
Либо погугли, мб Wildcards Manager есть отдельно

avatar
Klakson
2 месяца назад

Спасибо! Переустановка действительно помогла)