Просто отмечу, что я запустил Dream Factory, значительное обновление. Он имеет (дополнительный) графический интерфейс, настоящую одновременную поддержку нескольких графических процессоров, интегрированную галерею с полной поддержкой метаданных EXIF и множество других новых функций.
Я отказался от поддержки VQGAN и Disco Diffusion, чтобы сосредоточиться на Stable Diffusion, поэтому, если вам нужен VQGAN и/или Disco Diffusion, вам следует пока придерживаться этого. В противном случае я призываю всех перейти на Dream Factory! Я продолжу исправлять ошибки в этом репозитории, но, скорее всего, не буду добавлять новые функции в будущем.
Для автоматизации локального создания больших партий произведений искусства, созданных искусственным интеллектом. Заставьте свои графические процессоры работать круглосуточно и без выходных, создавая произведения искусства, созданные искусственным интеллектом, с возможностью автоматизации больших очередей подсказок, сочетающих выбранные пользователем темы, стили/художников и многое другое! Более подробная информация о доступных моделях приведена на примерах фотографий.
Некоторые примеры изображений, которые я создал с помощью этого процесса (они тщательно отобраны и повышены):
Обратите внимание, что я не создавал и не обучал модели, используемые в этом проекте, а также не участвовал в исходном кодировании. Я просто изменил исходные версии Colab, чтобы они запускались локально, и добавил некоторую поддержку автоматизации. Поддерживаемые в настоящее время модели со ссылками на их исходные реализации:
Вам понадобится графический процессор Nvidia, желательно с приличным объемом видеопамяти. 12 ГБ видеопамяти достаточно для выходных изображений 512x512 в зависимости от модели и настроек, а 8 ГБ должно быть достаточно для 384x384 (8 ГБ следует считать разумным минимумом!). Для создания изображений размером 1024x1024 вам потребуется около 24 ГБ видеопамяти или больше. Генерация небольших изображений и последующее масштабирование с помощью ESRGAN или другого пакета также дает очень хорошие результаты.
Должна быть возможность запуска на графическом процессоре AMD, но для установки версии Pytorch ROCm вам потребуется использовать Linux. У меня нет графического процессора AMD, который можно было бы установить на машину с Linux, поэтому я сам не проверял это.
Эти инструкции были протестированы на рабочем столе Windows 10 с графическим процессором Nvidia 3080 Ti (12 ГБ видеопамяти), а также в системе Ubuntu Server 20.04.3 со старым графическим процессором Nvidia Tesla M40 (24 ГБ видеопамяти).
[1] Установите Anaconda, откройте корневой терминал и создайте новую среду (и активируйте ее):
conda create --name ai-art python=3.9
conda activate ai-art
[2] Установите Pytorch:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
Обратите внимание, что вы можете настроить установку Pytorch с помощью онлайн-инструмента, расположенного здесь.
[3] Установите другие необходимые пакеты Python:
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4] Клонируйте этот репозиторий и переключитесь в его каталог:
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
Обратите внимание, что пользователям Linux могут потребоваться заключить URL-адрес в одинарные кавычки в команде клонирования.
[5] Клонируйте дополнительные необходимые репозитории:
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6] Загрузите файлы контрольных точек предварительно обученной модели VQGAN по умолчанию:
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
Обратите внимание, что пользователям Linux следует заменить двойные кавычки в командах Curl одинарными кавычками.
[7] (Необязательно) Загрузите дополнительные предварительно обученные модели:
Дополнительные модели не обязательны, но предоставляют больше возможностей. Вот хороший список доступных предварительно обученных моделей.
Например, если вам также нужна модель FFHQ (обученная на лицах):
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (Дополнительно) Проверка VQGAN+CLIP:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
Вы должны увидеть файл output.png, созданный в выходном каталоге, который должен напоминать яблоко.
[9] Установите пакеты для распространения на основе CLIP (если вас интересует только VQGAN+CLIP, вы можете пропустить все отсюда и до конца):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10] Репозитории клонов для диффузии, управляемой CLIP:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11] Загрузите модели, необходимые для диффузии под руководством CLIP:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
Обратите внимание, что пользователям Linux следует снова заменить двойные кавычки в командах Curl одинарными кавычками, а обратную косую черту mkdir заменить прямой косой чертой.
[12] (Дополнительно) Проверьте диффузию под контролем CLIP:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
Вы должны увидеть файл output.png, созданный в выходном каталоге, который должен напоминать яблоко.
[13] Репозиторий Clone Stable Diffusion (если вас не интересует SD, вы можете пропустить все отсюда и до конца):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14] Установите дополнительные зависимости, необходимые для Stable Diffusion:
pip install diffusers
[15] Загрузите файл предварительно обученных контрольных точек Stable Diffusion:
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
Если команда curl не загружает контрольную точку, она скрыта за входом в систему. Вам необходимо зарегистрироваться здесь (требуется только адрес электронной почты и имя), а затем вы сможете скачать файл контрольной точки здесь.
После загрузки вам нужно будет поместить файл .ckpt в каталог, созданный выше, и назвать его model.ckpt .
[16] (Дополнительно) Проверка стабильной диффузии:
Самый простой способ протестировать SD — создать простой файл подсказки с !PROCESS = стабильный diff и одной темой. Дополнительную информацию см. в файле example-prompts.txt и в следующем разделе. Предполагая, что вы сначала создадите простой файл подсказки под названием test.txt , вы можете протестировать, запустив:
python make_art.py test.txt
В случае успеха изображения должны быть сохранены в выходной каталог (организованы в подкаталоги, названные по дате и файлу подсказки).
[17] Настройка ESRGAN/GFPGAN (если вы не планируете масштабировать изображения, можете пропустить это и все остальное):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
Все готово!
Если во время работы вы получаете ошибки, связанные с недостаточным объемом видеопамяти графического процессора, и какое-то время не обновляли свою установку, попробуйте обновить некоторые из наиболее важных пакетов, например:
pip install transformers -U
По сути, вам просто нужно создать текстовый файл, содержащий темы и стили, которые вы хотите использовать для создания изображений. Если в файле приглашения имеется 5 предметов и 20 стилей, всего будет создано 100 выходных изображений (по 20 изображений стилей для каждого предмета).
Взгляните на example-prompts.txt , чтобы увидеть, как должны выглядеть файлы подсказок. На данный момент вы можете игнорировать все, кроме областей [предметы] и [стили]. Строки, начинающиеся с «#», являются комментариями и будут игнорироваться, а строки, начинающиеся с «!» являются директивами настроек и объясняются в следующем разделе. А пока просто измените темы и стили примера так, как вам хочется.
После того, как вы заполнили файл example-prompts.txt по своему вкусу, вы можете просто запустить:
python make_art.py example-prompts.txt
В зависимости от вашего оборудования и настроек создание каждого изображения займет от нескольких секунд до нескольких часов (на старом оборудовании). Если вы можете запустить Stable Diffusion, я настоятельно рекомендую его для достижения наилучших результатов — как по скорости, так и по качеству изображения.
Выходные изображения по умолчанию создаются в каталоге output/[текущая дата]-[имя файла подсказки]/ . Выходной каталог будет содержать файл JPG для каждого изображения, названного в соответствии с темой и стилем, использованными для его создания. Так, например, если у вас есть «обезьяна на мотоцикле» в качестве одного из ваших объектов и «автор Пикассо» в качестве стиля, выходное изображение будет создано как вывод/[текущая дата]-[имя файла подсказки]/a -monkey-on-a-motorcycle-by-picasso.jpg (имена файлов могут немного отличаться в зависимости от используемого процесса).
Вы можете в любой момент нажать CTRL+SHIFT+P, чтобы приостановить выполнение (пауза вступит в силу после завершения рендеринга текущего изображения). Нажмите CTRL+SHIFT+P еще раз, чтобы возобновить паузу. Полезно, если вы используете это на своем основном компьютере и вам нужно какое-то время использовать графический процессор для чего-то другого. Вы также можете нажать CTRL+SHIFT+R, чтобы перезагрузить файл приглашения, если вы его изменили (текущая рабочая очередь будет удалена, а новая будет создана из содержимого вашего файла приглашения). Обратите внимание, что ввод с клавиатуры работает только в Windows.
Настройки, используемые для создания каждого изображения, по умолчанию сохраняются в виде метаданных в каждом выходном файле JPG. Вы можете прочитать информацию метаданных обратно, используя любую утилиту EXIF или просто щелкнув правой кнопкой мыши файл изображения в проводнике Windows и выбрав «свойства», а затем щелкнув панель «подробности». Поле «комментарии» содержит команду, использованную для создания изображения.
Директивы можно включить в файл подсказки, чтобы изменить настройки для всех подсказок, которые следуют за ней. Эти директивы настроек задаются путем помещения их в отдельную строку внутри области [subject] файла приглашения в следующем формате:
![настройка, которую нужно изменить] = [новое значение]
Для [настройки для изменения] допустимыми директивами являются:
Несколько примеров:
!PROCESS = vqgan
Это установит текущий процесс создания изображений AI. Допустимые параметры: vqgan для VQGAN+CLIP, диффузия для диффузии на основе CLIP (Disco Diffusion) или стабильная дифф для стабильной диффузии.
!CUDA_DEVICE = 0
Это приведет к использованию графического процессора 0 (по умолчанию). Полезно, если у вас несколько графических процессоров — вы можете запустить несколько экземпляров, каждый из которых имеет собственный файл подсказки, в котором указан уникальный идентификатор графического процессора.
!WIDTH = 384
!HEIGHT = 384
Это установит размер выходного изображения 384x384. Больший размер вывода требует большего количества видеопамяти графического процессора. Обратите внимание, что для стабильной диффузии эти значения должны быть кратны 64.
!TRANSFORMER = ffhq
Это заставит VQGAN использовать преобразователь FFHQ (немного лучше для лиц) вместо стандартного (vqgan_imagenet_f16_16384). Вы можете выполнить шаг 7 в приведенных выше инструкциях по установке, чтобы получить преобразователь ffhq, а также ссылку на несколько других.
Все, что вы здесь укажете, ДОЛЖНО существовать в каталоге контрольных точек в виде файлов .ckpt и .yaml.
!INPUT_IMAGE = samples/face-input.jpg
В качестве начального изображения будет использоваться sample/face-input.jpg (или любое другое изображение, которое вы укажете) вместо случайного шума по умолчанию. Для достижения хороших результатов входные изображения должны иметь то же соотношение сторон, что и выходные изображения. Обратите внимание, что при использовании Stable Diffusion размер выходного изображения будет таким же, как и входное изображение (ваши настройки высоты/ширины будут игнорироваться).
!SEED = 42
В качестве входного начального значения будет использоваться 42 вместо случайного числа (по умолчанию). Полезно для воспроизводимости: если все остальные параметры идентичны, использование одного и того же начального значения должно давать идентичное изображение при нескольких прогонах. Установите ничего или -1, чтобы сбросить использование случайного значения.
!INPUT_IMAGE =
Установка любого из этих значений в ноль вернет его к значению по умолчанию. Итак, в этом примере начальное изображение использоваться не будет.
!STEPS = 50
Устанавливает количество шагов (аналогично итерациям) при использовании Stable Diffusion равным 50 (по умолчанию). Более высокие значения занимают больше времени и могут улучшить качество изображения. Значения более 100 редко приводят к заметным различиям по сравнению с более низкими значениями.
!SCALE = 7.5
Устанавливает масштаб навигации при использовании Stable Diffusion на 7,5 (по умолчанию). Более высокие значения (вплоть до уровня, превышающего ~25, результаты могут быть странными) приведут к тому, что выходные данные будут более точно соответствовать вашему запросу.
!SAMPLES = 1
Устанавливает количество выборок при использовании Stable Diffusion на 1 (по умолчанию). Значения больше 1 приведут к созданию нескольких выходных изображений для каждого запроса с небольшой экономией времени на каждое изображение. Для увеличения этого значения не требуется затрат на видеопамять графического процессора.
!STRENGTH = 0.75
Устанавливает влияние начального изображения на 0,75 (по умолчанию). Актуально только при использовании Stable Diffusion с входным изображением. Допустимые значения находятся в диапазоне от 0 до 1, где 1 соответствует полному уничтожению входного изображения, а 0 соответствует оставлению исходного изображения полностью нетронутым. Значения от 0,25 до 0,75 обычно дают интересные результаты.
!SD_LOW_MEMORY = no
Использовать разветвленный репозиторий с гораздо меньшими требованиями к памяти графического процессора при использовании Stable Diffusion (да/нет)? Если для этого параметра установлено значение «да», вы переключитесь на использование версии SD, оптимизированной для памяти, что позволит вам создавать изображения с более высоким разрешением с гораздо меньшим объемом памяти графического процессора (для изображений 512x512 потребуется всего около 4 ГБ видеопамяти). Компромисс заключается в том, что вывод происходит намного медленнее по сравнению с официальным репозиторием по умолчанию. Для сравнения: на RTX 3060 создание изображения размером 512x512 при настройках по умолчанию занимает около 12 секунд; с !SD_LOW_MEMORY = yes одно и то же изображение занимает больше минуты. Рекомендуется отключить эту настройку, если у вас нет видеопамяти графического процессора менее 8 ГБ или вы не хотите поэкспериментировать с созданием изображений большего размера перед масштабированием.
!USE_UPSCALE = no
Автоматически повышать масштаб изображений, созданных с помощью Stable Diffusion (да/нет)? Использует ESRGAN/GFPGAN (см. дополнительные настройки ниже).
!UPSCALE_AMOUNT = 2
Насколько масштабировать, если !USE_UPSCALE = yes ? По умолчанию — 2.0x; более высокие значения требуют больше видеопамяти и времени.
!UPSCALE_FACE_ENH = no
Следует ли использовать GFPGAN (а не ESRGAN по умолчанию) при масштабировании. GFPGAN обеспечивает наилучшие результаты при работе с лицами, но может давать немного худшие результаты при использовании для объектов, не являющихся лицами.
!UPSCALE_KEEP_ORG = no
Сохранять исходное неизмененное изображение при масштабировании (да/нет)? Если установлено значение «нет» (по умолчанию), исходное изображение будет удалено. Если установлено значение «да», исходное изображение будет сохранено в подкаталоге /original папки вывода изображения.
!REPEAT = no
Когда все задания в файле приглашения будут завершены, перезапустить его с начала файла (да/нет)? По умолчанию установлено значение «нет», что означает простое прекращение выполнения после завершения всех заданий.
ЗАДАЧА: завершить примеры настроек и добавить советы/примеры использования, документ random_art.py