Краткое пособие по Stable Diffusion

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

Краткое пособие по Stable Diffusion

Маленькое авторское отступление. Да, я буду показывать все на примере фансервисных девушек. NSFW - двигатель прогресса!

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

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

Установка

  1. Нужно скачать python и установить (обязательно прожми Add to PATH)
  2. Скачай и установи git
  3. В командной строке зайди в папку (cd *папка*), в которой будет лежать SD и пиши git clone https://github.com/automatic1111/stable-diffusion-webui
  4. С помощью блокнота зайди в файлик webui-user.bat и в строке set commandline_ARGS= допиши --xformers (работает только на NVIDIA). Это ускорит работу SD. Если есть время и желание, поэкспериментируй, и вместо --xformers напиши --opt-sdp-no-mem-attention, с этим аргументом на твоей системе SD возможно будет работать быстрее.
  5. ???
  6. Profit!

Запуск производится с файлика webui-user.bat

SD работает на видеокарте. Лучший вариант - Nvidia, начиная с 1000 серии.

Если нужно заходить в Stable Diffusion не с хост-ПК, а например, на ноутбуке в теплой кровати, то открой файлик webui-user.bat в блокноте и в строке set commandline_ARGS= после знака равно напиши --listen.

Подготовка к работе

Для работы SD нужны модели. Их ищи на Civitai или Hugging Face. Модели нужно класть в models\Stable-diffusion. Популярные и хорошие модели — ChilloutMix, ReV Animated, Deliberate, epiCRealism.

Расширения

Их тысячи. Как их ставить?

  • Заходи во вкладку Extensions
  • Во вкладке Avaliable уже есть куча расширений, которые можно установить
  • Во вкладке install from URL можно ставить расширения из github. Просто вставь ссылку, и нажимай Install. Главное, после установки любого расширения нужно нажать Reload UI в Installed!

Парочка тех, которые тебе очень помогут:

  • ADetailer. Улучшает лица и руки. Лица получше, руки похуже.
  • ControlNet и Posex. Это расширения для редактирования позы персонажа. Их можно найти во вкладке Avaliable. Как по мне, работает только для простых поз, но скорее всего я дебил. Это обширная тема, поэтому лучше посмотреть вот этот видос.
  • Dynamic Promts. Прикольное расширение. Оно добавляет свои рандомные промты в твои. Можно получить необычные результаты. Combinatorial generation немного меняет сцену, Magic Promt меняет ее сильнее, а I’m feeling lucky добавляет элементы хаоса.

Наконец-то можно писать промт

Ну почти. Сначала пройдемся по настройкам:

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

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

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

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

Краткое пособие по Stable Diffusion

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

  • Используй негативные промты! Они нужны, чтобы нейросеть вещи, которые ты опишешь в 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:

Краткое пособие по Stable Diffusion

Да, их можно комбинировать.

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

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

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

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

Краткое пособие по Stable Diffusion

В свой промт нужно вписывать название, как в Wildcards file, например: __background_horror_place__

LoRa

Лора — это маленькие обученные модели, которые накладываются на основную модель, тем самым внося свои изменения в результат.

Покажу на примере Зельды. Кладем это в \models\Lora.

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

Краткое пособие по Stable Diffusion

Там же в описании авторы обычно указывают, какую силу стоит давать Лоре. В нашем случае — 0.7-0.8

Краткое пособие по Stable Diffusion

Собственно, я пишу в промт, что хочу девочку на фоне страшного города, добавляю к промту лору Зельды, добавляю промты, указанные в описании этой лоры, и получаю вот это:

1girl, <lora:zelda_1:0.9> aazelda, short hair, crown braid, hairclip, pointy ears, brown cape, blue shirt, puffy sleeves, long sleeves, fingerless gloves, black gloves, black pants, tight pants, (Desolate fog-shrouded alley:1.3), (side view)
1girl, <lora:zelda_1:0.9> aazelda, short hair, crown braid, hairclip, pointy ears, brown cape, blue shirt, puffy sleeves, long sleeves, fingerless gloves, black gloves, black pants, tight pants, (Desolate fog-shrouded alley:1.3), (side view)

Красота? Конечно красота, ведь это сама принцесса Зельда!

Inpaint

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

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

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

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

Краткое пособие по Stable Diffusion

В настройках в принципе можно ничего не трогать, кроме 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 раза нашей Зельды

Краткое пособие по Stable Diffusion

Вот и все

Это основные моменты, которые помогут тебе делать неплохие картиночки и мусорить постами на DTF с подборками (прям как я).

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

Спасибо за прочтение! Пишите комментарии, кидайте в меня донатами, и удачи в этом деле!

390390
143 комментария