Из этой статьи вы узнаете как пользоваться нейросетью «Стабильная Диффузия» (англ. Stable Diffusion), как установить ее к себе на компьютер, как сгенерировать первые изображения по запросу и как стилизовать ваши собственные фотографии.
Официальный сайт: www.stability.ai
Стабилити АИ (англ. Stability AI) — это исследовательская лаборатория, которая занимается разработкой инструментов т.н. искусственного интеллекта, в т.ч. открытых моделей ИИ для изображений, языка, аудио, видео и 3Д. Главный офис находится в Лондоне. Релиз «Стабильной Диффузии» состоялся в августе 2022 года.
Стабильная Диффузия (англ. Stable Diffusion) — это нейросеть (модель ИИ), позволяющая генерировать изображения на основе текстовых фраз для генерации. Программный код продукта является открытым, в отличие от Мидджорни и доступен для скачивания любым человеком. Систему можно использовать как на сторонних сайтах за определенную плату, так и установить на собственный компьютер.
Установка на собственный компьютер предъявляет повышенные требования не только к технической составляющей, но и к определенным навыкам программирования. Но не стоит расстраиваться, т.к. энтузиасты со всей планеты поработали над этим и создали множество удобных сборок, устанавливающихся на компьютер за пару кликов.
Генерация через веб-сайты
Генерация изображений через сторонние веб-сервисы обладает как преимуществами так и рядом недостатков. К преимуществам можно отнести то, что вам не требуется самостоятельно настраивать нейросеть у себя на компьютере, вы просто пользуетесь настроенной системой через веб-интерфейс на сайте разработчика. Отсюда вытекают и основные минусы. Вычислительные мощности серверов ограничены, поэтому разработчики вынужденно ограничивают как количество бесплатных запросов, так и максимальный размер получаемого изображения.
Dreamstudio.ai
Dreamstudio.ai — это официальный портал, созданный компанией разработчиком нейросети «Стабильная Диффузия».
При регистрации вы получаете 100 кредитов, которых, по заявлению разработчиков, хватит на генерацию 450 изображений. Когда они будут исчерпаны, вам предложат купить платный пакет из 1000 кредитов за $10, которого должно хватить на 5000 изображений.
Официальный сайт: beta.dreamstudio.ai
Портал предоставляет доступ к самым последним доступным версиям моделей СД. Помимо этого, инструмент работает с потрясающей скоростью, позволяющей генерировать изображения менее чем за 15-20 секунд.
Huggingface.co
Huggingface.co — это сервис, который предоставляет бесплатный доступ к последней версии модели СД. В отличии от Dreamstudio, функционал несколько обрезан и не позволяет выставлять множество параметров (количество шагов, масштаб, размер и др.). Плюс ко всему, генерация изображения через Huggingface требует значительно больше времени.
Официальный сайт: huggingface.co/spaces/stabilityai/stable-diffusion
В данный момент времени, онлайн-сервисы, предлагающие услуги по генерации изображений, растут как грибы. Разумеется они не ограничиваются предложенными выше.
Генерация на своем компьютере
Стабильная Диффузия — это нейросеть с открытым исходным кодом. Это значит, что вы можете запустить ее копию у себя на компьютере. Для комфортной работы вам потребуется видеокарта с объемом памяти от 6 ГБ. Чем мощнее будет у вас компьютер, тем быстрее будут генерироваться изображения.
Stable Diffusion WebUI
Stable Diffusion WebUI — это веб-приложение, используя которое вы получаете доступ к разнообразным моделям СД и генерации на их основе. Создание изображений осуществляется с помощью введения фраз для генерации в веб-браузере. Данный программный продукт основан на библиотеке Градио для Стабильной Диффузии. К преимуществам данного продукта можно отнести то, что он будет работать на любых операционных системах и у вас появляется доступ к многочисленным дополнительным настройкам.
Официальный сайт: github.com/AUTOMATIC1111/stable-diffusion-webui
К недостаткам или точнее сказать к временным трудностям, которые можно преодолеть, потратив пару своих дней, можно отнести то, что для запуска программы вы должны будете установить несколько программ: Питон и Гит. И в некоторых случаях вам может потребоваться использовать командную строку для ввода инструкций.
Плюс вы должны понимать и разбираться в базовых настройках, которые нам предлагает система и модель СД.
Всем заинтересованным читателям я бы горячо рекомендовал разобраться в теме и попробовать установить хотя бы одно приложение у себя на компьютере. За развитием этой системы нужно пристально следить, т.к. она находится в свободном доступе и в любой момент может прыгнуть на два шага вперед.
Easy Diffusion
Easy Diffusion — это программное решение, которое предлагает самый простой способ установки «Стабильной Диффузии» у себя на компьютере. Установка будет происходить в один клик и при этом вам не потребуется устанавливать дополнительное программное обеспечение.
Для установки нужно скачать архив с установщиком, распаковать папку stable-diffusion-ui и разместить ее в корневой директории с:\stable-diffusion-ui. Затем необходимо запустить исполняемый файл Start Stable Diffusion UI.cmd и немного подождать, пока программа будет устанавливаться.
Официальный сайт: github.com/cmdr2/stable-diffusion-ui
К преимуществам сборки можно отнести: удобный и понятный интерфейс, возможность создания очереди запросов, предварительный просмотр в реальном времени, встроенная библиотека стилей и модификаторов, возможность использования пользовательских моделей СД и др.
Как генерировать изображения?
Генерация изображений в СД — это отдельная и очень большая тема, которая требует гораздо более детального и углубленного подхода. В рамках этого поста мы рассмотрим лишь основные моменты, с которых стоит начать и на которые стоит обратить внимание.
Большинство нейросетей представляют из себя системы, работающие по схеме «Текст —» Изображение«, поэтому для получения желаемого изображения, нам нужно будет составить определенную текстовую фразу для генерации.
Структуры фраз для генерации у различных нейросетей примерно похожи, но у каждой будут свои особенности и нюансы, которые стоит учитывать в своей работе.
Если у вас есть опыт работы с Мидджорни, то стоит запомнить, что СД не понимает команды с двойным тире и двойными двоеточиями: —ar, —no, :: и др.
Структура фразы для генерации для Стабильной Диффузии: объект/субъект, стиль, действие/сцена, художник, фильтры.
Приведенная выше структура не является единственно правильной, но позволит вам получить хорошие результаты с первых попыток.
- объект/субъект — основной строительный блок для генерации. Например: african rhino (рус. африканский носорог).
- стиль — вторая важная часть фразы для генерации, иногда достаточно указать объект/субъект и
стиль
, чтобы получить хорошее изображение. Если указание художественного стиля отсутствует, то система возьмет за основу тот, что чаще всего встречается на похожих изображениях. - действие/сцена — действие описывает, что делает объект/субъект, а сцена описывает, где это происходит. Например: run along the savannah (рус. бежит по саванне).
- художник — имя художника, чей графический стиль должен быть присвоен создаваемому изображению. Параметр является необязательным.
- фильтры — фильтры позволяют придать изображению определенную стилистику и если можно так выразиться, изысканность. Например, если вы хотите придать изображению больше «художественности», то можно добавить «Trending on Artstation». Если хотите добавить больше реалистичного освещения, то добавьте «Unreal Engine». Фильтров существует великое множество и их использование ограничивается лишь вашей фантазией. Среди популярных можно выделить следующие: Highly detailed, surrealism, trending on art station, triadic color scheme, smooth, sharp focus, matte, elegant, the most beautiful image ever seen, illustration, digital paint, dark, gloomy, octane render, 8k, 4k, washed colours, sharp, dramatic lighting, beautiful, post processing, picture of the day, ambient lighting, epic composition и др.
Создавая запрос для генерации помните, что общаетесь с написанным программистами кодом. Если вы хотите получить более предсказуемый результат, формулируйте запрос указывая точные объекты, места и свойства изображаемого. Обратите внимание, что длина фразы не должна быть больше 75 слов.
Чем ближе к началу стоит слово в запросе, тем большей вес дает ему система. Именно поэтому в начале запроса рекомендуется указывать основной изображаемый объект и его свойства. Если же вы хотите самостоятельно выставить вес, то используйте конструкцию «:хх», где хх — числовое значения веса. Например: Angry dragon:60 fly over medieval castle:40. В сумме, все веса должны давать 100.
Обратите внимание! Фразы для генерации желательно вводить на английском языке. Используя его, система выдаст наиболее привлекательные изображения.
В отличие от Мидджорни, Стабильная Диффузия «любит» более длинные и точные описания, позволяющие ей получать лучшие результаты.
Если у вас возникли проблемы с составлением запроса, то вы можете подсмотреть как составляют фразы для генерации другие люди. Существует множество сайтов, где люди делятся своими наработками и одним и таких сайтов является www.lexica.art. Можете взять за основу существующий запрос и экспериментировать с ним, вводя в него новые слова и значения.
Параметры генерации
Семена и Стабильная Диффузия
Семя (англ. Seed) — это уникальное числовое значение, т.н. начальная точка для генерации. Ее также можно сравнить с определенными математическими координатами в математической системе. Семена используются для инициализации генерации.
Стабильная диффузия работает таким образом, что принимает значения двух входящих параметров и переводит их в фиксированную точку в пространстве генеративной модели. Этими параметрами выступает значение семени и текст фразы для генерации. Если вы хотите, чтобы Стабильная Диффузия выводила один и тот же результат, необходимо зафиксировать значение семя + фраза для генерации.
Обычно, при генерации, значение для семени определяется в случайном порядке. Именно поэтому, вводя одну и ту же фразу для генерации, можно получать очень большое количество разнообразных изображений.
В случае же использования одного и того же значения для семени, вы будете получать похожие изображения, но с регулируемыми, посредством введения новых слов во фразу для генерации, свойствами изображаемого объекта.
При использовании семян избегайте изменения размера генерируемого изображения. В противном случае вы получите другое изображение.
Шаги
Шаги (англ. Steps) — это повторяющиеся итерационные циклы, которые начинаются со случайного шума, генерируемого при вводе фразы для генерации. С каждым шагом удаляется некоторое количество шума, что приводит как повышению качества создаваемого изображения.
Чем большее количество шагов вы будете использовать, тем более качественным будет ваше изображение, но не стоит перегибать с данным параметром. Оптимально использовать значения от 25 до 50.
Использование большего количества шагов может привести к генерации немного другого изображения, и не обязательно к лучшему качеству. Помимо этого, вы получите замедление процесса генерации. Чем больше шагов будет выполнено, тем больше времени будет на это потрачено.
Шкала соответствия запросу
Шкала соответствия запросу (англ. Guidance Scale или CFG Scale) — это шкала, которая позволяет выставить цифровое значение, которое будет соответствовать определенному уровню интерпретации вашего запроса. Т.е. это параметр, который контролирует насколько процесс генерации будет следовать за фразой для генерации.
Чем ниже установленное значение, тем более вольный результат вы получите, чем выше установленное значение, тем генерация будет более приближена к вашему запросу. Но установка максимальных значений не всегда эффективна с точки зрения получаемого результата, т.к. изображение может получиться достаточно «скудным и сухим» в плане деталей и общего эстетического качества, плюс к этому вы получите множество случайных артефактов.
Оптимальное значение находится в пределах от 7 до 10. В этом случае Стабильная Диффузия половину возьмет от вашего запроса и половину додумает самостоятельно. Если вы хотите, чтобы система учла большую часть вашего запроса, то установите значение в пределах от 11 до 15.
Если установить значения, превышающие 15, то система попытается досконально точно обработать ваш запрос. И наоборот, если установить значения от 1 до 6, то вы получите наиболее креативное исполнение, которое может быть несколько далеким от вашей фразы для генерации.
Как видно из примера выше, при установленном значении 2, мы получаем настолько вольную интерпретацию запроса, что система пытается просто продублировать лошадь и создать из нее что-то своё. Наиболее красивый результат показала установка значения в 5 и 7,5. Обратите внимание, что СД добавила к изображению луг с травой и небольшую дымку на заднем плане. Их не было в моем запросе. Ну и если посмотреть на последнее изображение, где значение было выставлено в 12, то вы увидите практически полное соответствие запросу. При этом исчезает добавленная на предыдущих изображениях дымка и большая часть луга с травой.
Установка правильных значений зависит не только от желаемых результатов, но и от сложности фразы для генерации. Чем более длинной является фраза для генерации, тем большее значение вы можете установить. Это позволит системе более подробно проработать мелкие детали и учесть их в финальном изображении. Давайте посмотрим на пример ниже.
Некоторые концепции из подсказки более заметны на изображениях с увеличенными значениями. Обратите внимание, как постепенно увеличивается качество прорисовки мелких деталей. Но в какой-то момент изменения перестают быть критическими и мы получаем несколько иной образ.
Если перед вами стоит задача по созданию изображения с множеством мелких деталей, указанных во фразе для генерации, то вы можете начать с более высоких значений шкалы, например с 12 и до 19.
Отрицательные фразы для генерации
Отрицательная фраза для генерации (англ. Negative prompt) — это текстовое выражение, которое указывает Стабильной Диффузии, что необходимо исключить из сгенерированного изображения. Указанная фраза может помочь исправить некоторые аномалии изображения и избежать генерации определенных вещей и стилей.
В примере выше я попросил СД удалить из изображения слева сгенерированного слона. Как видно на изображении справа, система успешно справилась с заданием.
Размер изображения
Данная настройка определяет соотношение сторон генерируемого изображения. На данный момент, оптимальным является размер равный 512 × 512 пикселей. Вы можете экспериментировать и с другими вариантами, но помните один важный момент, Стабильная Диффузия оптимизирована для работы именно с этим разрешением.
Изменяя высоту или ширину, вы можете получить как увеличенное время генерации так и завышенное потребление ресурсов компьютера, что иногда может приводить к краху системы. Если вам нужно получить изображение в высоком разрешении, то сперва увеличьте количество шагов, а уже потом запустите программу или скрипт для увеличения масштаба.
Контроль внимания
Составляя фразу для генерации, с помощью специальных операторов вы можете расставить определенные акценты на тех или иных словах и фразах. Делается это с помощью следующих конструкций:
- () — увеличение акцента
- [] — уменьшение акцента
Увеличение акцента будет означать, что вложенные слова и фразы будут в большей степени влиять на сгенерированное изображение. Уменьшение акцента произведет обратное действие: вложенные слова и фразы будут в меньшей степени влиять на сгенерированное изображение.
Контроль внимания или расстановка акцентов будет работать как в стандартных фразах для генерации так и отрицательных.
— (слово или фраза) — увеличивает акцент в качестве фактора 1.1
— ((слово или фраза)) — увеличивает акцент в качестве фактора 1.21 (= 1.1 * 1.1)
— [слово или фраза] — уменьшает акцент на фактор 1.1
— (слово или фраза:1.5) — увеличивает акцент в качестве фактора 1.5
— (слово или фраза:0.25) — уменьшает акцент на фактор 4 (= 1 / 0.25)
Стилизация собственных фотографий и изображений
У СД есть замечательная функция, которая позволяет вам стилизовать собственные изображения и придавать им необходимый визуальный оттенок. Чтобы стилизовать изображение, необходимо выполнить пару шагов. Все действия я буду выполнять в WebUI Easy Diffusion.
Шаг 1. Выбираем изображение. В разделе img2img нажимаем на кнопку Browse и через Проводник выбираем фотографию, которую будем стилизовать.
Шаг 2. Указываем стиль. Можно указать непосредственно название самого художественного стиля, например Surrealism, Steampunk, Pixel art и др. Или имя художника, чей стиль необходимо позаимствовать, например by Paul Gauguin, by Pierre-Auguste Renoir, by Rembrandt и др.
Давайте попробуем стилизовать портрет Мона Лизы, созданный Леонардо да Винчи. Первый портрет были стилизован под Поля Гогена, второй под Ренуара и третий под Рембрандта. Как видите стилизация оказалась весьма успешной.
В варианте ниже, вместо имен художников я указывал непосредственно названия стилей: сюрреализм, стимпанк и пиксель арт.
Я думаю, что для первого знакомства с системой я предоставил достаточное количество информации. По мере того, как вы будете обрастать опытом генераций, вы постепенно сможете расширить свои знания и углубиться в этом направлении. Дополнительные знания будут приходить постепенно. Плюс со временем вы сделаете собственные находки, которые позволят вам сформировать собственный стиль генераций.
Отличная статья, всё по существу. В рунете сложно найти столь подробное описание. Использую Easy Diffusion, как по мне, он лучше чем Stable Diffusion, начинает работать сразу после установки на ПК. Большое спасибо!
Спасибо. Программисты скоро все допилят и будут сборки, устанавливающиеся на раз-два.
Большое спасибо! Одна из лучших статей по Easy Diffusion для начинающих, коим я и являюсь.
Пожалуйста.