Как установить stable diffusion на windows

Всё моё свободное время в последние четыре дня было потрачено на одну задачу — составление запросов для нейросети Stable Diffusion, нейросети для создания изображений по текстовому описанию. Все изображения для статьи (кроме скриншотов) были созданы лично в этой нейросети, совершенно не художником.

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

Установка Stable Diffusion

Нейросеть Stable Diffusion отличается от таких аналогов как DALL-E 2 или Midjourney открытым исходным кодом: то есть, при наличии соответствующего оборудования, вы можете совершенно бесплатно установить необходимое ПО на свой компьютер и использовать для создания изображений по текстовому запросу (в обсуждениях часто используют кальку с английского «промпт»).

Нейросеть Stable Diffusion для генерации изображений

Официальное ПО Stable Diffusion не имеет удобного графического интерфейса, за исключением доступного на официальном сайте https://beta.dreamstudio.ai/, с которого и рекомендую начать эксперименты и посмотреть, нужно ли вам это: после регистрации у вас будет 200 бесплатных генераций с параметрами по умолчанию (регистрироваться можно и больше раз с разными адресами электронной почты).

При установке официального софта на компьютере все действия придётся выполнять в командной строке. Кроме того, вы мало что сможете сгенерировать с видеокартой, имеющей 6 Гб памяти или менее.

Однако, благодаря открытому исходному коду, почти сразу после релиза Stable Diffusion появились альтернативные варианты ПО («форки»), оптимизирующие запуск на более слабом оборудовании (4 Гб VRAM, есть даже варианты, работающие на CPU, но очень медленно), предоставляющие удобный доступ к настройкам и упрощающие использование нейросети.

С одного из таких альтернативных вариантов, который я нашел наиболее удачным, и начнем установку. Если же вам требуется описание процесса установки официального варианта, его вы также сможете найти далее в статье.

Установка Stable Diffusion WebUI от Automatic

Внимание: с момент написания инструкции процесс установки менялся и уточнить необходимые шаги лучше на официальном GitHub проекта.

Сначала о том, что нам потребуется: достаточно мощный компьютер или ноутбук, видеокарта NVIDIA GeForce, не менее 4 Гб видеопамяти. Все устанавливаемые компоненты займут около 10 Гб на жестком диске или SSD. Если всё это в наличии, можно приступать:

  1. Установите Python 3.10.6 (разработчик указывает именно эту версию) с официального сайта https://www.python.org/downloads/windows/. При установке отметьте пункт «Добавить Python в переменную PATH».
  2. Установите Git с официального сайта https://git-scm.com/download/win. Если вам не ясны параметры при установке, их можно оставить в рекомендуемых по умолчанию значениях.
  3. Зайдите на страницу Automatic1111 на GitHub https://github.com/AUTOMATIC1111/stable-diffusion-webui, нажмите по стрелке справа от кнопки «Code» вверху справа и загрузите ZIP-архив со Stable Diffusion WebUI. Распакуйте в удобное расположение, но так, чтобы путь не содержал пробелов или кириллических символов (это может вызвать проблемы).
  4. Скачайте обученную модель Stable Diffusion последней версии с официального источника https://huggingface.co/CompVis/stable-diffusion-v-1-4-original (потребуется регистрация) или из этого хранилища.
  5. Переименуйте скачанный файл в model.ckpt и переместите его в папку, куда были распакованы файлы на 3-м шаге (в ту же папку, где находится файл webui.bat).
  6. Запустите файл webui-user.bat (не от имени администратора, простой запуск двойным кликом) и дождитесь, когда скрипт автоматически скачает и установит недостающие компоненты. Учитывайте: строка прогресса не отображается, поэтому при загрузке объемных компонентов (Torch и CUDA) может показаться, что процесс завис.
  7. По завершении установки вы увидите сообщение
    Running on local URL: http://127.0.0.1:7860/

    перейдите по указанному адресу (не закрывайте окно консоли, это прервет работу Stable Diffusion WebUI) в любом браузере и начните использование.

  8. Если ваша видеокарта имеет 6 Гб видеопамяти или меньше, при попытке сгенерировать изображение даже в выставленном по умолчанию расширении 512×512 вы можете получить сообщение о недостатке VRAM (видеопамяти). В этом случае, закройте окно консоли (или прервите выполнение, нажав Ctrl+C в окне консоли), откройте файл webui-user.bat с помощью текстового редактора и измените строку с параметрами запуска на
    set COMMANDLINE_ARGS=--medvram

    Затем снова запустите веб-интерфейс файлом webui-user.bat

  9. Дополнительные возможности настройки Stable Diffusion WebUI и параметры запуска можно найти на официальной странице разработчика.

Установка официальной версии Stable Diffusion

При установке официальной версии Stable Diffusion все необходимые компоненты почти те же самые, но их потребуется устанавливать вручную. Требования те же самые, за исключением необходимости использования видеокарты с не менее чем 6 Гб VRAM.

  1. Скачайте и установите Git https://git-scm.com/download/win используйте рекомендуемые параметры (оставьте возможность использования Git в командной строке и сторонних программах).
  2. Установите Miniconda3 с официального сайта https://docs.conda.io/en/latest/miniconda.html, при установке выберите опцию «Установить для всех пользователей).
  3. Скачайте архив Stable Diffusion с официального источника https://github.com/CompVis/stable-diffusion (нажать по кнопке «Code», затем выбрать пункт «Download ZIP»).
  4. Скачайте модель Stable Diffusion последней версии с https://huggingface.co/CompVis/stable-diffusion-v-1-4-original (потребуется регистрация) или: из этого хранилища (без регистрации), переименуйте файл в model.ckpt
  5. Запустите консоль Miniconda3 (Anaconda Prompt), для этого можно использовать поиск в панели задач Windows 11 и Windows
  6. В открывшейся консоли используйте команды для создания папки (в нашем варианте — на диске C) для файлов Stable Diffusion
    cd C:/
    mkdir stable-diffusion
    cd stable-diffusion

    Не закрывайте окно консоли.

  7. Откройте скачанный на 3-м шаге архив и скопируйте папку stable-diffusion-main (саму папку, а не файлы в ней) в C:\stable-diffusion\
  8. По порядку используйте следующие команды в консоли Miniconda3
    cd C:\stable-diffusion\stable-diffusion-main
    conda env create -f environment.yaml
    conda activate ldm
    mkdir models\ldm\stable-diffusion-v1

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

  9. Переместите файл model.ckpt в папку C:\stable-diffusion\stable-diffusion-main\models\ldm\stable-diffusion-v1
  10. Готово. Теперь мы можем запустить Stable Diffusion, введя команду
    conda activate ldm

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

  11. Генерация изображений выполняется здесь же в консоли с помощью передачи параметров. Например, вы можете ввести
    python scripts/txt2img.py --prompt "concept robot, colorful, cinematic" --plms --n_iter 5 --n_samples 1

    Команда создаст набор из 5 изображений с разрешением 512×512 по запросу «concept robot, colorful, cinematic», которые будут помещены в папку

    C:\stable-diffusion\stable-diffusion-main\outputs\txt2img-samples\samples
    Первое изображение Stable Diffusion

Чтобы увидеть информацию по доступным параметрам командной строки используйте команду

python scripts/txt2img.py --help

Использование Stable Diffusion WebUI

После запуска webui-user.bat и перехода в браузере на адрес 127.0.0.1:7860 перед вами будет веб-интерфейс, доступный локально на вашем компьютере (для работы Интернет не требуется), первая вкладка которого — txt2img, где и происходит всё самое интересное. Экспериментировать можно начать сразу же: просто введите текст на английском в поле сверху и нажмите кнопку «Generate», чтобы получить готовую картинку с параметрами по умолчанию (на скриншоте они уже изменены).

