Обновлено 1 декабря 2023 г.
Эта заметка готовилась как шпаргалка к интенсиву по нейросетевому искусству в магистратуре Art and Tech МИСиС, и с тех пор неоднократно обновлялась и использовалась как справочный материал на различных мастер-классах.
Нейросетевые генеративные модели
К этому моменту уже все слышали про то, что нейросети позволяют создавать визуально привлекательные изображения по текстовому запросу или по другому изображению. Я ранее писал про то, какую роль могут сыграть современные генеративные нейросети. Посмотреть примеры нейросетевого искусства вы можете в онлайн-галерее Experient.Art.
Данная заметка предназначена тем, кто хочет заняться генерацией изображений самостоятельно и не знает, с чего начать. В ней я рассматриваю целый ряд инструментов для нейросетевой генерации изображений, доступных как начинающему пользователю компьютера, так и человеку с опытом программирования (что будет, безусловно, большим плюсом!).
Прежде всего, существует несколько вариантов нейросетевых генеративных моделей:
- Модели с открытыми весами и исходным кодом, такие, как Stable Diffusion (с запросами на английском языке) или ruDALL-E/Kandinsky (с запросами на русском языке) от Сбер.
- Модели, относительно которых известна архитектура, но весов модели нет в свободном доступе (что не позволяет открыто и неограниченно их использовать). Таким моделям относятся Imagen от Google и DALL-E 2 / DALL-E 3 от OpenAI. Некоторые из этих моделей могут использоваться через программный интерфейс.
- Закрытые модели, предназначенные для коммерциализации в среде художников и дизайнеров. Это в первую очередь Midjourney. Модель доступна по подписке.
Мы в этой статье будем уделять основное внимание Stable Diffusion, как наиболее открытому и привлекательному инструменту, хотя упомянем и об остальных. Также основной акцент сделан на бесплатных инструментах, поскольку они позволяют вам начать экспериментировать без предварительных вложений, и уже затем выбрать наиболее предпочтительный инструмент.
Готовые интерактивные инструменты
Самыми простыми в использовании инструментами являются различные онлайн-инструменты для генерации изображений, доступные через интернет любому пользователю компьютера. Вам достаточно ввести текстовый запрос, и спустя некоторое время вы получаете сгенерированное изображение. Основным минусом таких инструментов является необходимость оплачивать подписку, хотя некоторое количество изображений вы сможете сгенерировать бесплатно.
К таким инструментам относятся:
- DreamStudio от создателей Stable Diffusion. Вам изначально доступно некоторое количество кредитов, что достаточно для генерации около 500 изображений, но далее - подписка.
- Наверное самый известный из всех инструментов Midjourney. Зарегистрировашись, вы получаете доступ к Discord-сообществу, где можете запрашивать генерацию изображений через бота. Midjourney наверное на сегодняшний день даём лучшее качество художественных изображений, однако его закрытость не позволяет использовать эту модель в более сложных художественных экспериментах. К сожалению, в настоящее время в Midjourney совсем нет бесплатного лимита генерации изображений.
| |
- Leonardo - это попытка сделать аналог Midjourney, основываясь на бесплатных нейросетях типа Stable Diffusion, но при этом добавив несколько своих до-обученных закрытых моделей, более сложный пайплайн обработки и т.д. В результате получился инструмент, который приближается к Midjourney по стабильности и качеству результата, при этом даёт существенно больше возможностей для экспериментов (а также какое-то количество бесплатных генераций в день).
- Очень мощный набор инструментов для генерации доступен в рамках сервиса Phygital+. Он позволяет вам графически комбинировать нейросетевые модели для достижения необходимого художественного результата.
- Русскоязычные нейросети семейства ruDALL-E можно протестировать на сайте, или в приложении [Салют]
Вызов генеративных моделей из Python
Свободно-распространяемые генеративные модели вроде Stable Diffusion представляют собой обученные нейросети, с которыми можно работать из языка Python. Основной репозиторий таких моделей находится на портале HuggingFace - например, вот список моделей Text-to-Image по популярности. Если перейти на страничку модели, то часто можно увидеть пример её использования на языке Python:
from diffusers import StableDiffusionPipeline
import torch
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(
model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
Для работы таких моделей необходимо наличие графического процессора GPU, причем зачастую необходима достаточно мощная модель с 16Gb памяти VRAM и более (хотя простая генерация может заработать на 8Gb или даже 4Gb, т.е. на картах “домашнего” уровня).
Есть несколько способов запуска таких моделей:
- Используя общедоступные облачные инструменты с поддержкой GPU, например, Google Colab. Он позволяет вам использовать GPU по нескольку часов в день даже на бесплатном тарифе, а небольшая ежемесячная оплата снимает это ограничение. В интернет есть очень много заготовленных примеров, использующих именно бесплатный уровень Colab для работы.
- Используя облачные сервера, например, Sber Cloud, Yandex Cloud или Microsoft Azure. Плюсом является то, что вы платите только за время использования GPU, что позволяет запускать ресурсоёмкие процессы без капиталовложений.
- На домашнем компьютере - в этом случае вам нужно будет обзавестись графическим ускорителем и установить себе среду Python с поддержкой GPU.
AUTOMATIC 1111
Стандартом де факто для установки Stable Diffusion к себе на компьютер является пакет Stable Diffusion Web-UI, известный также как AUTOMATIC 1111 (по псевдониму своего создателя). Это расширяемое окружение, запускающееся на вашем компьютере, и открывающее доступ ко множеству различных моделей для генерации через интерактивный веб-интерфейс (я чуть было не написал удобный, но нет - интерфейс может показаться немного пугающим для типовых пользователей).
Установить AUTOMATIC можно как на Windows с видеокартой NVIDIA, так и на Mac с процессорами M1/M2. Сам процесс установки максимально упрощен и автоматизирован, и вы найдёте его описание в репозитории проекта.
Очень удобной возможностью является запуск AUTOMATIC 1111 из Google Colab - в этом случае вы используете бесплатные вычислительные мощности Google, при этом получаете в своё распоряжение веб-интерфейс для генерации со всеми новыми возможностями, поддерживаемыми Stable Diffusion WebUI. Вот несколько вариантов готовых Colab-ноутбуков для запуска AUTOMATIC:
Процесс запуска во всех случаях примерно такой:
- Заходите в репозиторий проекта
- Находите ссылку на последнюю версию ноутбука Google Colab
- Запускаете её
- В Colab прокликиваете все ячейки по очереди, устанавливая где необходимо какие-то параметры. В конце после запуска WebUI вы должны получить ссылку на AUTOMATIC WebUI, которую можно будет открыть в соседней вкладке, и наслаждаться генерацией.
Работа в Python / Google Colab
Наибольшую гибкость предоставляет использование нейросетевых моделей непосредственно из среды Python. Например, так вы сможете автоматически генерировать множество изображений по набору запросов, или же перебирать параметры генерации и создавать много изображений “на выбор”. Более того, самые продвинутые нейросетевые техники, вроде генерации стилизованного видео, становятся доступны именно программистам, знакомым с “внутренним устройством” моделей.
Однако, даже имея небольшие навыки программирования или немного здравого смысла, вы уже сможете воспользоваться готовыми примерами в Google Colab. Вот несколько полезных примеров:
- Stable Diffusion Workbook, который я для вас с любовью подготовил - генерация с помощью нескольких моделей Stable Diffusion, включая режим Image-to-Image и Upscaling
- Русскоязычные модели Kandinsky 2.2 и предыдущее поколение ruDALL-E. Обратите также внимание на ruDALL-E Aspect Ratio, позволяющее получить изображения нестандартных форматов
- Очень много примеров использования различных нейросетевых моделей есть в GitHub cameduru. На первой странице приведён постоянно обновляющийся список различных colab-ов.
- Предыдущее поколение инструментов генерации на основе VQGAN+CLIP:
Описанные здесь инструменты и некоторые другие доступны в моём репозитории AI Art Workbooks.
Обучение своих моделей: DreamBooth, Textual Inversion, LoRA
Наиболее интересная особенность Stable Diffusion состоит в том, что существуют способы до-обучить модель на своих изображениях. Это имеет смысл делать в двух случаях:
- До-обучить модель для изображения специфических предметов, объектов или людей
- До-обучить модель какому-то оригинальному стилю
В обоих случаях можно обойтись небольшим количеством фотографий: говорят, что можно брать около 5-10 фото, хотя в моём случае хорошие результаты с портретами людей стали получаться с датасетами в районе 100-200 фото.
Фотографии для обучения стоит заранее привести к требуемому размеру (512x512), при этом выбирая по возможности только хорошие качественные фотографии с правильной композицией.
Есть несколько алгоритмов до-обучения модели:
- DreamBooth до-обучает исходную модель целиком, в этом случае нам приходится хранить новую модель размером около 5Gb и использовать её. Рекомендуемый DreamBooth Colab
- Textual Inversion - это подход, при котором для нового объекта или стиля подбираются правильные семантические векторы, а сам процесс генерации изображения остаётся неизменным. В итоге необходимо сохранять лишь часть текстовой модели, кроме того, появляется возможность комбинировать несколько текстовых инверсий в одном изображении. Качество текстовой инверсии обычно несколько уступает DreamBooth.
- LoRA (Low-Rank Adaptation) - это один из самых современных подходов, при котором сохраняются все плюсы DreamBooth, но при этом обучается не целиком исходная нейросеть (у которой большое количество параметров), а только “дельта”, которую можно с незначительной потерей точности представить как разложение на две матрицы меньшего ранга. В результате процесс обучения происходит намного быстрее, а результирующие веса занимают существенно меньше места на диске.
Каталоги предобученных моделей
По мере того, как процесс до-обучения моделей становится всё более простым, многие участники сообщества до-обучают свои модели и делятся ими с сообществом. Большую коллекцию таких обученных моделей для разных случаев жизни можно найти на сайте CIVITAI. Некоторые из наиболее известных моделей:
Вы можете использовать эти модели как из программного кода, так и из инструментов типа Stable Diffusion Web UI. В последнем случае вам нужно следовать инструкции и положить веса модели в соответствующую папку на диске.
Ещё несколько полезных колабов
Примеры ниже не связаны напрямую с генерацией изображений, но могут оказаться интересными!
Данный список будет постепенно дополняться
Надеюсь, этот список поможет вам разобраться с тем, как начать использовать нейрогенерацию изображений! Если всё получилось, очень рекомендую устроить нейрогенеративную вечеринку