Привет !! Сегодня я поделюсь отрывком, который я получил в результате работы над GAN за последний год. Эта статья будет основана на том, чтобы помочь вам начать самостоятельное исследование и применение, а не на части прямой однополярной информации. Потому что я считаю, что было бы нереально поделиться одним специализированным ресурсом, особенно в такой огромной области исследований и разработок, как эта.

Но я могу гарантировать вам, что все ресурсы действительно хороши для начинающего, поскольку все ресурсы, записные книжки с кодом и документы - это те, которые я опробовал и с которыми работал, так что готово! хорошие чтения.

Путешествие началось, когда я слушал выступление Яна Гудфеллоу, объясняющего, как он создал эту архитектуру, на одном из курсов Coursera, а затем по мотивам моего учителя доктора Сердара Чифтчи мы начали искать, читать и применять множество различных моделей для понимания и возьмите в руки GAN.

Я использовал очень много ресурсов, наиболее подробным из которых, безусловно, является статья самого Яна Гудфеллоу. И поскольку мне потребовалось несколько недель, чтобы понять всю логику и математику, стоящую за всем этим. Я подумал, что было бы здорово, если бы я смог облегчить задачу и помочь другим разобраться в ней быстрее. Так !! ага, чего мы ждем? давайте нырнем :)

Прочитав эту статью, вы узнаете следующее:

  1. Что такое GAN?
  2. Как построить стабильную сеть GAN?
  3. Создайте код своего GAN с нуля!
  4. Различные структуры GAN.
  5. Некоторые интересные приложения GAN.
  6. Ресурсы.

1. Что такое GAN?

Генеративные состязательные сети - это подход к генеративному моделированию с использованием методов глубокого обучения, таких как сверточные нейронные сети.

Они представляют собой умный способ обучения генеративной модели с использованием двух разных моделей - Генератора и Дискриминатора.
Первая модель называется «Генератор» и предназначена для генерации новых данных, аналогичных ожидаемым. Генератор можно уподобить человеку, подделывающему искусство, который создает фальшивые произведения искусства.
Вторая модель называется Дискриминатором. Цель этой модели - определить, являются ли входные данные «настоящими» - принадлежат ли они исходному набору данных - или «поддельными» - созданы фальшивомонетчиком. В этом сценарии Дискриминатор аналогичен полиции (или эксперту по искусству), которая пытается определить произведения искусства как правдивые или мошеннические.

Вкратце:

  • Генератор. Модель, которая используется для создания новых правдоподобных примеров из проблемной области.
  • Дискриминатор. Модель, которая используется для классификации примеров как реальных (из предметной области) или поддельных (сгенерированных).

2. Как построить стабильные сети GAN?

Генеративные состязательные сети сложно обучить. Это связано с тем, что архитектура включает в себя модель генератора и дискриминатора, которые участвуют в игре с нулевой суммой.

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

Улучшение архитектуры GAN для создания стабильных GAN - это подход, который стал известен как Deep Convolutional GAN ​​или DCGAN.

Готовы к некоторым советам, чтобы сделать GAN счастливым? : D

  • Даунсэмпл с использованием чередующихся сверток (например, не используйте объединяющие слои).
  • Повышайте дискретизацию с помощью чередующихся сверток (например, используйте транспонированный сверточный слой).
  • Используйте LeakyReLU (например, не используйте стандартный ReLU).
  • Используйте BatchNormalization (например, стандартизируйте выходные данные слоя после активации).
  • Используйте инициализацию гауссовского веса (например, среднее 0,0 и стандартное отклонение 0,02).
  • Используйте стохастический градиентный спуск Адама (например, скорость обучения 0,0002 и бета1 0,5).
  • Масштабировать изображения в диапазоне [-1,1] (например, использовать Tanh на выходе генератора).

3. Создайте код своего GAN с нуля!

Здесь я предпочел поделиться большим количеством ресурсов, «очевидно, одного ресурса недостаточно», за которым я следил сам, когда пытался построить свою первую GAN с нуля.

Первая - это потрясающая статья от RealPython:

Лучшая из них - это потрясающая статья от Machine Learning Mastery:

Мне действительно удалось записаться на обучающий курс через Gmail, что очень помогло мне в моем исследовательском путешествии.

Еще один полезный ресурс - это блокнот Google Collab, который помогает вам создавать изображения с помощью CIFAR 10 и понимать общую концепцию в качестве основы.