Главная страница Stable Diffusion WebUI

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

  • Sampling Method — алгоритм создания изображения. Влияет на результат, скорость, требуемую видеопамять.
  • Sampling Steps — количество шагов, в течение которых нейросеть «приводит» результат к желаемому. Влияет на время генерации. Больше — не всегда лучше: нужный результат может получиться за 30-50 шагов, а дальнейшая работа может не добавить деталей, а исказить результат (но бывает и иначе). Если то, что получилось, вам понравилось, можно использовать тот же Seed для генерации изображения по этому же запросу, но с другим количеством шагов и оценить результат.
  • Batch count — количество наборов создаваемых изображений.
  • Batch size — количество изображений в наборе (влияет на требуемую память).
  • CGF Scale — «свобода» обработчика изображения, влияет на то, насколько точно результат будет соответствовать описанию. При более низких значениях получаем большее разнообразие.
  • Height и Width — ширина и высота изображения, очень сильно влияет на требования к памяти.
  • Seed — «зерно». По умолчанию равно -1, при этом значении оно будет задано случайно при каждом очередном нажатии кнопки «Generate». Если с определенным Seed вы получили интересный результат, можете скопировать его в это поле, чтобы продолжить эксперименты над понравившимся изображением, изменяя параметры.

По умолчанию изображения сохраняются во вложенных папках в папке outputs в расположении, куда вы установили Stable Diffusion WebUI, но при желании автоматическое сохранение можно отключить на вкладке «Settings», здесь же можно настроить и другие параметры.

Настройки Stable Diffusion WebUI

Вкладка img2img позволяет модифицировать имеющееся изображение в соответствии с текстовым описанием.

Stable Diffusion WebUI img2img

На вкладке Extras собраны дополнительные инструменты. Основное — увеличение разрешения изображения с использованием нейросети.

Extras в Stable Diffusion WebUI

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

Простой стилизованный рисунок в Stable Diffusion

А может быть и почти фотография:

Фотореалистичное изображение в Stable Diffusion

Легко создать таких роботов:

Простое изображение в Stable Diffusion

И посложнее — таких:

Усложненное изображение в Stable Diffusion

Не забывайте проявлять фантазию, нарисовать можно многое, главное уметь это описать:

Изображение, созданное в Stable Diffusion

Вспоминайте названия кинематографических эффектов, свойств материалов и описания форм:

Материалы и формы в Stable Diffusion

Чтобы получить лучшие результаты, рекомендую изучить чужие работы и используемые запросы: на тему создания изображений в Stable Diffusion есть множество тематических каналов в мессенджерах, социальных сетях и тематических сайтах. Но и собственные идеи часто могут дать интересный и красивый эффект, время для неожиданных находок в запросах ещё не вышло.

Уровень сложностиСредний

Время на прочтение22 мин

Количество просмотров158K

Начинать всегда сложно...

Начинать всегда сложно…

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

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

Так же в конце будет изложен mindset, который необходимо иметь чтобы научиться пользоваться SD. Я буквально попытаюсь научить вас думать как AI художник.

Поэтому без лишних слов, начинаем.

Установка

Рассмотрим самый простой и распространённый вариант установки SD к себе на компьютер.

Предполагается что у вас есть:

  • Windows 10+

  • nvidia rtx 3xxx +

  • опытный пользователь ЭВМ

Обновляем драйвер

Nvidia долго не могла починить баг связанный с замедлением работы SD. В последних версиях он был починен, по этому перед тем как начинать, следует обновить драйвер до последней версии.

Референсные значения скорости:

  • 6-7 it/s при генерации 512x512 семплером Euler A

Если скорость меньше, значит с драйвером до сих пор что-то не так, и можно попробовать другую версию.

Окружения для установки и запуска

Для работы, установки и обновления Stable Diffusion на компьютере должен быть установлен Python 3.10 и git.

Скачать можно тут:

  • https://www.python.org/ftp/python/3.10.6/python-3.10.6-embed-amd64.zip

    • ВАЖНО: при установке нужно поставить галочку Add to PATH

  • https://git-scm.com/download/win

Установка WebUI

Нужно выбрать место куда будет устанавливаться SD. В папке должно быть свободно 100+ гб. Сам SD займёт порядка 30, остальное место будет нужно для моделей, каждая из которых весит от 2 до 6гб.

Отдельную папку для SD создавать не нужно, разве что общую папку для AI софта по типу: D:/AI.

  • Открываем консоль в папке куда собираемся установить SD

    • В папке правой кнопкой -> git bash here

    • либо в пути пишем cmd (да только эти 3 буквы), жмём Enter

  • Копируем: git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git sd-webui

  • Вставляем нажимая правой кнопкой по консоли

  • Enter (SD начинает скачиваться в папку sd-webui)

  • Дожидаемся пока скачается весь репозиторий

  • Открываем папку sd-webui

  • Запускаем webui-user.bat (ждём минут 20 пока он доустановит все зависимости)

  • Можно так же добавить ярлык на рабочий стол для этого файла, чтобы каждый раз не лезть в папку для запуска SD.

Возможны и другие варианты установки, но этот лучше остальных так как:

  • У вас в системе появляется git

  • Можно легко обновлять и откатывать версию SD

  • Расширения можно накатывать и откатывать в ручную

  • Можно тестировать фичи SD из раннего доступа

Аргументы запуска

У SD есть ряд параметров, которые влияют на его производительность.

Если у вас карта от Nvidia, то советую отредактировать файл webui-user.bat добавив/заменив нём параметр COMMANDLINE_ARGS на следующий:

set COMMANDLINE_ARGS=--opt-sdp-attention --opt-channelslast

Это самый быстрый конфиг для nvidia для карт 3xxx + серии.

Полный список параметров и оптимизаций:

  • Command Line Arguments and Settings — Github

  • Optimizations — GitHub

WebUI

Работа со Stable Diffusion’ом происходит через специальный интерфейс — webui. Реализаций интерфейсов существует большое множество, но мы рассмотрим только самые интересные и практически полезные.

automatic1111

Есть много разных интерфейсов для SD. Но самый лучший из них — Automatic1111. Можно сказать что это референсная реализация, которая является стандартной на сегодняшний день. В первую очередь для неё делают все расширения, новые алгоритмы, оптимизации и т.п.

Webui - Automaiс1111

Webui — Automaiс1111

Но, есть и другие интересные инструменты, которые имеют скорее экспериментальный характер.

ComfyUI

Webui - ComfyUI

Webui — ComfyUI

К их числу я бы отнёс ComfyUI — WebUI построенный на принципах визуального программирования, где ты строишь граф и определяешь Pipeline генерации SD. Штука интересная, но довольно сложная, как требует понимания того как работает SD на уровне внутренних процессов. К нему стоит присмотреться освоив инструменты доступные в Automatic’e.

Не смотря на наличие Extension’a для Automatic’a, cоветую устанавливать в виде отдельного приложения. Причина проста — оба UI будут потреблять много памяти, и лучше иметь возможность один из них закрыть.

Для того чтобы примерно понять уровень сложности и возможностей, можно посмотреть видео на канале разработчика IPAdapter’a: latentvision — YouTube. Он показывает и рассказывает как можно реализовывать различные нетривиальные конструкции с помощью IPAdapter’a в интерфейсе ComfyUI.

Fooocus

Так же есть Fooocus. Он находится на обратной стороне распределения. Максимально казуальная, неконтролируемая игрушка с одной кнопкой. Пользователю доступен Prompt, и пара параметров. Так же из плюсов стоит отметить большое кол-во заготовленных стилей. Авторы декларируют что у них некоторые алгоритмы реализованы круче/интереснее, и скорее всего это так. Но, отсутствие возможности адекватного изменения параметров, фиксированные разрешения, и попытка сделать всё за пользователя делают Fooocus игрушкой, а не профессиональным инструментом. В любом случае попробовать стоит.

Webui - Fooocus

Webui — Fooocus

Хороший обзор: Fooocus v2 — бесплатный Midjourney у вас на компьютере. Подробная инструкция по установке и использованию нейросети / Хабр

