Stable Diffusion — нейросеть, которая рисует картинки по текстовому описанию. Мы уже рассказывали, как запустить Stable Diffusion простым способом на маке, теперь сделаем круче — установим всё вручную и запустим Stable Diffusion на компьютере с Windows. На Маке тоже заработает, кстати.
Вот коротко то, что будет дальше:
- Скачиваем веса и исходники.
- Ставим нужные библиотеки и программы.
- Разворачиваем рабочее окружение.
- Запускаем нейросеть и пишем по-английски, какая картинка нам нужна.
- Ждём.
- Смотрим на картинку.
На самом деле нет ничего сложного — просто выполняем команды по порядку и получаем результат. Единственное ограничение — нейросеть может плохо работать на компьютерах без поддержки CUDA и видеокарт Nvidia: иногда она падает с ошибкой или работает очень медленно.
Ещё нам понадобится примерно 15–20 гигабайт свободного места на диске. Удаляйте зарубежные фильмы и кровавые игры, мы будем делать всё своё.
Что умеет Stable Diffusion
Как модель генерации изображений Stable Diffusion в первую очередь умеет создавать изображения на основе текстового описания: вы ей объясняете, что рисовать, а она рисует. Но кроме этого, Stable Diffusion может вносить изменения в уже существующие изображения — также по заданному тексту, например изменить цвет объектов, добавить новые элементы или изменить фон. Таким образом можно как рисовать с нуля, постепенно улучшая черновое изображение, так и стилизовать какие-то готовые картинки.
Скачиваем исходники
Идём на Гитхаб проекта и скачиваем весь исходный код Stable Diffusion. Для этого нажимаем Code → Download ZIP и сохраняем архив:
Как скачается — распаковываем в отдельную папку, у нас это F:\stablediffusion-main\stablediffusion-main. Этот путь к скриптам нам скоро пригодится, поэтому запоминаем, куда распаковали:
Качаем модели и веса
Вся сила нейросетей — в их весах. От них зависит, какое решение будет принимать нейросеть на каждом этапе своей работы. Именно правильно подобранными весами отличается тренированная и обученная сеть от необученной.
Скачиваем один из этих файлов и кладём их в ту же папку, что и исходники 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:
❗️ Перед нами появилось окно с командной строкой — дальше всё будем делать в нём.
Переходим в папку с исходниками, которую распаковали до этого
cd f:\stablediffusion-main\stablediffusion-main
Создаём рабочее окружение и устанавливаем библиотеки
Виртуальное рабочее окружение — это такой способ работать с программами, чтобы настройки одних скриптов не мешали работе других. В исходниках, которые мы скачали на первом шаге, есть файл с настройками рабочего окружения как раз для нашего проекта. Создадим его:
conda env create -f environment.yaml
Во время установки рабочего окружения скрипт установит много дополнительных файлов и библиотек, это займёт некоторое время.
Теперь запускаем рабочее окружение:
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
Чтобы нейросеть сгенерировала нам картинку, нужно написать запрос в командной строке. Допустим, мы хотим получить картинку программиста в стиле игры «Киберпанк 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:
Вот и всё! Теперь вы можете создавать свои картинки сколько угодно раз с любыми запросами. Если не знаете, как сформулировать запрос на английском, — используйте Яндекс Переводчик.