4. Различные структуры GAN.

CycleGAN:

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

Например, преобразование изображения лошади в зебру, зиму в лето и наоборот. Вы также можете преобразовывать изображения в разные стили рисования, такие как Сеззан и Ван Гог, не правда ли? Ну по крайней мере для меня это так: D

Для получения дополнительной информации вы можете следовать руководству, приведенному ниже, опять же, это руководство, которое я уже изучал и нашел его полезным:



Не забываем и статью Непарное преобразование изображения в изображение с использованием Cycle-Consistent Adversarial Networks, опубликованную лабораторией Berkeley AI Research (BAIR).

Текст-2-изображение

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

Например, при вводе «эта птица красно-белая с очень короткой вершиной» будет создано изображение птицы, которое выглядит так, как указано в описании.

Подробнее об этой архитектуре вы можете прочитать в ее основной статье здесь.

А также попробуйте сами в этом репозитории на Github :)

ДискоГАН

В последнее время DiscoGAN стал очень популярным из-за его способности изучать междоменные отношения по неконтролируемым данным.

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

Ознакомьтесь с исследовательской статьей здесь и попробуйте здесь

StyleGAN

На каждой конференции, на которой я объяснял GAN, я задавал следующий вопрос.

Как вы думаете, откуда эта маленькая девочка? К сожалению, я не смог обмануть аудиторию этим вопросом, так как, пока они не дойдут до этого раздела, они будут легко знать ответ, который этот ребенок от GANganic: D, специально сгенерированный Style GAN.

StyleGAN - это формулировка GAN, способная генерировать изображения с очень высоким разрешением даже с разрешением 1024 * 1024. Идея состоит в том, чтобы создать стек слоев, в котором начальные слои могут создавать изображения с низким разрешением (начиная с 2 * 2), а последующие слои постепенно увеличивают разрешение.

Самый простой способ для GAN генерировать изображения с высоким разрешением - это запоминать изображения из набора обучающих данных, и при создании новых изображений он может добавлять случайный шум к существующему изображению. На самом деле StyleGAN этого не делает, а изучает особенности человеческого лица и генерирует новый образ человеческого лица, которого не существует в реальности. Если это звучит интересно, посетите Этот человек не существует. Каждое посещение этого URL-адреса будет генерировать новое изображение человеческого лица, которого не существует во вселенной.

5. Некоторые приложения GAN.

Старение лица

В данной работе предлагается первый метод автоматического старения лица на основе GAN. В отличие от предыдущих работ, в которых GAN использовались для изменения лицевых атрибутов, в нем особое внимание уделяется сохранению оригинальной личности в старой версии его / ее лица. С этой целью он представляет новый подход к оптимизации скрытых векторов GAN с сохранением идентичности. Объективная оценка полученных изображений пожилых и помолодевших лиц с помощью современных решений для распознавания лиц и оценки возраста демонстрирует высокий потенциал предлагаемого метода.

Искусственный интеллект может сказать платью "да"

В этом приложении вы можете примерить платья и наряды, которые хотите купить в Интернете. Смотрите здесь.

ИГАН

Генерация интерактивных изображений через генерирующие состязательные сети.

iGAN (также известный как интерактивный GAN) - это авторская реализация интерфейса создания интерактивных изображений, описанная в:
Генеративное визуальное манипулирование в естественном многообразии изображений
С помощью нескольких движений пользователя наша система могла создавать фотографии -реалистичные образцы, которые лучше всего удовлетворяют пользователям, редактируемым в режиме реального времени. Система основана на глубоких генеративных моделях, таких как Generative Adversarial Networks (GAN) и DCGAN. Система служит двум целям:

  • Интеллектуальный интерфейс рисования для автоматического создания изображений, вдохновленных цветом и формой мазков кисти.
  • Интерактивный инструмент визуальной отладки для понимания и визуализации глубоких генеративных моделей. Взаимодействуя с генеративной моделью, разработчик может понять, какой визуальный контент может создавать модель, а также ограничения модели.

Попробуйте сами здесь

6. Ресурсы.

Как я уже упоминал, эта статья основана на многих других статьях, репозиториях GitHub, руководствах и статьях, на многие из которых я уже ссылался в статье и в разделе ресурсов.

Вы можете использовать их, чтобы начать свое собственное познавательное путешествие:

Http://www.iangoodfellow.com/slides/2016-12-04-NIPS.pdf