Модели

Stable Diffusion — архитектура нейросети. Сам по себе алгоритм её реализующий ни чего толком не сгенерит. Для этого нужны специальные «модели», представляющие собой набор весов для этой нейросети.

Базовые модели и SD-чекпоинты

Есть два пригодных для использования типа базовых моделей: 1.5 и XL.

1.5 это модели первого поколения, которые имеют меньший размер и тренировались на изображениях 512×512. Существует огромное кол-во чекпоинтов, основанных на базе 1.5: для самых разных стилей, уровней реалистичности и т.п. Так же модели на 1.5 работают быстрее чем XL (в 2-4 раза).

XL это один из последних этапов развития SD. Тренировали её на картинках 1024×1024 что с ходу дало больше деталей в текстурах и мелких деталях, но не сильно повлияло на крупные детали (композиция, форма, анатомия). Чекпоинтов меньше чем для 1.5, но XL относительно молодая технология, со временем их будет становиться больше.

Чекпоинт — дообученная базовая модель.

Разрешение на котором обучалась базовая модель влияет на появление крупных артефактов, которые возникают при «задирании» разрешения на этапе генерации.

Самая большая база чекпоинтов находится на сайте https://civitai.com

Чтобы добавить скачанную модель (.safetensors, .ckpt) в SD нужно:

  • положить её в папку /sd-webui/models/Stable-Diffusion

  • нажать кнопку обновить 🔄 рядом с селектором моделей

  • выбрать новую модель

Для удобства советую создать в папке с моделями, поддиректории по типам моделей:

/models
    /Stable-Diffusion
        /Anime
        /Art
        /Realistic
        /Pixelart
        /...

Имя подпапки будет добавлено в список селектора наверху, и во вкладке с чекпоинтами добавятся одноимённые кнопки:

Селектор Checkpoint'ов в WebUI

Селектор Checkpoint’ов в WebUI

Формат чекпоинтов и их размер не влияет на качество генерации изображений. По этому не стоит отдавать предпочтение более крупным моделям. Если вы не собираетесь их обучать не заморачивайтесь. Предпочтение стоит отдавать .safetensors, исходя из соображений безопасности, так как в него нельзя встраивать произвольный код, который будет выполняться при загрузке моделей.

VAE

На последней стадии генерации SD применяет Variational Auto Encoder (VAE), чтобы окончательно «отрендерить» картинку. В моделях со встроенным VAЕ, результат генерации сразу будет хорошим. Но некоторые модели не имеют его в своём составе, и картинки в результате получаются тусклыми и мыльными. В этом случае имеет смысл использовать кастомный VAE.

VAE - С и Без

VAE — С и Без

Как правило, в описании модели есть ссылка на скачивание рекомендуемого VAE. Но если её там нет, имеет смысл воспользоваться чем-то вроде: https://civitai.com/models/23906/kl-f8-anime2-vaehttps://civitai.com/models/23906/kl-f8-anime2-vae

VAE устанавливаются в папку: /sd-webui/models/VAE

Quick Setting

Так же для удобства советую добавить селектор VAE в Quick Setting чтобы его можно было быстро включать и отключать:

Quick Settings - VAE

Quick Settings — VAE

Для этого в настройках WebUI нужно найти слово quick, и в найденное поле добавить элемент sd_vae:

Settings - Add Quick VAE

Settings — Add Quick VAE

Lora, Lycrois, Textual Inversion, Hypernetworks

Помимо базовых моделей которые могут всё, есть ещё мини модели, которые применяются поверх базовой и заставляют её генерить какие-то конкретные концепции (персонаж, стиль, одежда, композиция, и другое).

Для SD было создано большое кол-во разных технологий FineTuneing’a. Самой удачной оказалась LoRA. Она лучше остальных подхватывает концепцию, быстро обучается (10-15 минут), и не требует слишком крупного датасета (можно обучить на 5-10 картинках).

На Civit’е есть огромное кол-во Lora для самых разных концепций.

Чтобы использовать lora при генерации, нужно:

  • Скачать модель .safetensors

  • Положить в папку /sd-webui/models/Lora

  • Во вкладке Lora нажать Refresh

  • Ткнуть на добавившуюся Lora -> в промпт добавится что-то типа <lora:CatBee:0.7>

    • Catbee — имя модели Lora

    • 0.7 — степень её влияния. 1 = 100%. Сила может быть больше 1

    • Большинство Lora лучше всего работает в диапазоне 0.3 - 0.8

Так же я советую в папку к Lora’м и Checkpoint’ам добавлять одноимённые изображения, чтобы потом было проще ориентироваться в коллекции моделей:

Preview файлы для моделей в WebUI

Preview файлы для моделей в WebUI

Стоит отметить, что XL LoRA может работать только с XL моделями.

Prompting (txt2img)

Любая генерация начинается c Prompt’а.

Propmt — строка с набором терминов и специальных команд, которая определяет то что в итоге будет сгенерировано.

Prompt из текста преобразуется в набор чисел (токенов), который затем поступает на вход алгоритма генерации SD. Из этого следует что SD не особо понимает «смысл» того что вы пишете, сколько ищет соответствие набору ваших токенов в своём гиперпространстве. И затем создаёт на их основе изображение.

Что стоит добавлять в промпт:

  • Конкретные понятия

    • имя персонажа (Shrek, King Arthur, Putin)

    • возраст + пол

      • young, adult, mature

      • girl, girlfriend, woman, wife, grandma, …

    • цвета

    • элементы окружения

    • одежду

  • Действие

    • Dancing, Jumpint, Fighting, Sitting on Sofa..

  • Стили

    • Cyberpunk

    • Engraving

  • Художников / Фотографов

    • by SamDoesArt

    • by Simon Stalenhag

    • by Tim Walker

Чего не стоит добавлять:

  • Попытки объяснить «как человеку». Не нужно пытаться написать понятное человеку правильно построенное предложение. Просто пишите через запятую набор понятий. Вес токенов получающихся на основе предлогов, пунктуации и прочих вспомогательных лингвистических конструкций стремится к нулю.

  • Огромные списки бестолковых токенов:

    • highly detailed, majestic, Baugh's brushwork infuses the painting with a unique combination of realism and abstraction, greg rutkowski, surreal gold filigree, broken glass, (masterpiece, sidelighting, finely detailed beautiful eyes: 1.2), hdr, realistic painting, natural skin, textured skin, Baugh's distinctive style captures the essence of the girl's enigmatic nature, inviting viewers to explore the depths of her soul, award winning art, artstation

    • Это ни чего не даст, скорее наоборот, ваши собственные токены будут размыты этим мусором

  • Asian в Negative. Глаза откроются, но это будет неестественно, лучше найдите то понятие которое склоняет модель к генерации азиатов, либо выберете другой Checkpoint. А еще лучше дописать в Positive — European, это сработает гораздо лучше.

Positive Negative

SD на вход принимает 2 промпта. Негативный и позитивный.

Как следует из названия, один будет усиливать появление тех или иных вещей в генерации, а второй будет ослаблять. Но надо понимать, что со 100% вероятностью исключить или заставить SD что-то сгенерить — не получится. Это скорее подсказки которые настоятельно советуют что-то делать или не делать.

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

Я использую следующий Negative в качестве Базового:

[deformed | disfigured], poorly drawn, [bad : wrong] anatomy, [extra | missing | floating | disconnected] limb, (mutated hands and fingers), blurry

Он добавлен в конфиг SD, и мне не приходится каждый раз вводить его руками.

Чтобы добавить в конфиг SD negative prompt. Нужно:

  • открыть в текстовом редакторе (блокнот) файл: /sd-webui/ui-config.json

  • в параметр"txt2img/Negative prompt/value" и "img2img/Negative prompt/value" вставить вышеприведённую строку:

    Добавляем negative в Config WebUI'ки

    Добавляем negative в Config WebUI’ки
  • сохранить, перезапустить SD

  • теперь этот промпт всегда будет добавляться при запуске SD в поле Negative

