115

Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе

Зачем и термины

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

Midjourney про который можно почитать тут.
Stable-Diffusion, про который идет речь. Также  ее можно попробовать тут.
ruDALL-E, dall-e mini

В общем, выбор обширен.

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

Основной термин в использовании сетей - промт (prompt), т.е. фраза которую мы задаем сети для генерации изображения. Чем качественнее построен промт, тем качественнее получится картинка.

Что нужно иметь в наличии

1. Не менее 25 Gb свободного места, репозиторий с моделями весит около 13Gb, плюс CUDA и библиотеки тоже занимают место.

2. Видеокарту от NVidia с памятью от 10 Gb (из официальной документации - the model is relatively lightweight and runs on a GPU with at least 10GB VRAM)
Т.е. 3080/3080Ti/3090/3090Ti подойдут, 3070 уже не годится, нужно проверять, по комментариям и на 2070 запускается. Также подойдут всякие профессиональные RTX5000 и выше, Tesla, A100.
Хотя можно и 3070 попробовать, есть информация что достаточно 6,9Gb  видеопамяти

3. Операционную систему Windows/Ubunta, инструкция будет под Windows, но под никсы всё должно быть аналогичным.

Установка

1. Скачать установить Anaconda

2. Скачать и установить CUDA, я проверял на версии 11.3

2.1 Возможно потребуется скачать cuDNN, для этого придется создать учетную запись NVIDIA. После чего можно зайти и скачать архив.  Содержимое архива нужно поместить в папку с установленной CUDA (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3)

3. Скачать модель, ссылка sd-v1-4.ckpt

4. Скачать репозиторий
На странице есть кнопка Code, нажать на нее, Download ZIP, скачанное распаковать. Проследить чтобы в пути к каталогу не было русских букв. Ну или через git склонировать. Кому что ближе.

5. Скопировать файл скачанный на пункте 3 в папку stable-diffusion\models\ldm\stable-diffusion-v1, после чего переименовать его в model.ckpt

6. Открыть командную строку, перейти в каталог stable-diffusion и следовать инструкции на странице
https://github.com/CompVis/stable-diffusion

А именно прописать команды:

conda env create -f environment.yaml
conda activate ldm
conda install pytorch torchvision -c pytorch
pip install transformers==4.19.2 diffusers invisible-watermark
pip install -e .

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

ВНИМАНИЕ! Текст писать на английском.

Для создания по тексту, пишем в командной строке

python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms
Для создания по тексту на основе имеющейся картинки (картинка должны быть небольшой, около 512x512 пикселей)
python scripts/img2img.py --prompt "A fantasy landscape, trending on artstation" --init-img <path-to-img.jpg> --strength 0.8

По завершении развлечений писать в командной строке
deactivate

Для генерации в следующий раз, после перезапуска командной строки, сначала запускать команду
conda activate ldm

Дополнительные материалы

Гайды по созданию промтов

Список художников чьи стили понимает сеть

Сборщик промтов, позволяет набрать детализированное описание, настроить параметры вроде той же camera distance, текстур, пост-процессинга, цветовой гаммы, освещения и так далее, выбрать стиль художника, размер картинки и много чего еще

Поисковик промтов

Пара примеров

Пробуем в лоб задать какой нибудь запрос

python scripts/txt2img.py --prompt "harvard lovecraft's nightmares" --plms
Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

Результат не впечатляет. Теперь идем в сборщик запросов и пробуем улучшить.

python scripts/txt2img.py --prompt "!dream harvard lovecraft's nightmares, insanely detailed and intricate, hypermaximalist, elegant, ornate, hyper realistic, super detailed" --plms
Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

Стало значительно приятнее. Добавим просьбу выполнить в стиле художника Takashi Murakami

python scripts/txt2img.py --prompt "!dream harvard lovecraft's nightmares, by Takashi Murakami, insanely detailed and intricate, hypermaximalist, elegant, ornate, hyper realistic, super detailed" --plms
Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

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

python scripts/txt2img.py --prompt "!dream harvard lovecraft's nightmares, by Takashi Murakami, insanely detailed and intricate, hypermaximalist, elegant, ornate, hyper realistic, super detailed" --plms --seed 6443543543
Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

Еще один пример, я создал шедевр в paint'e, но хочу немного его прокачать, вот это я нарисовал

Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

Теперь даю нейросети задачу создать изображение на основе моего творчества и фразы

python scripts/img2img.py --prompt "hipster bus, insanely detailed and intricate, hypermaximalist, elegant, ornate, hyper realistic, super detailed" --init-img D:/1.png --strength 0.8

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

Инструкция по установке и использованию нейросети Stable-Diffusion на собственном железе Нейронные сети, Искусственный интеллект, Stable Diffusion, Длиннопост

Enjoy