Введение

На увлекательном пересечении технологий и искусства я разработал физическое устройство для чеканки NFT, использующее Генеративную Состязательную Сеть (GAN), развернутую на Raspberry Pi 4. Проект включал обучение 128×128 Deep Convolutional GAN (DCGAN) на моем MacBook M3 и работу системы без экрана, управляемой через LILYGO TTGO T-Display ESP32.

Архитектура GAN и обучение

Архитектура GAN состоит из генератора с 6 блоками, который обрабатывает латентное пространство и создает постепенно увеличивающиеся карты признаков, достигая финального вывода размером 128×128 пикселей. Путь генератора выглядит следующим образом: латентное пространство → 4×4 → 8×8 → 16×16 → 32×32 → 64×64 → 128×128, при этом карты признаков начинаются с f×16=1024. Соответствующий генератору дискриминатор также состоит из 6 блоков.

Я обучал модель на протяжении 800 эпох с использованием Apple Silicon MPS, что заняло примерно 4 часа. Обучающая выборка состояла из 2480 изображений 11 субъектов, включая основную анкор-класс с 2000 изображениями и несколько классов меньшинств для упрощения генерации гибридных выходов. Затем модель была экспортирована из PyTorch в формат ONNX, что привело к созданию файла размером 53 МБ, а время вывода на Raspberry Pi 4 составляет около 3 секунд на каждое сгенерированное лицо.

Функциональность устройства и опыт

После генерации лица оно отправляется на ESP32, где создается название для NFT с использованием заранее определенного словаря и шаблонного предложения: "Это <прилагательное> NFT, и я хочу <глагол> его." Устройство было разработано не только для функциональности, но и как произведение искусства, которое я демонстрировал на улицах Нью-Йорка, позволяя прохожим взаимодействовать с ним и генерировать свои собственные NFT.

Для тех, кто заинтересован в технических аспектах, я открыт для обсуждения процессов обучения, конвертации в ONNX или любых других вопросов, связанных с проектом. Полное видео с опытом можно посмотреть здесь.