Усилители токенов

Любое слово/понятие в промпте можно усиливать или ослаблять. Для этого слово нужно взять в скобки и добавить через двоеточие степень усиления:

  • green sigaret -> (green: 0.6) sigaret слово Green ослаблено до 60%

  • thick wooman -> (thick woman: 1.3) понятие усилено до 130%

Так же это можно делать быстро:

  • Выделить слово/фразу, с помощью Ctrl + Up или Ctrl + Down, нарулить нужное усилении/ослабление.

Styles

Слектор Style в WebUI

Если вы часто добавляете набор понятий, имеет смысл превратить их в стиль.

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

Параметры генерации

Помимо propmpt’a большую роль играют параметры генерации. В SD этих параметров не так много, по этому мы разберём их все.

Resolution

Разрешение генерируемого изображения.

В целом всё просто: чем больше изображение, тем дольше генерация и больше артефактов.

Все модели обучаются на наборе изображений фиксированного размера (512×512 или 1024×1024). Наименьшее кол-во проблем будет именно с этими «опорными» разрешениями. Если попытаться слишком сильно отойти от опорного размера, SD будет повторяться, создавая 2-3-5-10 копий одного и того же, и терять композицию. Поэтому базовые изображения стоит генерить в диапазоне +30-60% процентов от базового и затем апскейлить получившийся результат.

HighresFix

Одним из возможных решений для генерации больших изображения является функция HighRes Fix.

При её включении SD делит генерацию изображения на несколько стадий:

  • Генерация основы (например 512×768)

  • Апскейл (1x, 1.5x, 2x, 3x, 4x, …)

  • Проход img2img с теми же параметрами, для увеличенного изображения (при апскейле x2 будет 1024×1536)

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

Refiner

С приходом архитектуры SDXL. Automatic1111 добавил в WebUI возможность запуска второго прохода за счёт Refiner моделей.

Так как Refiner по сути это некоторое подобие img2img, мы можем использовать другой Checkpoint для доработки базового результата. Это бывает полезно если базовая модель генерит интересные стилистически, но не особо качественные, изображения. Refiner, за счёт другой модели, позволяет сохранять базовую форму и сюжет, дорабатывая при этом детали.

В реализации от Automaiс1111 проход Refiner’а может работать не только с SDXL моделями, но так же и с «обычными» 1.5. Правило одно — не смешивать модели разных типов.

Sampler

Одним из важных аспектов работы SD является алгоритм семплирования модели. Разные алгоритмы имеют разные свойства и производительность, и подходят для разных задач.

В основном используются семплеры:

  • Euler A — гладкий идеализированный результат (50+ шагов для хорошего качества)

  • DPM++ 2M Karras — семплер общего назначения, быстро даёт качественный результат (20 шагов), обладает хорошей вариативностью

  • Heun — Хорошо подходит для постобработки и добавления микродеталей.

Все остальные семплеры либо более медленные, либо дают более странные результаты. В WebUI они добавлены по той причине, что Automatic1111 — это референсная реализация, и в ней просто присутствуют все доступные на данный момент подходы и алгоритмы.

CFGScale

Этот параметр определят на сколько сильно SD «старается» сгенерить то, что вам нужно.

Стандартное значение = 7.

Если мы понижаем CFGScale, картинка становится менее сатурированной, а сюжет — более расплывчатым. Если повышаем — цветность повышается, некоторые детали становятся более нарочитыми, появляется «пережжённость» изображения.

В основном этот параметр не изменяется, так как это не приводит к качественно лучшим результатам. Крутят его тогда, когда отдельно взятый Checkpoint генерит слишком насыщенные картинки, либо при использовании изотерических семплеров (LCM) или extension’ов.

Img2Img

SD позволяет генерить изображение на основе других изображений. Для этого предусмотрен отдельный режим img2img.

На вход, помимо промпта подаётся изображение. И в зависимости от силы перерисовки denoising strength, изображение меняется в нужную сторону.

Диапазоны изменения (для изображений 512×512 ± 50%) :

  • 0.0 - 0.2 — Изменяются самые мелкие детали

  • 0.2 - 0.4 — Меняется качество «рисовки», и среднемелкие детали

  • 0-4 - 0.5 — Крупные изменения с сохранением всех основных концепций оригинальной картинки

  • 0-5 - 0.65 — Работа на тему, с сохранением композиции

  • 0.65 - 1.0 — Что-то отдалённо напоминающее оригинальное изображение

При других разрешениях этот диапазон меняется. Чем больше разрешение исходной картинки, тем меньше будет влияние Denois’a.

Зависимость влияния Denoise'a от размера изображения

Зависимость влияния Denoise’a от размера изображения
  • Красное: 512×512

  • Зелёное < 512

  • Синее > 512

По этому при перерисовке больших изображений имеет смысл сильнее задирать Denoising Strength.

Inpaint

img2img Inpaint. До - data-lazy-src=

img2img Inpaint. До -> После

При генерации в img2img можно ограничить область действия SD.

Это нужно в тех случаях, когда необходимо:

  • изменить лицо

  • перерисовать одежду

  • добавить элементов окружения в нужное место

  • починить анатомию

  • изменить текстуру предмета

  • детализировать глаза

Only Masked vs Whole Picture

Inpaint может работать в 2 режимах:

Only Masked — перерисовывает только те пиксели, что попадают в маску. Это бывает полезно для увеличения детализации на отдельном участке большого изображения. Так как перерисовывается только часть изображения, мы можем работать над крупными картинками (например 3072×1546), ограничивая разрешение SD небольшим квадратиком в который помещается маска (например 600×300).

Whole Picture — перерисовывает картинку целиком.

Scripts

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

Loopback

Одна и та же картинка при Loopback'e

Одна и та же картинка при Loopback’e

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

Логика его работы проста:

  • Пропустить изображение через img2img

  • Повторить несколько раз, подавая на вход предыдущий результат

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

Так же можно установить изменение Denoising’а на каждом последующем шаге, чтобы на первом проходе он был высоким (0.4-0.6) и с каждой последующим шагом становился всё меньше. Это позволяет получать более проработанные и менее искажённые результаты, так как на каждом последующем шаге размер деталей над которыми работает SD, становится всё меньше и меньше.

XYZ Plot

XY Plot c легендой

XY Plot c легендой

Для того чтобы лучше понять как влияют изменения параметров, prompt’a и всего остального, можно воспользоваться скприптом XYZ plot.

Мы, через запятую, перечислим что необходимо изменить, и затем SD в автоматическом режиме создаёт изображение на котором отчётливо видны изменения.

Этот инструмент экономит кучу времени, так как всё происходит автоматически, и ты не путаешься в куче картинок лежащих в папке.

SDUpcale

А начиналось все с 512x512

А начиналось все с 512×512

Самый крутой апскейлер в плане качества, но не точности — апскейлер основанный на основе StableDiffusion’а.

Тут важно понимать, что в отличие от обычного апскейла, SD перерисовывает ваше изображение, добавляя в него деталей. Это приводит к потере достоверности, но эстетически такие изображения выглядят сильно лучше, чем любой другой алгоритм апскейла (esrgan, ldsr, topaz, …).

Работает он следующим образом:

  • Исходная картинка прогоняется через традиционный апскейлер

  • Делится на небольшие области-tile’ы (например 1024×1024) с небольшим перекрытием соседних

  • Каждый tile прогоняется через SD с нашим промптом, параметрами, lora’ми и выбранным checkpoint’ом

  • Результаты склеиваются в одно большое изображение

Стоит отметить, что Denoising Strength не стоит сильно задирать иначе получится что-то вроде:

Когда переборщил с Denoise'ом

Когда переборщил с Denoise’ом

Хорошее значение: 0.3.

Extension’ы

Помимо коробочных функций, в webui от Automatic1111 можно добавлять различные расширения (плагины).

