Этот проект представляет собой глубокую сверточную генеративно-состязательную сеть, которая может создавать высококачественные изображения из случайного начального числа, такие как портреты, животные, рисунки и многое другое.
Модель представляет собой генеративно-состязательную сеть (GAN), как описано в статье «Генераторно-состязательные сети» Монреальского университета (2014).
Генератор и дискриминатор представляют собой глубокие сверточные нейронные сети, как в статье «Обучение представлению без учителя с помощью глубоких сверточных генеративно-состязательных сетей» от Facebook AI Research (2015), но с некоторыми улучшениями:
Я добавил уровни уравниваемой скорости обучения из статьи Nvidia « Прогрессивное выращивание GAN для повышения качества, стабильности и разнообразия » (2017).
Я добавил билинейную повышающую/понижающую дискретизацию из статьи Adobe Research «Создание сверточных сетей снова инвариантными к сдвигу» (2019).
Я реализовал вейвлет-преобразование из статьи SWAGAN: генеративная модель, основанная на стилей, основанная на вейвлетах , Тель-Авивского университета (2021 г.).
Я использовал архитектуру на основе стилей с постоянным вводом , изученные стили из картографической сети и внедрение шума из статьи Nvidia «Архитектура генератора на основе стилей для генеративных состязательных сетей» (2018).
Я добавил пропуск соединений из статьи MSG-GAN: многомасштабные градиенты для генеративно-состязательных сетей от TomTom и Adobe (2019).
Я добавил остаточные блоки из статьи «Глубокое остаточное обучение для распознавания изображений» Microsoft Research (2015).
Я добавил стандартное отклонение мини-пакета в конце дискриминатора из статьи «Улучшенные методы обучения GAN» от OpenAI (2016).
Я сохранил исходную ненасыщающую потерю из статьи «Генераторно-состязательные сети» Монреальского университета (2014).
Я добавил регуляризацию длины пути в генератор из статьи «Анализ и улучшение качества изображения StyleGAN» от Nvidia (2019).
Я добавил регуляризацию градиентного штрафа к дискриминатору из статьи «Улучшенное обучение GAN Вассерштейна» от Google Brain (2017).
Я добавил адаптивное дискриминационное расширение (ADA) из статьи Nvidia « Обучение генеративно-состязательных сетей с ограниченными данными » (2020), но вероятность увеличения не обучается и ее приходится устанавливать вручную (а некоторые дополнения отключены из-за отсутствия реализации PyTorch)
Я добавил вычисление начального расстояния Фреше (FID) во время обучения из статьи GAN, обученной по правилу обновления двух временных масштабов, сходящихся к локальному равновесию Нэша Университета Линца (2017), используя модуль pytorch-fid.
Я добавил проектор , как в статье «Анализ и улучшение качества изображения StyleGAN» от Nvidia (2019).
Человеческие лица 256*256 (FID: 5,97)
Морды животных 256*256 (FID: 6,56)
Аниме лица 256*256 (FID: 3.74)
Роспись граней 256*256 (FID: 20.32)
Обученные веса для нескольких наборов данных доступны на Google Диске , вам просто нужно скачать файлы .pt
и поместить их в папку models
.
Запустите следующую команду, чтобы установить зависимости:
$ pip install -r requirements.txt
(Возможно, вам придется использовать специальную команду для PyTorch, если вы хотите использовать CUDA)
Во-первых, вам нужно найти и загрузить набор изображений (менее 5000 может быть слишком мало, а больше 150 000 не обязательно) . Вы можете найти множество наборов данных на Kaggle , а те, которые я использовал, — на своем Google Диске .
Затем в файле training/settings.py
укажите путь к набору данных.
Если у вас нет дорогого графического процессора на 24 ГБ, как у меня, настройки по умолчанию могут вам не подойти. Вы можете попробовать:
Запустите файл training.ipynb
(вы можете остановить обучение в любой момент и возобновить его позже благодаря контрольным точкам)
Запустите testing.ipynb
для генерации случайных изображений.
Запустите testing/interpolation.ipynb
, чтобы сгенерировать изображения видео с плавной интерполяцией.
Запустите testing/projector.ipynb
чтобы проецировать реальные изображения в скрытое пространство.
Запустите testing/style_mixing.ipynb
чтобы сгенерировать изображения интерполяционного видео смешивания стилей.
Запустите testing/timelapse.ipynb
, чтобы сгенерировать изображения обучающего таймлапс-видео.