Stable Diffusion. Часть первая. Надеюсь, не последняя.
-
Среди множества нейросетей, генерирующих картинки по текстовому запросу, данная нейросеть достаточно сильно выделяется. Поскольку может не только генерировать картинки по запросу, но и имеет более широкий функционал, но об этом не в этой части, так как то, что я сейчас покажу, имеет ограниченный функционал. Более полное - в последующих частях.
К общественности утекли исходники версии 1,4-1,5, написанные, к слову, на языке Pyton. Что так же подтолкнуло ее к сильному развитию.
Нельзя сказать, что она без недостатков. Отнюдь. "Болезнь" неправильной генерации числа рук, ног, искаженных лиц присутствует и у нее. Но это частично лечится негативными промтами, частично встроенным функционалом, о котором как-нибудь в другой части.
Основное отличие Stable Diffusion (далее SD), с точки зрения пользователя, это множество вариантов генерации множества вариантов изображений, по одному запросу.
Для того, что бы просто "пощупать", что это такое, в принципе, ничего надо. Воспользуемся услугами сайта
https://huggingface.co/Естественно, функционал тут ограничен, поскольку это для общественного пользователя.
Это сайт, где есть множество всевозможных нейросетей для тестов, есть множество интересных реализаций. В прочем, сами полазьте, посмотрите, что вам нужно.
Например,
https://huggingface.…oru_stringРаскладывает картинку на теги для генерации изображения. Включая попытку распознать персонажа.
Впрочем, в SD это уже частично встроено.
Или
https://huggingface.…backgroundВ убирает фон картинки, оставляя персонажа. Бывает полезно.
Посмотрите сами, что вам надо...
https://huggingface.co/spacesТам много интересного.
-
Возвращаясь к SD
Нужно понимать, что это общественное, и может быть перегружено. Нормальная скорость генерации - 10-30 секунд, в зависимости от запроса. Если еще никто не "теребонькает" эту же сеть. По умолчанию идет генерация 512 на 512, и больше сделать нельзя. Но пока больше и не надо, и даже в этой урезанной версии есть функционал увеличения картинки.Точнее, 2, но я ниже расскажу про один из них. Увеличивает, к слову, качественно. Хотя и долго.
https://huggingface.…duru/webui - самая популярная. Работает на модели Anything 3.0. Генерация картинки в стиле аниме. Впрочем, с помощью промтов, можно привести к более серьезному виду.
https://huggingface.…bui-docker - почти тоже самое. Только модель Anything 4.5. При одинаковом промте картинки будут отличатся. Не только чем-то в деталях, но и могут позой персонажа.
https://huggingface.…x3.4-webui - на базе модели Protogen x3.4. Можно сказать, достаточно близкая к реальности, но страдает достаточно сильной тягой к искажению лица.
Для пробы пока этих достаточно.
-
Теперь вкратце о функционале.
Вкладка txt2img, по сути, и есть то, что нас интересует.
Promt - собственно, и есть запрос. Можно перечислением, через запятую. Можно литературным запросом (естественно на английском), типа "Девушка рыцарь с красными волосами в блестящих доспеха едет на коне вдоль реки". Это то, на что нейросеть должна обращать внимание. Но иногда она может на отдельные части подзабить, такое есть. Но так даже интереснее.
Изображение может быть стилизовано под определенного художника, или, даже нескольких, усли будет в промте "by ...художник...", или несколько этих by через запятую. Случайный стиль художника можно выбрать, ткнув стилизованную палитру в конце промта. Требует время.
Negative promt - это то, что нейросеть должна попытаться исключить из генерируемого рисунка. Например, включение туда NSFW - заставит убрать весь... гм... непроизводственный контент, в виде голых си... Ну, понятно.
Есть еще, так называемые, весы. Это то, на что нейросеть должна уделять внимание больше остального. Это указывается в обычных скобках. Например, (flowers), (river) говорят нейросети сгенерировать на изображении цветка и речки более приоритетно, чем остальное содержимое. Скобок, вроде, может быть до 5 на один параметр.
Sampling Steps - (условно для пониания, но не верно) - количество проходов на картинку. Определяется эмпирически. Влияет на разные детали на картинке, в некоторых случаях может даже менять картинку полностью. Увеличение числа уменьшает скорость генерации.
Sampling method - Метод генерации. Для начала, если вы собираетесь генерировать изображения с персонажами, вам лучше всего подойдут - Euler a, Heun, DPM fast, DPM adaptive, DPM++ SDE Karras, DDIM. И лучше не использовать LMS, LMS Karras, PLMS. Это не запрет, а совет - эти методы очень портят лица. Запретов тут нет, в принципе. Изменение метода генерации может поменять позу персонажа, но не обязательно.
Width, Height - высота, ширина в точках. Важно - изменение полностью изменяет картинку, это будет совершенно другое изображение.
CFG Scale - условно, как буквально нейросети воспринимать промты, ну и не только. При малых числах (2-4..) - будет такой, своеобразно блеклый рисунок. При больших (за 20) - может быть кричаще и ядовито цветастый. Некоторым методам не нужно большой величины. Оптимально - 7-15.
Seed - это один из моментов, который и выделяют SD от других. Грубо говоря,... ну.... номер картинки. При одинаковых параметрах и этом числе будет генерироваться одна и та же картинка (в рамках одной модели). Изменение этого числа и приводит к генерации совершенно другой картинки без необходимости менять или переформулироваь запрос. Если стоит "-1" - картинка будет со случайным числом. Если вам полученное изображение, в принципе, нравится, и хотите попробовать поменять лдетали (метожд генерации или чуть поизменять CFG Scale и Sampling Steps) - нажимаете зеленый треугольник, это число зафиксируется в строке.
-
Важно - сгенерированный PNG файл содержит в себе почти всю информацию по параметрам, просмотреть которую можно в последней вкладке - PNG info.
Вкладка EXTRAS, к слову, и есть тот самый Upscaler. Понимает и jpg.
С этим разберетесь сами, там не сложно.
---
И да. Советую подписаться на этот канал, там дают изображения с промтами. Правда, под все, но под SD тоже часто бывают. Ну и, так же, часто можно взять промт от другой нейросети и подогнать под себя.
Цитата: Телеграм-канал Нейроарты и их промптыPrompt: [red fox: gorgeous goddess Kitsune: 3], [trending on artstation: professional photo: 3], clear view, detailed eyes, detailed lips, clear sky, foggy, autumn
Negative: (deformed, distorted, disfigured: 1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers: 1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, low quality, worst quality, bad anatomy, signature, watermark, username, letters
Автор: Alex Astariec
https://t.me/neiroarts_and_prompts/344
На этом пока все, следующий пост по SD, если нужно, будет, как запустить ее в Google Colab. Там, правда, несколько другие ограничения.