Каждое расширение представляет собой отдельно живущий git репозиторий, которые можно склонировать в папку  /sd-webui/extensions.

Либо установить из интерфейса самого webui через менеджер расширений:

Менеджер расширений в WebUI

Менеджер расширений в WebUI

Расширения можно устанавливать по ссылке. Так же имеется список, поддерживаемый Automatic1111’ом во вкладке Available.

После установки расширения, webui необходимо перезагрузить. Сделать это можно нажав кнопку Apply and restart UI или перезапустив .bat файл.

CADS

https://github.com/v0xie/sd-webui-cads

CADS - выключен - включен

CADS — выключен — включен

Для того чтобы в значительной степени повысить вариативность получаемых результатов, существует расширение CADS. Оно рандомизирует промежуточные стадии формирования изображения, сбивая SD от сваливания в локальный минимум гиперпространства.

В результате работы Extension’а вы будете получать более разнообразные изображения, но не всегда более качественные. Поэтому это инструмент для более эффективного начального поиска интересных результатов, нежели универсальный инструмент который «просто делает лучше».

Kohya Highres.fix

https://github.com/wcde/sd-webui-kohya-hiresfix

HighresFix в исполнении Kohya

HighresFix в исполнении Kohya

HighRes Fix в исполнении Kohya’и.

Основное отличие от стандартного HighRes Fix’a:

  • Изображение генерируется за 1 проход

  • Изображение генерируется в большом размере

  • Extension влияет на промежуточные стадии генерации

Итого:

  • Плюсы:

    • Пропускается стадия базовой генерации и апскейла

    • Результат может оказаться интереснее, т.к. генерация происходит при большом разрешении

  • Минусы:

    • Генерятся сразу большие изображения, а это плохо сказывается на времени итерации.

ADetailer

https://github.com/Bing-su/adetailer

Adetailer - до/после

Adetailer — до/после

ADetaler это расширение, которое позволяет добавить стадию постпроцессинга готового изображения.

Принцип работы:

  • Сгенерить изображение

  • Определить на изображении области интереса (лицо, рука, одежа, …)

  • Перерисовать (img2img) эту область с более высоким разрешением.

За счёт Adetailer’а в основном:

  • дорабатывают лица и руки

  • применяется lora нужного персонажа, чтобы получалось стабильное лицо

  • меняется макияж

Dynamic Prompts

https://github.com/adieyal/sd-dynamic-prompts.git

WildCard'ы в действии

WildCard’ы в действии

Когда мы итерируемся, работая над тем или иным персонажем / lora, часто хочется увидеть как он будет выглядеть в других контекстах, одеждах, окружениях и жанрах.

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

Для этого есть специальный инструмент — Dynamic Prompts.

Он добавляет 3 основных функции: комбинации, wildcard'ы, подсказки.

Комбинации

Комбинации — это специальное расширение синтаксиса промпта, позволяющее определить список понятий, которые будут применяться по кругу на каждой следующей генерации.

beautiful girl, {green|light red|orange} dress, walking in park

Здесь нас интересуют фигурные скобочки. Внутри может находиться несколько понятий разделённых символом | .
Если мы сгенерим 6 изображений, у нас будет 6 девочек гуляющих в парке: у 2 будет зелёное платье, ещё у двух — светло-красное, и у оставшихся 2 — оранжевое.

WildCard’ы

Менеджер WildCard'ов

Менеджер WildCard’ов

Для того чтобы каждый раз не писать в Prompt’е длинные портянки с комбинациями, лучше сохранить или скачать их в виде специальных файлов с этими понятиями, а в промпт добавлять по имени файла:

Beautiful model woman
posing in bay area
__fem_portraits/fashion_outfit_image__

Тут вместо __fem_portraits/fashion_outfit_image__ будет подставляться строка за строкой из одноимённого файла лежащего в папке: /sd-webui/extensions/sd-dynamic-prompts/wildcards/....

В файле записаны добавки к промпту:

Пример файла c WildCard'ами

Пример файла c WildCard’ами

Подсказки

Подсказки прям как в IDE

Подсказки прям как в IDE

Это расширение добавляет интерфейс подсказок. Он позволяет проще ориентироваться в коллекции WildCard’ов и узнавать силу токенов.

Pixelization

https://github.com/AUTOMATIC1111/stable-diffusion-webui-pixelization

Almost a Hero - © Bee Square Games

Almost a Hero — © Bee Square Games

Для генерации Pixel Art’a можно попробовать поискать checkpoint’ы или lora.

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

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

ControlNet

GitHub — Mikubill/sd-webui-controlnet: WebUI extension for ControlNet

ControlNet — это попытка глубоко забраться в мозги SD и склонить его в генерацию того что нужно. Используя для этого различные хитрости и приёмы формирования исходного шума и влияния на промежуточные стадии генерации.

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

Модели и Препроцессоры

ControlNet - модели и препроцессоры

ControlNet — модели и препроцессоры

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

Референс может быть нарисован от руки, либо сгенерён с помощью препроцессора.

Препроцессор — алгоритм обрабатывающий входное изображение, преобразующий его в вид понятный для модели ControlNet’a.

Модели бывают самые разные и работают на разных принципах, что позволяет генерить изображения на основе:

  • Контуров (canny, scrible, hed, lineart, mlsd)

  • Глубины (depth)

  • Нормалей (normals)

  • Сегментации (sebmentation)

  • Позы (openpose)

  • Исходной палитры (recolor)

Скачать основной набор моделей для ControlNet можно тут:

https://civitai.com/models/38784/controlnet-11-models

IP Adapter

Особенно хочется отметить «магическую» модель IPAdapter, которая использует исходное изображение для генерации подсказки уровня промпта. Благодаря этому, результат начинает быть похожим на исходное изображение, при этом суть изображаемого может очень сильно измениться.

IP Adapter - Kindy x Cimply

IP Adapter — Kindy x Cimply

Модели лежат тут: https://huggingface.co/h94/IP-Adapter

Upscaling

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

Коробочные алгоритмы

В webui от Automatic1111, встроены реализации самых разных апскейлеров.

Практически применимым однако является только один — esrgan.

Все остальные имеют либо более скверное качество картинки, либо генерация может занимать десятки минут (LDSR).

Для esrgan‘a существует большое кол-во чекпоинтов. На практике хорошо себя показали следующие:

  • NMKD Siax («CX») — 200k | Stable Diffusion Upscaler | Civitai

  • Remacri — Original | Stable Diffusion Upscaler | Civitai

  • 4x-Ultrasharp — 4x-UltraSharp v1.0 | Stable Diffusion Upscaler | Civitai

Помимо этих моделей есть ещё куча других. Посмотреть можно тут: https://openmodeldb.info/

Topaz Photo AI

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

Главное отключить все улучшайзеры, которые борются с компрессией и блюром. Результаты работы SD и так являются околоидеальными, с точки зрения артефактов сжатия, поэтому любые попытки их «улучшить» будут только портить конечное изображение.

Построение рабочего Pipeline’а

Самое важное, что просто необходимо понимать, чтобы не разочароваться в SD — это то, что SD — профессиональный инструмент, который даёт вам полный контроль над происходящим. И если у вас что-то не получается, это проблема скилла, а не инструмента. Вы же не будете злиться на пианино за то, что не умеете на нём играть, когда сели за него впервые.

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

Ну, а чтобы упростить первые попытки, я предлагаю следующую тактику работы с SD, которая позволит добиться внятных и интересных результатов.

Итеративный процесс

Для того чтобы сгенерить хорошее, годное изображение, нужно делать это итеративно. Разбивая свой процесс на стадии.

Для начала, было бы не плохо понять, знает ли выбранный Checkpoint все нужные токены. Может получиться так, что вы напишете большой детальный промпт, а половины описанного не будет. Поэтому перед тем как делать что-то сложное, нужно для начала выяснить, «понимают ли вас по ту сторону».

