Как пользоваться нейросетью Stable Diffusion

Если вы, как и я, не имеете доступа к DALL·E 2, уже потратили свои попытки с Midjourney, а продолжать генерировать изображения хочется.

"Grant Theft Democracy" от <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.reddit.com%2Fuser%2Fvolksvargas%2F&postId=1345343" rel="nofollow noreferrer noopener" target="_blank">volksvargas</a><br />
"Grant Theft Democracy" от volksvargas

0. Дисклеймер

Вся информация в этом гайде (и часть картинок) взята с разных постов реддита r/StableDiffusion. Рекомендую отслеживать его, если хотите быть в курсе появляющихся новых возможностей программы, найденных лайфхаках для генерации или если у вас появляется вопрос, с которым не помогает гугл.

В этом гайде я в основном описываю шаги, которых будет достаточно пользователю на Windows с видеокартами Nvidia 10XX с 4-6 гигабайтами видеопамяти и выше для запуска на своем компе. Если у вас мощная карта от красных - возможно, вам поможет вот этот гайд.

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

1. Введение. Что еще за Stable Diffusion?

Stable Diffusion - программа с открытым исходным кодом от группы Stability.Ai , выпущенная в публичный доступ 22 августа, состоит из 2х больших частей - собственно, обученной нейросети (сейчас доступна версия 1.4, скоро будет доступна 1.5 - в ней обещают более качественные лица/глаза/руки) и обвязки, ее вызывающей.

Результаты ее работы похожи на DALL·E и Midjourney (мне с друзьями показалось, что в среднем Midjourney рисует чуть выразительнее, а Stable Diffusion более четко следует запросу при настройках по умолчанию), главное преимущество с точки зрения пользователя сейчас - нет ограничений на генерируемые изображения (NSWF фильтр есть в оригинале, но легко снимается) и все бесплатно.

"Бесплатно", запрос от меня -  Ryan Gosling smiling, symmetric highly detailed eyes, trending on artstation, portrait, digital art, masterpice, by Vladimir Kush and Scott Naismith<br />
"Бесплатно", запрос от меня -  Ryan Gosling smiling, symmetric highly detailed eyes, trending on artstation, portrait, digital art, masterpice, by Vladimir Kush and Scott Naismith

Сообщество растет быстро и уже сейчас есть куча разных вариантов работы с нейросетью:

  • Базовый - через консоль. Для тех, кто не боится python и/или чуть-чуть потрогать код. Если готовы - выкачиваете с гитхаба подходящий вам по каким-то соображениям вариант (Исходный вот тут ; вариант для запуска с меньшими затратами видеопамяти и кучей дополнительных опций - тут) и следуете гайду по настройке окружения/запуска (для исходника - вот, для второго варианта - вот). Плюсы - вам проще будет интегрировать новые появляющиеся методы генерации изображений и вы чуть лучше разберетесь в том, как это все работает.
  • Через браузер (например, на этом сайте без регистрации и настроек , на этом - с регистрацией и разными настройками ). Плюсы - доступно с любого устройства и ничего не надо устанавливать. Минусы - медленно, меньше возможностей, в любой момент ваш любимый сайт может свернуться из-за наплыва пользователей/желания создателей.
  • Через графический интерфейс и установщик. Мне кажется, такой способ должен быть привычнее большинству пользователей Windows, поэтому его и опишу. Минусы - не факт, что в графическом интерфейсе будут все нужные вам настройки. Плюсы - все наглядно и не надо ничего знать про всякие питоны, анаконды, пип-инсталлы, командные консоли...

2. Установка на своём компьютере

Пошагово:

1. Еще раз убедитесь, что у вас Nvidia 10XX с хотя бы 4гб видеопамяти. Быстро проверить можно, зайдя в диспетчер задач (Ctrl+Shift+Esc), вкладку "производительность", раздел "Графический процессор" и посмотрев на строку "Выделенная память графического процессора".

Как пользоваться нейросетью Stable Diffusion

2. Скачиваете программу-установщик от NMKD

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

Как пользоваться нейросетью Stable Diffusion

3. Извлекаете содержимое архива куда вам удобно. Автор программы не рекомендует прятать ее очень глубоко из-за возможных ограничений на максимальную длину пути в файловой системе, но в данном случае это не так важно. Учтите, что программа + нейросети суммарно весят уже 11 гигабайт. У меня стоит на SSD, но не думаю, что это дает какую-либо ощутимую прибавку по скорости работы.

4. В распакованном архиве запускаете StableDiffusionGui.exe, соглашаетесь с возможными багами, и нажимаете на иконку установщика.

