Как стать автором
Обновить

Hugging NFT — генерируем NFT на основе OpenSea колекции

Python *Искусственный интеллект Хакатоны

Hugging NFT — cоздайте NFT или обучите новую модель всего за несколько кликов. Тренируйте сколько сможете, а сообщество продолжит с вашего чекпоинта!

В этой статье мы научимся генерировать изображения NFT с помощью генеративно-состязательная сеть (англ. generative adversarial network, сокращённо GAN), а также адаптируем проект к удобному Hugging Face хабу.

GitHub: https://github.com/AlekseyKorshuk/huggingnft
Demo Space: https://huggingface.co/spaces/huggan/huggingnft

Введение

Проект создавался во время четырнадцатидневного хакатона "HugGAN Sprint". И чтобы вас сразу заинтересовать, посмотрите на пример генерации:

А теперь начнем с самого начал...

Generative Adversarial Network

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

Пример пайплайна можно увидеь на фото:

Источник: https://naokishibuya.medium.com/understanding-generative-adversarial-networks-4dafc963f2ef
Источник: https://naokishibuya.medium.com/understanding-generative-adversarial-networks-4dafc963f2ef

Собираем дадасет

Парсить данные мы будем из OpenSea через их "прекрасный" API.

Так как CloudFlare почти всегда блокирует любые запросы через API, то мы будем парсить данные через Selenium.

Итак, сначала загружаем chromedriver отсюда и впишите путь:

python huggingnft/datasets/collect_dataset.py \
	--collection_name cyberkongz \
  --use_selenium \
  --driver_path huggingnft/datasets/chromedriver



И вот через пару минут датасет появляется тут: https://huggingface.co/huggingnft

Тренируем модель

Вы можете легко добавить новую модель в любую коллекцию Open Sea. Обратите внимание, что важно собрать набор данных перед обучением — проверьте соответствующий раздел.

Google Colab

Перейдите по этой ссылке: link

Терминал

Теперь вы можете запустить скрипт следующим образом:

accelerate config

=> Accelerate спросит, в какой среде вы хотели бы запустить свой скрипт, просто ответьте на задаваемые вопросы.

Теперь вписываем данные и запускам:

accelerate launch huggingnft/lightweight_gan/train.py \
  --wandb \
  --image_size 256 \
  --num_train_steps 10000 \
  --save_every 1000 \
  --dataset_name huggingnft/cyberkongz \
  --push_to_hub \
  --name cyberkongz \
  --organization_name huggingnft

Вуаля! Тренировка началась, а за результатами можно следить на Weights & Biases (программа попросит авторизоваться).

Генерируем разультаты

Есть несколько удобных способов потыкать наши модельки.

Space

https://huggingface.co/spaces/huggan/huggingnft

Изображения и интерполяция (gif)

Google Colab

Просто перейдите по этой ссылке: https://colab.research.google.com/github/AlekseyKorshuk/huggingnft/blob/main/huggingnft/lightweight_gan/generate.ipynb

Терминал

Для изображений:

python huggingnft/lightweight_gan/generate_image.py \
	--collection_name cryptopunks \
  --nrows 8 \
  --generation_type default

Для интерполяции:

python huggingnft/lightweight_gan/generate_interpolation.py \
	--collection_name cryptopunks \
	--nrows 8 \
	--num_steps 100

Python

Для изображений:

from huggingnft.lightweight_gan.train import timestamped_filename
from huggingnft.lightweight_gan.lightweight_gan import load_lightweight_model

collection_name = "cyberkongz"
nrows = 8
generation_type = "default"  # ["default", "ema"]

model = load_lightweight_model(f"huggingnft/{collection_name}")
image_saved_path, generated_image = model.generate_app(
    num=timestamped_filename(),
    nrow=nrows,
    checkpoint=-1,
    types=generation_type
)

Для интерполяции:

from huggingnft.lightweight_gan.train import timestamped_filename
from huggingnft.lightweight_gan.lightweight_gan import load_lightweight_model

collection_name = "cyberkongz"
nrows = 1
num_steps = 100

model = load_lightweight_model(f"huggingnft/{collection_name}")
gif_saved_path = model.generate_interpolation(
    num=timestamped_filename(),
    num_image_tiles=nrows,
    num_steps=num_steps,
    save_frames=False
)

Результаты

Заключение

Я думаю, что проект удался. И является отличным примером для изучения GAN алгоритмов!

Если вы дочитали до самого конца, то попрошу вас оставить комментарий под статьей и поставить звезду на репозиторий: https://github.com/AlekseyKorshuk/huggingnft

Теги:
Хабы:
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 36
Комментарии Комментировать

Работа

Python разработчик
156 вакансий
Data Scientist
98 вакансий