В этой статье рассматривается Deep Convolutional Generative Adversarial Network и ее pytorch-реализация Обучение неконтролируемому представлению с Deep Convolutional Generative Adversarial Networks для генерации поддельных изображений с использованием шума. Этот документ - лучший документ для понимания концепций и работы GAN.

Резюме

  1. Дискриминатор обучается на реальных изображениях и получает информацию о том, что это реальные изображения.
  2. Случайные шумы передаются генератору для генерации некоторых изображений, а затем эти изображения передаются дискриминатору и подаются так, что это поддельные изображения.
  3. Вышеупомянутые пункты являются работой дискриминатора и, таким образом, дискриминатор обучается.
  4. Между тем, Генератор считает, что генерируемые им изображения являются реальными изображениями, и, таким образом, генератор обучается.
  5. Таким образом, возникает конфликт между Генератором и Дискриминатором, и это называется минимаксной игрой.

Сетевая архитектура

Генератор

В этой сети на вход в сеть подается случайный шум размером 1 X 1 X 100 (100 каналов). Затем этот ввод проходит через четыре блока CT-BN-R (ConvTranspose-BatchNormalisation-Relu) с явно разными параметрами в каждом блоке. В последнем блоке используется свертка транспонирования с последующей активацией tanh.

Это реализация pytorch вышеупомянутой архитектуры генератора. Свертка транспонирования используется для повышения разрешения изображения в каждом блоке. Это простая архитектура генератора, и ее легко реализовать. Случайный шум 1 X 1 X 100 подвергается повышающей дискретизации для создания изображения 64 X 64 X 3.

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

Это реализация дискриминатора pytorch, как указано в справочном документе. В первом блоке изображение проходит только через свертку и утечку relu, затем оно проходит через 3 блока conv-batchNorm-leaky-relu. В последнем блоке его пропускают через свертку и сигмовидную кишку. Также добавляется выпадение, чтобы дискриминатор не преобладал над Генератором.

Функция потерь

Состязательная потеря (потеря дискриминатора)

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

Потеря генератора

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

Для оптимизации используется оптимизатор Adam со скоростью обучения 0,0002.

Для кода, пожалуйста, посетите страницу github, указанную ниже в разделе реализации.

Ссылка

DCGAN Paper

Реализация

Github