Экран приложения<br />
Экран приложения

5. Последовательно нажимаете на "Download SD model", "Clone Repo", "Install Upscalers" и ждете, пока каждый из них скачается/установится. Прогресс можно наблюдать в левом нижнем углу приложения. Мне еще пришлось после этого делать Re-install, но вам может не пригодиться. Все поля должны быть отмечены галочками, если все прошло успешно.

Так установщик выглядит после всех процедур.<br />
Так установщик выглядит после всех процедур.

6. Последний шаг - настраиваем место сохранения результатов и потребление видеопамяти. Заходим в настройки, отмечаем галочкой Low Memory Mode (если у вас меньше 8 гб видеопамяти), выбираем место сохранения результатов и то, надо ли создавать отдельную папку под каждый новый запрос к нейросетке. Я рекомендую создавать под-папки, так проще потом делиться результатами с остальными. Если вдруг ваш запрос к нейросети очень длинный и Windows не создаст папку с таким названием - картинки сохранятся в базовой указанной вами папке.

У меня настройки выглядят так<br />
У меня настройки выглядят так

Поздравляю, вы справились!

3. Генерируем изображения по тексту

Самый базовый вариант:

Вбиваете в поле Promt свой запрос, нажимаете Generate, ждете.

SD фанатет от Bomberman? Запрос неконкретный, результат - тоже<br />
SD фанатет от Bomberman? Запрос неконкретный, результат - тоже

Какие настройки на что влияют (Подробнее - читайте в гайде):

  • Сколько изображений нагенерировать. Больше изображений - дольше генерация, все просто.
  • Steps - сколько шагов ИИ сделает в попытке выполнить ваш запрос. В теории, чем больше шагов, тем дольше обрабатывается запрос и качественнее результат, но на практике улучшение заметно не всегда. Для разных Sampler (о них ниже) оптимальное число шагов разное. По умолчанию рекомендуют 30-50. Если вас не устраивает какая-то часть изображения (например, глаза), лучше не увеличивать число шагов, а детализировать текстовый запрос к этой корявой части
  • Creativeness (Guidance Scale) - насколько ИИ волен к интерпретации вашего запроса и должен ли он учитывать все его части. 2-6 - ИИ творит, что хочет, 7-11 - половину от вашего запроса возьмет, половину додумает, 12-15 - Постарается учесть большую часть вашего запроса, 16+ - Что написали, то и реализует. По умолчанию рекомендуется значение 8. Уверены в своем описании - 12.
  • Seed - откуда ИИ будет стартовать свою отрисовку. Разные стартовые точки = разные итоговые результаты. Если вам не важна повторяемость результата - ставьте значение минус 1 . Если вы пытаетесь улучшить свой текстовый запрос - лучше зафиксируйте какое-то конкретное стартовое число и не меняйте его.
  • Resolution - исходный разрешение получаемого изображения. Больше разрешение = больше видеопамяти нужно для генерации изображения. Нюансы - По умолчанию Stable Diffusion натренирован на изображениях 512*512, их он отрисовывает лучше всего. 256*256 - получается вырвиглазное нечто. Сделаете больше 512 - скорее всего он будет дублировать части изображения несколько раз в разных местах. Если вам нужно просто изображение большего разрешения, но с +- тем же числом деталей - лучше воспользоваться апскейлером (о них позднее). Не обязательно делать квадратные изображения, . Ходят слухи, что будет выпущена модель, обученная на 1024*1024 изображениях, но пока работаем с чем есть.
  • Sampler. Я не знаю, как это работает "под капотом" (желающие объяснить - Welcome!), но с разными вариантами изображения генерируется немного по-разному. Наглядно это представлено на этом скрине:
Взято <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.reddit.com%2Fr%2FStableDiffusion%2Fcomments%2Fx4zs1r%2Fcomparison_between_different_samplers_in_stable%2F&postId=1345343" rel="nofollow noreferrer noopener" target="_blank">здесь</a> .Первая и последняя строчка съехали относительно друг от друга на 1 позицию<br />
Взято здесь .Первая и последняя строчка съехали относительно друг от друга на 1 позицию

Как это описывает сообщество:

k_lms: The Old Reliable.Вариант по-умолчанию. Каждый шаг отрабатывается сравнительно быстро, но для хорошего результата нужно 50-80 шагов.

k_ddim: The Speed Demon. Хорош уже на 8 шагах, что позволяет быстро перебирать множество вариантов.

k_euler_a: The Chameleon. Быстр, что-то интересное выдает уже на 8-16 шагах, но с каждым шагом изображение может кардинально поменяться.

