Реализация Paper To Code для GauGan от NVIDIA на пользовательском наборе данных Landscape. Создание фотореалистичных изображений:p из рисунков

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

«Самая интересная идея в машинном обучении за последние 10 лет» — Ян ЛеКанн

GAN были очень популярны в последние несколько лет, так как они были представлены Яном Гудфеллоу в 2014 году.

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

GAN обычно состоит из 2 нейронных сетей:

1. Генератор

2. Дискриминатор

Процесс обучения можно рассматривать как «соревнование между фальшивомонетчиками и полицией», — сказал Гудфеллоу. «Фальшивомонетчики хотят сделать фальшивые деньги и сделать так, чтобы они выглядели настоящими, а полиция хочет посмотреть на любую конкретную купюру и определить, фальшивая ли она».»

Здесь генератор — это фальшивомонетчик, который пытается сгенерировать поддельные данные. И дискриминатор узнает, как определить, являются ли сгенерированные данные поддельными. Этот процесс происходит итеративно, когда и дискриминатор, и генератор постепенно становятся лучше в своей работе. То есть дискриминатор очень хорошо справляется с идентификацией поддельных данных. И это заставит генератор сделать данные, которые кажутся очень реальными.

В этой статье я продемонстрирую пользовательскую реализацию Gaugan от NVIDIA. Мой подход заключался в том, чтобы прочитать статью (Семантический синтез изображения с пространственно-адаптивной нормализацией) и попытаться построить модель, как описано в статье. Я использовал pytorch для реализации

ГауГан

Gaugan использует специальную технику нормализации для улучшения качества данных. Генератор способен принимать на вход семантическую карту (рисунок) и генерировать фотореалистичное изображение на выходе. Кроме того, он также способен к мультимодальному синтезу изображений, что означает, что он может генерировать изображения в различных стилях. Таким образом, для одного и того же рисунка может быть создано несколько изображений.

Пожалуйста, обратитесь к мой Github для получения полной информации об архитектуре и реализации.

В своей реализации я загрузил набор данных ландшафтных изображений с kaggle и использовал предварительно обученную модель семантической сегментации (deeplab v2) для создания семантических карт изображения. Вот как я собрал набор данных.

Затем этот набор данных использовался для обучения Гаугана. Ниже приведены некоторые результаты:

Эта модель была обучена на спешно собранном наборе данных в течение ограниченного времени на моем домашнем компьютере. Результаты могут быть улучшены за счет правильного выбора набора данных и его обучения на гораздо большем наборе данных.

Репозиторий Github: https://github.com/kvsnoufal/GauGanPytorch

Плечи гигантов:

  1. Синтез семантического изображения с пространственно-адаптивной нормализацией (Бумага)
  2. Официальная реализация Github: https://github.com/NVlabs/SPADE
  3. Реализация в Керасе: https://keras.io/examples/generative/gaugan/
  4. Набор ландшафтных данных Flickr: https://www.kaggle.com/datasets/arnaud58/landscape-pictures
  5. Модель DeepLab для семантической сегментации: https://github.com/kazuto1011/deeplab-pytorch

Об авторе

Я работаю в Dubai Holding, ОАЭ, в качестве главного специалиста по обработке и анализу данных. Вы можете связаться со мной по адресу [email protected] или https://www.linkedin.com/in/kvsnoufal/