Так например, если вы соберётесь создать одноглазого пирата с повязкой и эполетами, держащего в левой руке топор, могут возникнуть некоторые трудности…

В этом случае стоит обзавестись соответствующими Lora’ми, или подобрать другие токены.

Далее, с простым неперегруженным промптом, и парочкой WildCard’ов можно посмотреть «общую картину» и найти интересный для себя сеттинг. На этом этапе нам все равно на мелкие детали, мы ищем общее настроение и композицию.

В конце концов мы находим «ту самую» картинку, и начинаем работать над отдельными деталями. Предварительно апскейлим, чтобы по меньшей стороне изображение было минимум 1200 пикселей.

Далее мы переходим в img2img, чтобы начинать Inpaint’ить отдельные элементы изображения, подбирая под каждую деталь свой собственный промпт.

После доработки деталей в SD, изображение можно ещё сильнее заапскейлить, чтобы его размер был уже пригодным для печати (3000px+).

Завершающей стадией работы над изображением, как правило, является переход из WebUI в графический редактор, где уже ювелирно исправляются мелкие косяки. Дорабатываются цвета изображения, применяются различные постэффекты (плёнка, grain, …).

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

Чтобы гарантированно ничего не получилось:

Напишите супер длинный и взаимоисключающий промпт, с кучей разбалансированных токенов и лор; влупите разрешение 2048×1536. И требуйте от инструмента невозможного. Fail гарантирован.

Не нужно зацикливаться

Если на одном из начальных этапов блуждания по латентному пространству, вы увидели «самую замечательную картинку в своей жизни», но она при этом очень кривая — не нужно пытаться её дорабатывать. Просто оставьте её как референс. В латентном пространстве бесконечное множество похожих картинок, но с меньшим количеством артефактов, их просто нужно дождаться.

Так же можно попробовать сгенерить вариации той же самой картинки, включив Seed Variation. Результаты будут похожие, и в зависимости от силы Variation’а может повезти, и вы найдёте более удачный вариант в окрестностях латентного гиперпространства.

Вариации вокруг одного и того-же seed'a

Вариации вокруг одного и того-же seed’a

И в целом не бойтесь выкидывать то что вы делаете, если оно вам не нравится. У вас в распоряжении инструмент, который может создать бесконечное кол-во красивых изображений. И то что вам понравилось сейчас — не уникально!

Иногда проще брать толпой

Если лень заниматься первыми стадиями поиска, добавьте WildCard, включите CADSи поставьте генериться 200 изображений. Затем по турнирной схеме выберете одно лучшее.

Две картинки, какая победит?

Prompt Engeneering

Промпт — минипрограмма, которую нужно уметь писать.

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

Не пытайтесь копировать длинные портянки от «красивых картинок» с civit-ai. Пользы от этого не много, так как изменить в этом промпте вы всё равно ничего не сможете.

Читайте блоги, каналы и статьи нейрохудожников, экспериментируйте, погружайтесь в предметную область и тогда результаты не будут посредственными.

Крутость кроется в комбинациях

В первом пункте описана «каноническая» комбинация действий. Однако, возможна далеко не только она.

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

Сложность комбинации прямо пропорциональна необычности итоговой картинки. Комбинации нужно уметь строить или находить в интернете (civit, reddit, twitter, …).

Набор прикольных комбинаций можно почитать тут:

Самые распространённые проблемы генерации

Как вкатываться разобрались, осталось понять какие очевидные проблемы нас подстерегают и как с ними бороться.

Double face

Две головы лучше чем одна?

Две головы лучше чем одна?

Когда такое происходит, главная причина — слишком большое разрешение генерации. Не жадничайте, уменьшите его до ±50% разрешения базовой модели и генерите дальше.

Вывернутая макушка головы

Схематически выглядит это так:

Туда можно семки насыпать...

Туда можно семки насыпать…

По какой-то причине все Checkpoint’ы SD склонны выворачивать на зрителя все шарообразные объекты, и головы, в том числе.

По этому если вы видите «воздухозаборник» или «выемку» на голове, знайте — это прикол SD. Который легко чинится в графическом редакторе.

Лишние конечности, кривые руки и прочая кривая анатомия

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

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

«Скучный» результат

Ожидания не всегда совпадают с реальностью и картинка получается слишком уж скучной и бесхитростной?

Это может случаться из-за того что:

  • Промпт слишком простой

  • Промпт слишком сложный

  • Чекпоинт не знает то, что вы от него просите

  • Не тот чекпоинт что вам нужен

  • Вы слишком уверены в своем промпте, но видимо в этот раз с ним что-то не так. Проведите исследование предметной области и найдите более походящие термины.

Я хочу красное платье и зелёные волосы!!!

А получаются красные волосы, зелёная водолазка и красная юбка…

Ни чего сверхъестественного в этом нет. SD не понимает терминов, он их даже не видит. На вход ему поступают цифры, и он ищет в латентном пространстве ближайшие соответствия. Потом из этого латентного пространства генерится финальная картинка. Это вероятностный процесс, в ходе которого могут возникать смысловые ошибки разной степени тяжести.

Увы, избежать этого никак не получится, и отдельно взятая плохая генерация будет такой. Но вероятностно, большая часть других генераций будет с тем что вам нужно. В крайнем случае всегда можно пойти в img2img Inpaint и перерисовать неугодную часть исходного изображения.

Конец

Этого должно хватить, чтобы стартануть в мир генерации изображений с помощью StableDiffusion.

Читайте разных авторов, смотрите youtube, экспериментируйте! И у вас всё обязательно получится.

Я оставлю тут пару, по моему мнению, полезных и интересных ссылок на YouTube и TG. И вы тоже делитесь информацией в комментариях.

  • Olivio Sarikas — YouTube

  • StableDiff — YouTube

  • XpucT — YouTube

  • @fralid95 — Telegram

  • Большое собрание материалов по теме — stable-diffusion-art.com

  • Статьи на civitai

Не требует технических знаний, не требует предустановленного программного обеспечения. Установка в один клик, мощные функции, ��ружелюбное сообщество. В моем тг канале, вы найдете все про нейросети, сервисы и инструкции о том как ими пользоваться!

Установка

Заходим на github и выбираем файл для своего устройства

Требования к оборудованию:

  • Windows: видеокарта NVIDIA¹ (минимум 2 ГБ ОЗУ) или работа на вашем процессоре.
  • Linux: видеокарта NVIDIA¹ или AMD² (минимум 2 ГБ ОЗУ) или работа на вашем процессоре.
  • Mac: M1 или M2, или работа на вашем процессоре.
  • Минимум 8 ГБ оперативной памяти.
  • Не менее 25 ГБ свободного места на жестком диске.

¹) Требуется уровень вычислительных возможностей CUDA 3.7 или выше.

²) Требуется поддержка ROCm 5.2.

  • Запустите загруженный Easy-Diffusion-Windows.exeфайл.
  • Запустить Easy Diffusionпосле завершения установки. Вы также можете запустить из меню «Пуск» или с рабочего стола (если вы создали ярлык).

Если Windows SmartScreen не позволяет запустить программу, щелкните More info, а затем Run anyway.

Совет: В Windows 10, пожалуйста, установите на верхний уровень вашего диска, например, C:\EasyDiffusionили D:\EasyDiffusion. Это позволит избежать распространенной проблемы с Windows 10 (ограничения длины пути к файлу).

На Linux/Mac:

Разархивируйте/извлеките папку easy-diffusion, которая должна находиться в папке загрузок, если вы не изменили место назначения загрузок по умолчаниюОткройте окно терминала и перейдите в easy-diffusionкаталогЗапустите ./start.sh(или bash start.sh) в терминале.

Чтобы удалить/деинсталлировать:

