Решение задачи генерации новых покемонов с помощью модели из класса архитектур DCGAN.
Датасет с Kaggle. Имеем 2500 чистых картинок покемонов. Это не очень много, поэтому саугментируем данные и понадеемся, что это улучшит перфоманс модели.
- Поиграемся с цветами с помощью
color_jitter
- Сделеаем
elastic_transform
Так же обрежем все фото до
Итак, мы увеличили датасет в 3 раза.
Класс архитектур DCGAN основан на наборе принципов, таких как:
- Замена pooling слоев на пошаговые свертки
- Использование пакетной нормализации в генераторе и дискриминаторе
ReLU
на всех слоях генератора, кроме выходного (тамtanh
)LeakyReLU
на всех слоях дискриминатора
В этой работе используются следующие архитектуры:
Diskriminator | Generator |
---|---|
![]() |
![]() |
В обучении используется BCE Loss
и Adam Optimizer
с параметрами betas = (0.5, 0.9)
(GAN-ы из-за специфики обучения крайне чувствительны к гиперпараметрам). Обучим модель два раза на
50 epochs | 100 epochs |
---|---|
![]() ![]() |
![]() ![]() |
learning rate = 0.00275 |
learning rate = 0.0028 |
Процесс обучения (лоссы и скоры) сохраняются в Tensor Board, результаты можно посмотреть по ссылкам для 50 эпох и 100 эпох.
Обученные модели можно скачать по ссылке. В конце ноутбука есть функция download_file_from_google_drive(id, destination)
, которая импортирует предобученные модели.
DCGAN довольно старый класс архитектур (2016 г), в нем используются устаревшие идеи, поэтому получить крутой перфоманс не получится. Среди таких идей, например, использование пошаговых сверток и pooling слоев. Так как в этой задаче используются фотографии в низком разрешении (