k_dpm_2_a: The Starving Artist . Медленный на каждом шаге, нужно больше шагов для генерации приличного качества (50-80), но результат дает чуть более детализированный, по сравнению с тем же k_euler_a.

Для начала я обычно генерю с k_euler_a и 20 шагами. Если корявые глаза-руки, а в остальном норм - ставлю k_dpm_2_a и 75 шагов.

3.5 Особенности текстовых запросов

Если вы уже знакомы с Midjourney и тем, как хорошо генерировать запросы для него - переносите свои навыки на Stable Diffusion, только помните, что здесь нет команд вроде --wallpaper, --beta и нет опции разделять сущности через :: (можно через веса, об этом позже)

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

Если же сил возиться с еще одной нейросетью нет - Уже существуют сайты, на которых вы можете посмотреть, что выдаст SD при том или ином запросе (https://lexica.art/). Посмотрите на то, как люди формируют запросы по сходной тематике, вдохновитесь и используйте их как основу для своих собственных изображений. Удаляйте части запроса, добавляйте новые и смотрите к какому результату это приводит. Посмотрите на самые популярные работы в сообществе и как к ним был составлен текст.

Можете попробовать использовать генераторы описаний, в которых уже есть какие-то известные элементы описаний, на которые реагирует ИИ. Например, вот этот

Как пользоваться нейросетью Stable Diffusion

Сейчас считается, что чем конкретнее и многословнее будет ваш запрос - тем лучше. Описывайте одно и то же разными словами. Хотите высокой детализации? Пишите "Masterpice, high quality, ultra-detailed, 4k" и что-нибудь еще. Или указывайте автора, рисующего в гипер-реалистичной манере через запрос "by %Фамилия-Имя автора%, из тех ,что есть в датасете LAION. Или даже несколько похожих авторов сразу.Или непохожих, для большей художественности. Что мешает смешать Моне и Ван Гога? Синьяка и Хокусая?

Учтите, что больше 75 слов за раз SD не воспринимает.

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

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

Есть возможность вручную указывать веса для каждого элемента (насколько нейросеть должна учесть каждый). После целой фразы ставите ":xx", где xx - вес этого элемента при генерации.В сумме веса всех элементов должны давать 100. Пример запроса для генерации наполовину мини-дракона, наполовину - хорька под картинкой

a small cute blue dragon perched on a footstool, photography, Canon EOS, color, cinematic postprocessing:55 a cute brown ferret perched on a footstool, photography, Canon EOS, color, cinematic postprocessing:45 . От <a href="https://api.dtf.ru/v2.8/redirect?to=https%3A%2F%2Fwww.reddit.com%2Fuser%2FSmashcolor%2F&postId=1345343" rel="nofollow noreferrer noopener" target="_blank">Smashcolor</a><br />
a small cute blue dragon perched on a footstool, photography, Canon EOS, color, cinematic postprocessing:55 a cute brown ferret perched on a footstool, photography, Canon EOS, color, cinematic postprocessing:45 . От Smashcolor

4.Модификация готового изображения

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

Фотография моего коллеги в стиле Анри Руссо<br />
Фотография моего коллеги в стиле Анри Руссо

У вас появится возможность настроить вес вашего исходного изображения и текстового описания, которое послужит основной для модификации. В данной программе чем ближе выставите слайдер Strength к 0, тем больше изображение будет похоже на текстовое описание. Чем ближе к 1 - тем больше на исходное изображение.

Я обычно выставляю около 0.4-0.6, получается сохранить детали и запроса и исходника. Когда ставлю больше 0.6 с фотографиями людей начинается творится хтонический ужас. Меньше - слишком далеко от оригинала.

5. А что дальше?

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

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

Вызов апскейлера и корректировщика лиц скрывается под этой кнопкой. <br />
Вызов апскейлера и корректировщика лиц скрывается под этой кнопкой.

Удачи! Делитесь не только интересными результатами, но и удачными комбинациями запросов и настроек!

319319
304 комментария

А где инструкция для снятия запрета на NSFW?)

16

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

Для продвинутых - https://www.reddit.com/r/StableDiffusion/comments/wv2nw0/tutorial_how_to_remove_the_safety_filter_in_5/

5

ВАУ!!! 🤯 Какая крутая нейронка! Да ещё и на собственном компе можно использовать!
Да ещё и 18+ NSFW можно генерировать!!! 🤯🤯🤯🤯🤯🤯

А можно её дообучать? На пример, на хентай манге? 😋

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

Оно того стоило)

13