Просто удалите EasyDiffusionпапку, чтобы удалить все загруженные пакеты.

  • Простая установка : не требует технических знаний, не требует предустановленного программного обеспечения. Просто скачайте и запустите!
  • Простой и понятный пользовательский интерфейс : удобный и простой пользовательский интерфейс, предлагающий при этом множество мощных функций.
  • Очередь задач : поставьте все свои идеи в очередь, не дожидаясь завершения текущей задачи.
  • Интеллектуальное обнаружение модели : автоматически определяет файл конфигурации YAML для использования с выбранной моделью (через базу данных моделей).
  • Предварительный просмотр в реальном времени : смотрите, как ИИ рисует изображение.
  • Модификаторы изображений : библиотека тегов-модификаторов , таких как «Реалистичный» , «Карандашный набросок» , «ArtStation» и т. д. Быстро экспериментируйте с различными стилями.
  • Файл с несколькими подсказками : создайте очередь из нескольких подсказок, введя по одной подсказке в каждой строке или запустив текстовый файл.
  • Сохраните созданные изображения на диск : сохраните свои изображения на своем ПК!
  • Темы пользовательского интерфейса : настройте программу по своему вкусу.
  • Раскрывающийся список моделей с возможностью поиска : организуйте свои модели в подпапки и выполняйте поиск по ним в пользовательском интерфейсе.
  • Поддерживает : « Текст в изображение », « Изображение в изображение » и « InPainting »
  • ControlNet : для расширенного управления изображением, например, путем задания позы или рисования контура, который будет заполнять ИИ.
  • 16 сэмплеров : PLMS, DDIM, DEIS, Heun, Euler, Euler Ancestral, DPM2, DPM2 Ancestral, LMS, DPM Solver, DPM++ 2s Ancestral, DPM++ 2m, DPM++ 2m SDE, DPM++ SDE, DDPM, UniPC.
  • Stable Diffusion XL и 2.1 : создавайте изображения более высокого качества с помощью новейших моделей Stable Diffusion XL.
  • Встраивание текстовой инверсии : для целенаправленного направления ИИ к определенной концепции.
  • Простой инструмент для рисования : рисуйте простые изображения, которые помогут ИИ, без необходимости использования внешней программы для рисования.
  • Коррекция лица (GFPGAN)
  • Масштабирование (RealESRGAN)
  • Обратная петля : использовать выходное изображение в качестве входного для следующей задачи по обработке изображений.
  • Отрицательный запрос : укажите аспекты изображения, которые необходимо удалить .
  • Внимание/Выделение : +в подсказке увеличивает внимание модели к заключенным в текст словам и -уменьшает его. Например apple++ falling from a tree, .
  • Взвешенные подсказки : используйте веса для определенных слов в подсказке, чтобы изменить их важность, например (red)2.4 (dragon)1.2.
  • Матрица подсказок : быстрое создание нескольких вариантов подсказки, например a photograph of an astronaut riding a horse | illustration | cinematic lighting.
  • Набор подсказок : быстрое создание нескольких вариантов подсказки, напримерa photograph of an astronaut on the {moon,earth}
  • Увеличение масштаба/коррекция лица в один клик : увеличение масштаба или коррекция изображения после его создания.
  • Создать похожие изображения : нажмите, чтобы создать несколько вариантов сгенерированного изображения.
  • Настройка NSFW : настройка в пользовательском интерфейсе для управления контентом NSFW .
  • Вывод JPEG/PNG/WEBP : несколько форматов файлов.

Простота для новых пользователей, мощные функции для продвинутых пользователей:

Очередь задач

В моем тг канале, вы найдете все про нейросети, сервисы и инструкции о том как ими пользоваться!

Генеративные нейросети стремительно развиваются. Если ещё совсем недавно всем были известны только DALLE и Midjourney, то сейчас можно найти нейронки под любые задачи. Причём хватает не только вариантов с оплачиваемой подпиской, но и бесплатных. Один из наиболее гибких, многофункциональных и популярных инструментов стала Stable Diffusion (SD). Дело в том, что её можно установить на свой компьютер и генерировать невероятные иллюстрации без затрат. В статье расскажем, как установить Stable Diffusion на Windows, и как пользоваться приложением.

Установка Stable Diffusion

SD, в отличие от платных аналогов типа DALL-E 2 и Midjourney, является нейросетью с открытым исходным кодом. Это означает, что вы можете свободно устанавливать её на своё устройство и пользоваться бесплатно.

Имейте в виду, что базовый интерфейс Stable Diffusion не самый удобный. Если вы устанавливаете официальный софт, то работать придётся через командную строку. Однако прелесть открытого исходного кода в том, что энтузиасты очень быстро создают альтернативные варианты. Также важно понимать, что скорость и качество работы во многом будут зависеть от вашей видеокарты. Если они слабая, то вряд ли вы сможете пользоваться нейросетью полноценно. Рекомендованная видеокарта — NVidia серии RTX 3xxx и объёмом видеопамяти не менее 6 Гб.  Именно NVidia рекомендуется потому, что для генерации нейросеть использует ядра CUDA, которые есть только в этих видеокартах.

Минимально будет достаточно и GTX1050Ti , но работа нейросети будет очень медленной. Видеокарты с объёмом памяти от 8 или даже 12 дадут куда более комфортную производительность.

Где скачать дистрибутив Stable Diffusion

Есть масса сборок, которые различаются по интерфейсу. Некоторые варианты будут сложнее других в установке. Наиболее простая и удобная для тех, кто впервые пробует свои силы — Easy Stable Diffusion. Её можно найти на github.com. 

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

Установка занимает продолжительное время, так что стоит запастись терпением. В конце не забудьте поставить галочку Create Desktop Shortcut, это создаст на рабочем столе ярлык, а галочку Run Easy Diffusion, наоборот, снимите. Приложение нужно будет запускать позднее.

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

Для примера установим универсальную и известную многим модель Deliberate 2.0. Для начала нужно скачать её. Далее в папке, куда мы установили Easy Diffusion открываем папку models, а в ней — папку stable-diffusion. Копируем в эту папку загруженный файл модели Deliberate 2.0.

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

Использование Easy Diffusion

Интерфейс Easy Diffusion в браузере выглядит следующим образом:

Prompt – это поле, в которое мы вводим текстовую подсказку. Она определяет, что нейросеть сгенерирует на итоговой картинке. Писать подсказку нужно на английском языке;

Negative prompt – это поле отрицательной подсказки. То есть то, чего мы не желаем видеть на картинке.

Model – это название модели, которая будет применяться для генерации. Актуально, если у нас их несколько. В нашем примере используется Deliberate v2.

Image Size – это желаемые размеры будущего изображения: ширина (width) и высота (height).

inference steps – это количество шагов генерации. Увеличение этого значения повышает качество картинки, но и процесс становится дольше. В среднем хватает 16-20 шагов, но если у вас мощная видеокарта, можно брать 20-30 шагов.

Guidance scale отвечает за точность соблюдения запроса в подсказке. Минимальные значения дают нейросети больше свободы, но и меньше предсказуемости для вас. Значения выше 16 подойдут опытным пользователям, которые могут действительно грамотно писать промты. Для обычных пользователей оптимальным будет значение 7-10.

Show a live preview позволяет показать процесс генерации. Если его выключить, то вы увидите только результат.

Процесс установки официальной версии:

Установка официальной версии Stable Diffusion происходит похожим образом, но компоненты устанавливаются вручную. Для нормальной работы требуется видеокарта с минимум 6 Гб памяти.

Сначала нужно скачать с Git дистрибутив для Windows и установить нейросеть, используя рекомендуемые параметры.

Далее следует установить Miniconda3. Найти её можно на официальном сайте. В процессе установки нужно выбрать опцию «Установить для всех пользователей.

С официального сайта скачайте архив Stable Diffusion. Для этого нужно кликнуть по кнопке «Code» и найти там пункт «Download ZIP». Скачайте модель Stable Diffusion, выбирайте самую последнюю версию.

Через поиск панели задач Windows найдите консоль Miniconda3 и запустите её. Введите команды для создания папки файлов SD:

1. cd C:/

2. mkdir stable-diffusion

cd stable-diffusion

Из ранее скачанного архива Stable Diffusion нужно скопировать папку stable-diffusion-main и перенести в основную папку нейросети. Например, если вы устанавливали её на диск C:, то это будет C:\stable-diffusion\.

В консоли Miniconda3 напишите следующие команды:

3. cd C:\stable-diffusion\stable-diffusion-main

4. conda env create -f environment.yaml

5. conda activate ldm

mkdir models\ldm\stable-diffusion-v1

На этом этапе придётся подождать некоторое время, потому что запустится закачка дополнительных компонентов из Интернета.

Когда загрузка закончится, файл model.ckpt нужно скопировать в папку C:\stable-diffusion\stable-diffusion-main\models\ldm\stable-diffusion-v1

На этом процесс установки завершится. Вы можете запускать Stable Diffusion по команде:

conda activate ldm

Запуск всегда будет осуществляться именно таким образом.

Как работать со Stable Diffusion

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

К примеру, если вы захотите нарисовать мультяшного снеговика, то команда будет выглядеть примерно следующим образом:

python scripts/txt2img.py --prompt "funny snowman, cartoon style" --plms --n_iter 3 --n_samples 1

iter 3 в команде будет означать, что ИИ подготовит 3 варианта картинки. Разрешение изображения будет составлять 512×512. Готовые картинки будут отправлены в папку Stable Diffusion.

C:\stable-diffusion\stable-diffusion-main\outputs\txt2img-samples\samples

Если вы захотите посмотреть, какие параметры командной строки вам доступны, напишите в консоли:

python scripts/txt2img.py --help

Заключение

Установить и начать работать с нейросетью Stable Diffusion не так сложно. А вот что касается качественных генераций, то тут есть чему поучиться. Изучив интерфейс и доступные настройки, осваивайте правильное формулирование промтов. Читайте статьи, смотрите чужие работы, обращайте внимание, какими запросами пользователи добиваются нужного художественного эффекта.

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

Вот коротко то, что будет дальше:

  1. Скачиваем веса и исходники.
  2. Ставим нужные библиотеки и программы.
  3. Разворачиваем рабочее окружение.
  4. Запускаем нейросеть и пишем по-английски, какая картинка нам нужна.
  5. Ждём.
  6. Смотрим на картинку.

На самом деле нет ничего сложного — просто выполняем команды по порядку и получаем результат. Единственное ограничение — нейросеть может плохо работать на компьютерах без поддержки CUDA и видеокарт Nvidia: иногда она падает с ошибкой или работает очень медленно.

Ещё нам понадобится примерно 15–20 гигабайт свободного места на диске. Удаляйте зарубежные фильмы и кровавые игры, мы будем делать всё своё. 

Что умеет Stable Diffusion

Как модель генерации изображений Stable Diffusion в первую очередь умеет создавать изображения на основе текстового описания: вы ей объясняете, что рисовать, а она рисует. Но кроме этого, Stable Diffusion может вносить изменения в уже существующие изображения — также по заданному тексту, например изменить цвет объектов, добавить новые элементы или изменить фон. Таким образом можно как рисовать с нуля, постепенно улучшая черновое изображение, так и стилизовать какие-то готовые картинки.

Скачиваем исходники

Идём на Гитхаб проекта и скачиваем весь исходный код Stable Diffusion. Для этого нажимаем Code → Download ZIP и сохраняем архив:

Запускаем Stable Diffusion у себя на компьютере

Как скачается — распаковываем в отдельную папку, у нас это F:\stablediffusion-main\stablediffusion-main. Этот путь к скриптам нам скоро пригодится, поэтому запоминаем, куда распаковали:

Запускаем Stable Diffusion у себя на компьютере

Вам может быть интересно:

Качаем модели и веса

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

Скачиваем один из этих файлов и кладём их в ту же папку, что и исходники Stable Diffusion:

v2-1_768-ema-pruned.ckpt ← если нужны картинки 768 на 768 пикселей (потребуется больше видеопамяти)

v2-1_512-ema-pruned.ckpt ← если хватит картинок с размером 512 на 512

Устанавливаем Conda

Conda — это менеджер пакетов, который часто используется для установки Python-библиотек. Он удобнее, чем pip, может сам проверять зависимости при установке и позволяет создавать виртуальные окружения (это нам пригодится). Качаем последнюю версию с официального сайта, устанавливаем и запускаем Anaconda Powershell Prompt:

Запускаем Stable Diffusion у себя на компьютере

❗️ Перед нами появилось окно с командной строкой — дальше всё будем делать в нём.

Переходим в папку с исходниками, которую распаковали до этого

cd f:\stablediffusion-main\stablediffusion-main

Запускаем Stable Diffusion у себя на компьютере

Создаём рабочее окружение и устанавливаем библиотеки

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

conda env create -f environment.yaml

Запускаем Stable Diffusion у себя на компьютере

Во время установки рабочего окружения скрипт установит много дополнительных файлов и библиотек, это займёт некоторое время.

Теперь запускаем рабочее окружение:

conda activate ldm

Если в компьютере стоит видеокарта Nvidia с поддержкой CUDA, то выполняем такую команду:

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

Если нет — то такую:

conda install pytorch torchvision -c pytorch

Ставим библиотеку для невидимых водяных знаков — с их помощью другой алгоритм сможет отличить сгенерированную картинку от нарисованной человеком:

pip install transformers==4.19.2 diffusers invisible-watermark

Устанавливаем CUDA, если у нас есть видеокарта с поддержкой этой технологии

conda install cuda -c nvidia

Ставим библиотеку xformers, чтобы нейросеть работала быстрее:

pip install -U xformers

Теперь, когда все компоненты на месте, устанавливаем Stable Diffusion:

pip install -e .

Точка означает, что команда возьмёт скрипт setup.py, который лежит в этой папке, и будет работать с ним:

Запускаем Stable Diffusion у себя на компьютере

Если мы видим эту строчку — значит, всё установилось правильно

Как пользоваться Stable Diffusion

Чтобы нейросеть сгенерировала нам картинку, нужно написать запрос в командной строке. Допустим, мы хотим получить картинку программиста в стиле игры «Киберпанк 2077». Так как Stable Diffusion понимает только английский язык, наш запрос будет выглядеть так:

python scripts/txt2img.py —prompt «photo of a programmer at a desktop in the style of the game cyberpunk 2077» —ckpt v2-1_512-ema-pruned.ckpt —config configs/stable-diffusion/v2-inference-v.yaml —H 512 —W 512

Кроме текста запроса, здесь есть ещё несколько параметров:

  • —ckpt v2-1_512-ema-pruned.ckpt — указываем, какой нужно использовать файл с весами;
  • —config configs/stable-diffusion/v2-inference-v.yaml — откуда берём остальные настройки нейросети;
  • —H 512 —W 512 — размер картинки в пикселях.

После запуска нейросеть подумает несколько минут, а потом картинка появится в папке outputs\txt2img-samples:

Запускаем Stable Diffusion у себя на компьютере

Вот и всё! Теперь вы можете создавать свои картинки сколько угодно раз с любыми запросами. Если не знаете, как сформулировать запрос на английском, — используйте Яндекс Переводчик.

Запускаем Stable Diffusion у себя на компьютере

Старик делает дом в России
Запускаем Stable Diffusion у себя на компьютере

Девушка-программист думает над сложной задачей, стимпанк
Запускаем Stable Diffusion у себя на компьютере

Железный человек в русской деревне
Запускаем Stable Diffusion у себя на компьютере

Снегопад в ночном пустынном городе

Вёрстка:

Кирилл Климентьев

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Сканер mustek bearpaw 2400cu plus драйвер windows 10
  • Создать загрузочную флешку windows 10 fat32
  • Удаление любых файлов windows
  • На какой диск можно записать windows 10
  • Обновление платформы для windows 7 sp1