В этой статье рассматривается Deep Convolutional Generative Adversarial Network и ее pytorch-реализация Обучение неконтролируемому представлению с Deep Convolutional Generative Adversarial Networks для генерации поддельных изображений с использованием шума. Этот документ - лучший документ для понимания концепций и работы GAN.
Резюме
- Дискриминатор обучается на реальных изображениях и получает информацию о том, что это реальные изображения.
- Случайные шумы передаются генератору для генерации некоторых изображений, а затем эти изображения передаются дискриминатору и подаются так, что это поддельные изображения.
- Вышеупомянутые пункты являются работой дискриминатора и, таким образом, дискриминатор обучается.
- Между тем, Генератор считает, что генерируемые им изображения являются реальными изображениями, и, таким образом, генератор обучается.
- Таким образом, возникает конфликт между Генератором и Дискриминатором, и это называется минимаксной игрой.
Сетевая архитектура
Генератор
В этой сети на вход в сеть подается случайный шум размером 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, указанную ниже в разделе реализации.