Stable Diffusion
Содержание - Что такое Stable Duffusion - Установка на Google Colab - Модели - Text to image - Image to image - Control Net - Lora - Prompt
Что такое Stable Diffusion ?
Stable Diffusion - это нейросетевая модель для генерации изображений на основе текстовых подсказок. Основные моменты о ней:
- Основана на архитектуре diffusion-моделей, разработана группой компаний CompVis в 2022 году.
- Обучается на огромных datasets из пар текст-изображение, может содержать сотни миллионов и даже миллиарды таких пар.
- Позволяет генерировать фотореалистичные или художественные изображения произвольного разрешения при подаче на вход текстового описания желаемого результата.
- Использует текстовые подсказки для управления стилем, композицией, деталями изображения.
- Поддерживает режимы текст-в-изображение, изображение-в-изображение и другие.
- Может работать на ПК с обычным графическим ускорителем, в отличие от предыдущих коммерческих моделей.
- Позволяет создавать уникальный визуальный контент, воплощать творческие идеи и концепции.
- Имеет открытый исходный код и доступна для использования бесплатно.
В целом, это мощный ИИ-инструмент для художников, дизайнеров, креативных специалистов и просто любителей.
Установка Stable Diffusion на Google Colab
Мы установим Stable Diffusion на Google Colab, так как локальная установка на свой компьютер потребует значительных вычислительных мощностей. Есть только один недостаток такого подхода - это плата за использование Google Colab. Ранее можно было этим способом пользоваться бесплатно, но Google обновил политику касаемо Stable Diffusion.
Google Colab - это сервис интерактивных вычислений, предлагаемый Google
Обновление от 21 апреля 2023 г.: Google заблокировал использование Stable Diffusion с бесплатной учетной записью. Для использования этого ноутбука необходим платный тариф. Стоимость 10$ за 100 ед. вычислительных блоков. (это примерно 50 часов работы на стандартном графическом процессоре)
Вот тут можете ознакомиться с тарифами и приобрести нужный вам
https://colab.research.google.com/signup
Учитывая санкции, оплатить с карт РФ вы не сможете, поэтому, если у вас нет зарубежной карты, вы можете воспользоваться специализированными сервисами, которые оплачивают с иностранных карт за 10-20% от суммы покупки. Сейчас таких сервисов в интернете достаточно много.
Stable Diffusion - это модель машинного обучения. Сама по себе она не очень удобна в использовании, поскольку требует написания кода. Многие пользователи предпочитают использовать графический интерфейс пользователя (GUI) для работы в Stable Diffusion. Вместо написания кода вы можете использовать подсказки в текстовом поле и нажимать кнопки для создания изображений.
AUTOMATIC1111 был одним из первых графических интерфейсов, разработанных для стабильной диффузии. Хотя оно связано с учетной записью AUTOMATIC1111 на GitHub, разработка этого программного обеспечения была предпринята усилиями сообщества. Его мы и будем устанавливать на Google Colab.
Ссылка на блокнот AUTOMATIC1111: https://colab.research.google.com/github/TheLastBen/fast-stable-diffusion/blob/main/fast_stable_diffusion_AUTOMATIC1111.ipynb
Переходим по ссылке выше и копируем блокнот на свой диск. После нажатия "Копировать на диск" блокнот откроется в соседней вкладке. Эту вкладку можно закрыть.
Затем вам нужно подключиться, нажав на кнопку "Подключиться" в правом верхнем углу. После подключения вы увидите количество доступных ресурсов и их использование. Обязательно отключите блокнот, когда закончите. Он будет потреблять вычислительные единицы, если останется открытым.
После подключения запускайте ячейки блокнота последовательно. Для этого нажмите на значок "плей" возле каждой ячейки и дождитесь завершения выполнения. Затем переходите к следующей ячейке и так далее.
Про настройки внутри ячеек (выбор модели, путь к модели и тд. будет расписано в разделе модели)
Когда вы запустите все ячейки, вы получите ссылку на графический интерфейс AUTOMATIC1111. Выглядеть это будет вот так.
После перехода по ссылке вы увидите графический интерфейс AUTOMATIC1111, в котором и будет вестись работа.
После того, как вы все установите, на вашем Google Drive появится папка с названием "SD". В этой папке будут находиться различные модели, лоры и т.д., о которых мы поговорим чуть позже, а также изображения, которые вы будете генерировать.
Модели Stable Diffusion
Модели Stable Diffusion представляют собой предварительно сформированные наборы данных с определенными стилями. Они в основном основаны на базовых моделях 1.5 и 2.1. Вы можете выбрать модель для генерации изображений самостоятельно, исходя из вашего предпочтения, выбрав понравившуюся модель на сайте civitai.com, где доступно множество различных моделей. Вот несколько из самых популярных:
https://civitai.com/models/7371 - ReV Animated
https://civitai.com/models/4823?modelVersionId=15236 - Deliberate
Лично, я часто использую модель ReV Animated. Если пролистать вниз на сайте какой-либо модели, можно увидеть изображения, которые создали люди. Почти у каждого изображения можно посмотреть настройки, которые они использовали для генерации.
Сейчас расскажу, как скачать и использовать модель.
Когда мы запускали ячейки в колабе, там была одна ячейка с названием "Model Download/Load". В этой ячейке есть несколько настроек:
- Model_Version: версия базовой модели, которую мы хотим использовать. В основном все модели сделаны на версии 1.5, поэтому зачастую оставляют 1.5. Я часто также использую 2.1 768, но выбор за вами.
- Path_to_MODEL: здесь мы будем вставлять путь к модели, которую мы хотим использовать (например, модель, которую скачали с civitai, пусть это будет ReV Animated).
- MODEL_LINK: сюда мы вставляем ссылку на модель, которую хотим скачать.
Для того, чтобы загрузить модель, нужно скопировать ссылку для скачивания с сайта civitai, нажав на download правой кнопкой мыши, а затем скопировать адрес ссылки. После этого вставляем полученную ссылку в MODEL_LINK: и нажимаем галочку safetensors."
Как только это будет сделано, запустите ячейку, и начнется загрузка модели. После завершения загрузки, скачанная модель появится в папке "stable diffusion". Ее имя будет model.safetensors. Однако это может быть неудобно, особенно если вы планируете загружать несколько разных моделей. Поэтому рекомендуется переименовать ее так, как вам удобно. Например, можно назвать ее ReVAnimated.safetensors.
Для этого откройте меню слева, нажав на маленькую папку "файлы". Затем перейдите в папку, где хранятся все модели. По указанному пути они все находятся: gdrive > mydrive > sd > stable-diffusion-webui > models > stable-diffusion. Вот в последней папке находятся модели.
После того, как модель скачана, ссылку, которую мы вставляли для загрузки из Colab, нужно убрать, а также галочку safetensors тоже снять.
Теперь нам нужно скопировать путь к скачанной модели. Слева в меню нажмите правой кнопкой мыши на скачанную модель, затем выберите "скопировать путь", и полученную ссылку вставьте в поле Path_to_MODEL:
После этого запускаем ячейку и следуем дальше по очередности, пока не получим ссылку на графический интерфейс. Когда перейдете по ссылке, в верхнем левом углу увидите, что у вас запущена модель ReV Animated.
Теперь пройдемся по функционалу
Text to image
Text-to-image - это одна из ключевых особенностей Stable Diffusion, которая позволяет генерировать изображения на основе текстового описания на естественном языке.
Вы увидите вкладку txt2img при первом запуске графического интерфейса. Эта вкладка выполняет самую основную функцию Stable Diffusion: превращает текстовую подсказку в изображения.
- Пользователь вводит подробное описание желаемого изображения в виде текста на английском языке. Например: "Нарисовать пейзаж заката в пустыне с оазисом на горизонте".
- Нейросеть Stable Diffusion анализирует это текстовое описание, выделяет ключевые смысловые составляющие: пейзаж, закат, пустыня, оазис.
- На основе этих ключевых элементов нейросеть генерирует изображение, которое соответствует описанию. При этом учитываются все детали из текста.
- Изображение создается с нуля, попиксельно. Stable Diffusion может генерировать фотореалистичные или художественные, стилизованные картинки в зависимости от запроса.
- Если результат не совсем точный, пользователь может уточнить запрос, добавив больше подробностей к описанию изображения.
- За счет дополнительных деталей в тексте можно получить максимально реалистичное и соответствующее описанию изображение.
- Text-to-image позволяет воплотить любые образы, описанные словами, в виде картинок. Это очень мощная технология генерации контента.
В целом, text-to-image демонстрирует способность нейросетей понимать естественный язык и генерировать соответствующие визуальные образы. Это открывает большие возможности для творчества и создания контента.
Prompt: Здесь вы будете вписывать то, что вы хотите видеть на изображениях. Будьте подробны и конкретны. Используйте несколько проверенных ключевых слов. Более подробное описание по использованию подсказок будет в разделе "Prompt".
Negative prompt: Здесь, наоборот, вы будете вписывать то, что вы не хотите видеть на изображениях.
Sampling method: Это алгоритм процесса шумоподавления. Я чаще всего использую три метода: DPM++ 2M Karras, Euler a, DPM++ SDE Karras, потому что они хорошо сочетают скорость и качество. Когда будете генерировать изображения, можете переключаться на разные методы и смотреть, какой результат вам больше понравится.
Width/Height: Эти параметры отвечают за размер выходного изображения. Вы должны установить по крайней мере одну сторону на 512 пикселей при использовании модели v1. Например, установите ширину 512 и высоту 768 для портретного изображения с соотношением сторон 2:3.
CFG Scale: Этот параметр определяет, насколько сильно модель должна следовать вашему промпту. Стандартное значение, которое хорошо себя показало на большинстве генераций - 7. Вот примерно, как влияет этот параметр: Значение (1) - в основном проигнорирует ваш промпт. Значение (3) - возьмет небольшую часть от промпта. Значение (7) - хороший баланс между следованием подсказке и свободой. Значение (15) - в большей степени придерживается подсказки. Значение (30) - строго следует промпту.
Sampling steps: количество итераций генерации. Чем больше значение, тем лучше, но и дольше. То есть он будет делать больше шагов для генерации вашего изображения, но зачастую 25 шагов подходят для большинства случаев, и в основном все используют именно это значение. Но опять же, вы можете в любой момент изменить эти настройки и посмотреть на итоговый результат. Вы должны понимать, что Stable Diffusion - это не тот инструмент, где вы нажмете пару кнопок, и он волшебным образом создаст вам шедевр дизайна. Вам постоянно придется играться с настройками, чтобы получить результат, который вы хотите увидеть.
Batch count: сколько вариантов изображения сгенерировать.
Batch size: сколько изображений генерировать за один раз. Влияет на скорость.
Seed: это уникальный номер изображения, начальное случайное число, влияет на вариативность результата, своего рода идентификатор. Если вы оставите значение -1, то каждый раз он будет генерировать вам уникальное изображение с уникальным сидом. Распространенной причиной изменения начального числа является исправление содержимого изображения и настройка подсказки. Например, вы сгенерировали изображение кота на диване, и вам этот результат понравился, но вы хотите добавить коту пушистый хвост. Тогда вы берете сид от этого изображения и вставляете его в поле seed, а в подсказку добавляете "пушистый хвост", и тогда вы получите результат, как и в прошлый раз, только с пушистым хвостом (сцена может полностью измениться, потому что некоторые ключевые слова достаточно сильны, чтобы изменить композицию). Также это удобно, если вы, например, нашли изображение на civitai, которое вам очень понравилось, и вы хотите максимально похожее создать. Вы берете там сид и настройки, и Stable Diffusion постарается сделать максимально похожий результат. Seed вашего изображения будет внизу под ним."
Пример простой генерации txt2img с указанием некоторых базовых настроек:
Image to image
Image-to-image - это еще одна возможность Stable Diffusion, позволяющая трансформировать и модифицировать изображения.
На вкладке img2img вы используете функции преобразования изображения в изображение. Большинство пользователей посещают эту вкладку для раскрашивания и превращения изображения в другое.
Давайте разберем подробно, как это работает:
- Пользователь загружает в модель исходное изображение, которое хочет преобразовать. Например, фотографию кота.
- Далее он вводит текстовую подсказку, описывающую желаемое преобразование изображения. К примеру: "розовый кот с голубыми глазами".
- Нейросеть Stable Diffusion анализирует исходное изображение и текстовую подсказку. Она "понимает", что нужно взять кота и перекрасить его в розовый цвет и поменять глаза на голубые.
- На основе этих данных нейросеть генерирует новое изображение, которое является модификацией исходного. При этом сохраняется общая композиция, но картинка стилизуется под заданный в подсказке стиль.
- Пользователь может экспериментировать, меняя стили, добавляя или убирая детали на изображении с помощью текстовых подсказок.
- Image-to-image позволяет применить к изображениям любые преобразования: стилизацию, цветокоррекцию, изменение композиции, добавление/удаление объектов и многое другое.
- Данная технология открывает большие креативные возможности для художников, дизайнеров, фотографов и других специалистов по работе с визуальным контентом.
В целом, image-to-image демонстрирует умение нейросетей выполнять сложную обработку изображений на основе естественно-языковых подсказок пользователя.
Что самое основное, необходимо сделать для начала работы ?
Шаг 1: Перетащите базовое изображение на вкладку img2img на странице img2img.
Шаг 2: Отрегулируйте ширину или высоту, чтобы новое изображение имело такое же соотношение сторон. Вы должны увидеть прямоугольную рамку на холсте изображения, указывающую соотношение сторон. Чтобы подогнать рамку под изображение, двигайте ползунки Width/Height.
Шаг 3: Установите Sampling method. Я обычно использую Euler a или DPM++ 2M Karass с 25 шагами (Sampling steps).
Шаг 4: Напишите промпт для нового изображения. Я буду использовать для примера простую подсказку: "pink fluffy cat, blue eyes, on the couch" (розовый кот, голубые глаза, на диване).
Шаг 6: Нажмите кнопку «Generate».
Многие настройки, как и в text-to-image, остались такими же. Есть лишь несколько новых:
Denoising strength - регулирует степень изменения изображения. При значении 0 ничего не меняется, а при значении 1 изменит очень сильно. 0,75 - хорошая отправная точка, при которой изменения будут достаточно сильными. С этим параметром стоит играться, в зависимости от того, насколько сильно вы хотите поменять исходник.
Ниже пример изменения изображения. Мы видим, что у нас получилось изображение, похожее на исходное, где есть кот, его положение на диване и цветовая гамма, которую мы задали. Однако этот вариант далек от идеала и значительно изменил наш исходник. Если мы хотим оставить больше от исходника и при этом следовать нашему промпту, то желательно играться с настройками и использовать модель Control Net, но о том, как ее использовать, мы поговорим в соответствующем разделе.
Control Net
ControlNet - это дополнительная нейросетевая модель, которая работает совместно с основной моделью Stable Diffusion. Она предназначена для более точного контроля над процессом генерации изображений.
- ControlNet анализирует текстовую подсказку от пользователя и генерирует предсказание того, какие области будущего изображения должны соответствовать этой подсказке.
- Это предсказание кодируется в виде маски, которая идентифицирует релевантные и нерелевантные подсказке области изображения.
- Далее эта маска используется для модулирования промежуточных шумоподобных изображений, получаемых в процессе диффузии основной модели Stable Diffusion.
- Благодаря этому достигается более точный контроль над генерируемыми областями изображения в соответствии с подсказкой.
- ControlNet обучается наряду с основной моделью Stable Diffusion, чтобы настраиваться на её особенности.
- Существуют разные варианты моделей ControlNet в зависимости от задачи - для распознавания поз, лиц, границ объектов и т.д.
Таким образом, ControlNet позволяет получить больший контроль над процессом генерации изображений в Stable Diffusion за счет анализа текстовых подсказок и модулирования промежуточных изображений. Это расширяет возможности управления генерируемым контентом.
В рамках ControlNet существует несколько различных моделей, предназначенных для решения конкретных задач. Вот некоторые основные из них:
- ControlNet OpenPose - для распознавания человеческих поз и переноса их на генерируемые изображения.
- ControlNet Canny - для переноса краев и очертаний объектов с референса на генерируемое изображение.
- ControlNet Depth - для переноса информации о глубине сцены и расположении объектов в пространстве.
- ControlNet Normal - для переноса нормальных карт и ориентации поверхностей объектов.
Выбор конкретной модели зависит от решаемой задачи и требуемого уровня контроля над изображением. Разные модели ControlNet позволяют гибко управлять процессом генерации.
На GitHub, пролистав вниз, вы можете посмотреть изображения, чтобы понять, на что и как влияет конкретная модель ControlNet: https://github.com/lllyasviel/ControlNet-v1-1-nightly
Чтобы использовать ControlNet, нам нужно скачать нужные модели и поместить их в папку ControlNet на Google Drive.
Вы можете скачать их с сайта https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main.
Чтобы не скачивать модели на свой компьютер и затем не загружать их обратно на Google Drive, я расскажу вам свой лайфхак о том, как их сразу скачать напрямую на Google Drive, используя небольшой код в Colab. Это очень сэкономит ваше время. С помощью этого кода вы сможете в принципе скачивать что угодно напрямую на Google Drive, не используя свой интернет для загрузки.
Для этого вам нужно установить на свой Colab вот этот блокнот: https://colab.research.google.com/drive/132rI-AZOoRtej24u5UKioI6u7CJn8qjC?usp=sharing.
Сохраните его себе на свой диск так же, как сохраняли блокнот Stable Diffusion в самом начале.
Там всего две ячейки. Первая подключает ваш Google Диск, вторая отвечает за загрузку файлов. Во второй ячейке вам нужно указать в file_url ссылку на загрузку модели точно так же, как мы копировали ссылку, когда скачивали модель с civitai.
Переходите на huggingface (ссылка выше) и щелкните правой кнопкой мыши по нужной модели, например canny, далее копируете ссылку и вставляете в блокнот.
Далее, в блоке с with open, нам нужно прописать путь, куда модель скачается. У меня просто по стандарту стоит прямой путь на диск, так что можете оставить его, только обязательно указывайте название файла, который скачиваете, потому что оно само там не пропишется. На скриншоте после "MyDrive/" идет название файла, вот его указываете сами. Как все сделали, запускаете ячейку и начнется загрузка. Все скачается максимально быстро на ваш Google Диск, так как скорость интернета будет использоваться не ваша, а от серверов Google.
После того как скачали нужную модель, ее нужно поместить в папку ControlNet.
Эта папка находится по этому пути: sd > stable-diffusion-webui > models > ControlNet (вот в эту папку помещаете модель)
Как только вы все сделали, перезагружайте блокнот Stable Diffusion и, когда зайдете, у вас будет рабочий ControlNet. Как им пользоваться, вы увидите далее.
Мы ранее в img2img меняли исходное изображение кота на розового с голубыми глазами. Теперь сделаем то же самое, только добавим модель ControlNet Canny. Для этого зайдите в img2img и укажите все те же параметры, которые использовали ранее. Затем прокрутите вниз и раскройте раздел ControlNet. Чтобы запустить модель, нажмите на галочку "Enable" и выберите в окне Preprocessor модель canny, а в разделе Model также выберите canny. Если хотите видеть фото, которое модель берет от исходника, вам нужно загрузить фото там и между Preprocessor и Model нажать на иконку лампочки (но это не обязательно делать, я редко использую эту функцию).
После того, как мы включили ControlNet и указали все настройки, как в img2img, мы нажимаем на кнопку генерации и ждем результатов.
Как можете заметить, результат стал намного лучше, чем то, что мы делали ранее без использования ControlNet. Далее вы можете поиграться с настройками, с промптом и воплощать свои идеи по мере вашей фантазии.
Возможно, вы заметили на скрине выше, что во вкладке ControlNet есть несколько окон: ControlNet0, ControlNet1, ControlNet2 (это мульти ControlNet). Чтобы использовать несколько моделей сразу, вам нужно указать это в настройках Stable Diffusion. Для этого зайдите в верхнее меню "Settings", далее в левом меню пролистайте вниз и найдите "ControlNet". Перейдите туда и в поле "Multi ControlNet" укажите нужное количество окон, которое вы хотите видеть.
LoRA
Что такое модели LoRA и как их использовать в AUTOMATIC1111 ?
Модели LoRA - это небольшие модели стабильной диффузии, которые вносят небольшие изменения в стандартные модели контрольных точек. (например определенный стиль). Обычно они значительно меньше, чем основные модели и редко весят больше 200 Mb. Это делает их очень привлекательными для людей, имеющих обширную коллекцию моделей.
Таким образом, LoRA - это удобный компактный способ внесения небольших изменений в стиль и качество изображений моделей Stable Diffusion.
Вы узнаете, что такое модели LoRA, где их найти и как использовать в графическом интерфейсе AUTOMATIC1111. Посмотрим как влияет LoRA на изображение на примере лоры в стиле песочной скульптуры.
Civitai содержит большую коллекцию моделей LoRA. Примените фильтр LORA, чтобы увидеть только модели LoRA. Вы обнаружите, что все они похожи: женские портреты, аниме, реалистичные стили иллюстраций и т. д.
Hugging Face - еще один источник библиотек LoRA. Здесь вы найдете больше разновидностей моделей LoRA, но коллекция намного меньше.
AUTOMATIC1111 изначально поддерживает LoRA. Никаких расширений устанавливать не нужно.
На первом шаге вам потребуется скачать понравившуюся вам модель LoRA. Вы можете сделать это точно так же, как скачивали ControlNet, используя загрузчик, который я предоставил.
Далее скачанную LoRA нужно поместить в папку LoRA по следующему пути: sd/stable-diffusion-webui/models/Lora
LoRA активируется в промпте специальным запросом: lora:filename:multiplier
filename - имя файла модели LoRA без расширения ( .pt, .bin, и т. д.).
multiplier - это вес, применяемый к модели LoRA. Значение по умолчанию - 1. Установка его на 0 отключает модель, на 0.5 берется 50% от лоры и т. д.
Теперь давайте посмотрим, где в графическом интерфейсе хранятся все модели лор и как добавить их в промпт, чтобы не вводить вручную.
Под кнопкой "Generate" есть красная иконка жесткого диска. Нажмите на нее.
Далее вам нужно перейти в вкладку Lora и там будут храниться все ваши загруженные модели.
Теперь, чтобы добавить запрос LoRA в промпт, нам просто нужно щелкнуть на нужной нам модели LoRA, и соответствующий запрос появится в поле промпт.
После того, как мы нажали на модель LoRA, мы увидим следующий запрос в промпте. Обычно LoRA используют в конце основного запроса, но вы можете пробовать размещать его и в других местах. Также можно использовать несколько моделей LoRA сразу, но не перебарщивайте.
Теперь давайте посмотрим, как модель LoRA повлияет на изображение. Я буду использовать обычное фото идущего мужчины. Чтобы сохранить его положение, я подключу две модели ControlNet (canny и openpose). Значение Denoising strength установлю на 0.6, CFG Scale на 7, Sampling steps на 25, а метод Sampling method на DPM++ 2M Karras.
Prompt: a (sandsculpturecd, sand) fort, building model, The Statue of Zeus,(solo:1.2), standing in sandbeach, no humans, high quality, masterpiece, realistic, photorealistic, long-focus, (outdoors, front light, depth of field, light color), <lora:sandsculpturecd:1>
Negative prompt: nude, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, bad feet, badhandv4, backlighting
Вот такой результат показал стейбл при использовании модели LoRA в песочном стиле. Опять же, он далек от идеала, но как пример - в самый раз.
Как видите, использование моделей LoRA - нечто совсем несложное. В настоящее время их существует очень большое количество и для различных стилей. Так что выбирайте те, которые вам нравятся, и приступайте к экспериментам.
Prompt
Промпт (prompt) - это текстовая подсказка, которая используется в моделях искусственного интеллекта типа Stable Diffusion для управления процессом генерации изображений.
Я в статье иногда пишу промпт на русском языке, в работе всегда используйте английский язык для адекватного результата.
Вкратце о том, что представляет собой промпт:
- Промпт - это описание на естественном языке того, что должно быть изображено. Например: "котенок, играющий с клубком ниток".
- Промпт используется как дополнительная информация, уточняющая для нейросети, какое именно изображение нужно сгенерировать.
- Чем подробнее и конкретнее промпт, тем выше шанс получить именно то изображение, которое требуется.
- Промпт может содержать описание объектов, персонажей, обстановки, стиля, композиции, ракурса, освещения и любых других деталей изображения.
- Качество промпта во многом определяет успешность генерации нужного изображения.
- Хороший промпт должен быть максимально точным, но не слишком длинным. Оптимальная длина - 1-5 предложений.
Таким образом, промпт - это инструмент управления процессом генерации в моделях типа Stable Diffusion, работающий на основе текстовых подсказок на естественном языке. Умелое использование промптов позволяет добиваться желаемых результатов.
Вот основные правила написания хорошего промпта для моделей вроде Stable Diffusion:
- Будьте максимально конкретны и детальны в описании желаемого изображения - объектов, обстановки, стиля, ракурса и т.д.
- Используйте ключевые слова, соответствующие разным аспектам изображения - предмет, среда, стиль, художник и т.д.
- Указывайте нужные вам детали - цвет, освещение, дополнительные объекты.
- Используйте вес ключевых слов и их смешивание для управления генерацией.
- Применяйте отрицательные промпты для исключения нежелательных элементов.
- Проверяйте ключевые слова на эффективность перед использованием в промпте.
- Стройте промпт итеративно, постепенно уточняя и проверяя результат.
- Разбивайте промпт на регионы для контроля разных областей изображения.
Следуя этим рекомендациям, вы сможете составлять эффективные промпты и получать желаемые результаты от ИИ-генераторов изображений.
Подробнее про ключевые слова. Ключевые слова в промптах для Stable Diffusion можно разделить на следующие основные категории:
- Предмет - что должно быть изображено, описание объектов, персонажей и других элементов изображения.
- Среда - где происходит действие, описание обстановки, фона, ландшафта.
- Стиль - художественный стиль, например - импрессионизм, кубизм, аниме и т.д.
- Художник - имена конкретных художников, чтобы задать похожий стиль. Например Ван Гог.
- Веб-сайт - например, artstation, для ориентации на контент оттуда.
- Разрешение - насколько детализирована картинка должна быть, например, "высокая детализация".
- Дополнительные детали - различные атрибуты, эффекты, чтобы дополнить изображение.
- Цвет - какие цвета должны преобладать, указывается напрямую или через описание предметов.
- Освещение - тип освещения, например, "ностальгический закат".
Подбирая ключевые слова из разных категорий, можно максимально точно настроить промпт под нужный результат при генерации изображений ИИ
Вы можете настроить вес ключевого слова с помощью синтаксиса (keyword: factor). factor это значение, при котором число меньше 1 означает менее важное, а больше 1 означает более важное.
Например, мы можем настроить вес ключевого слова no humans в следующем запросе.
The Statue of Zeus, standing in sandbeach, no humans
В таком случае это будет выглядеть следующим образом
The Statue of Zeus, standing in sandbeach, (no humans: 1.5)
Увеличение веса 'no humans' приводит к уменьшению количества людей. Уменьшение его имеет тенденцию генерировать больше, но не всегда – многое зависит от самого ключевого слова. Это не всегда верно для каждого отдельного изображения, но это верно в статистическом смысле.
Этот метод можно применять к тематическим ключевым словам и всем категориям, таким как стиль и освещение.
Есть еще варианты увеличения/уменьшения веса ключевого слова, вот примеры:
Вы можете использовать несколько из них, как в алгебре... Эффект мультипликативен.
(ключевое слово): 1,1 ((ключевое слово)): 1,21 (((ключевое слово))): 1,33
[ключевое слово]: 0,9 [[ключевое слово]]: 0,81 [[[ключевое слово]]]: 0,73
Вы можете смешивать ключевые слова
[ключевое слово1: ключевое слово2: фактор]
Например: [собака1: кот2: 0.5] пусть будет на 30 шагов выборки (sampling steps)
Это означает, что подсказка на шагах с 1 по 15 - собака и подсказка в шагах с 16 по 30 становится кот.
Фактор определяет, когда ключевое слово будет изменено, это после 30 шагов х 0,5 = 15 шагов.
Результатом изменения фактора является смешение кота с собакой))
Обычный вариант использования - создать новое лицо с особым внешним видом, заимствуя у актеров и актрис. Например, [Эмма Уотсон: Эмбер Херд: 0,85], 40 шагов - это взгляд между двумя.
Тщательно выбрав два имени и отрегулировав коэффициент, мы можем точно получить желаемый вид.
Не устану повторять, играйтесь с параметрами, чтобы добиться желаемого результата. Первый раз, когда вы начнете работать в Stable Diffusion, результаты будут далеки от идеала во всех смыслах. Только практикуясь, вы начнете приходить к тому результату, который видите в своей голове.
По сути, Stable Diffusion - это генератор случайных изображений, который выдает визуально правдоподобные результаты. Без подсказок модель создаст произвольные картинки.
Подсказка направляет процесс генерации в нужное русло, сужая пространство возможных результатов. Чем подробнее подсказка, тем меньше вариативность сгенерированных изображений.
Таким образом, для получения желаемого результата важно составлять максимально конкретные и детальные подсказки, ограничивающие модель.
Использование отдельной модели - это один из простых способов гарантированно получить желаемый стиль. Это также уникальное преимущество Stable Diffusion. Благодаря огромному сообществу с открытым исходным кодом, сотни пользовательских моделей доступны абсолютно бесплатно.
Negative prompt (отрицательный промпт) - это описание того, чего НЕ должно быть на сгенерированном изображении.
Основные моменты об использовании отрицательных промптов:
- Позволяет исключать нежелательные объекты, дефекты, лишние детали.
- Добавляется после основного позитивного промпта через запятую или точку с запятой.
- Может содержать конкретные объекты ("без машины"), стили ("без кубизма"), дефекты ("без размытости").
- Помогает убрать артефакты модели типа лишних конечностей, искажений, плохой анатомии.
- Универсальный негативный промпт очищает картинки от типовых дефектов.
- Чем подробнее отрицательный промпт, тем сильнее ограничения на генерацию.
- Рекомендуется применять после получения первичных результатов по позитивному промпту.
- Особенно важен для моделей Stable Diffusion v2, улучшает качество, но также часто используется и в версии v1
Универсальный пример негативного промпта
ugly, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face, blurry, draft, grainy
Также в негативном промпте вы можете использовать Embeddings (также известные как Textual Inversion). Негативные вложения обучаются на нежелательном контенте: вы можете использовать их в своих негативных подсказках, чтобы улучшить свои изображения.
Для того чтобы их использовать, вам нужно их загрузить и поместить в папку stable-diffusion-webui/embeddings
Скачать их можете с сайта civitai, вот например один из популярных Embeddings https://civitai.com/models/16993, который улучшает детализацию рук. Они будут храниться у вас там же, где и модели лор, только во вкладке Textual Inversion. Нажимаете на нужный вам Embeddings, и он появится в негативном промпте.
Есть разные Textual Inversion, которые отвечают за улучшение анатомии, качества изображения, цвета и т.д. Подбирайте для себя подходящие и экспериментируйте.
Потенциал Stable Diffusion поистине огромен. В этой статье мы лишь слегка приоткрыли завесу над возможностями этой нейросети. Для полного раскрытия всех её функций потребовалась бы целая книга. Stable Diffusion постоянно обновляется и дополняется новыми инструментами.
Но даже на данном этапе, используя базовые знания, можно начать создавать уникальный визуальный контент. Stable Diffusion открывает простор для реализации творческих идей в самых разных направлениях. Экспериментируя с настройками, появляется возможность воплотить любые образы, ограниченные лишь собственной фантазией. Каждый шаг в изучении этого инструмента - это новые горизонты для творчества.
Статью подготовил Александр, специалист AI дизайна и анимации.
Подписывайтесь на инстаграм, там будут публиковаться работы.
Inst: @alex.zvr
Tg: @alzvr