...

/

Improved GANs—Deep Convolutional GAN

Improved GANs—Deep Convolutional GAN

Learn about an improved version of GANs, the deep convolutional GAN, and how it can be implemented.

We'll cover the following...

Vanilla GAN proved the potential of adversarial networks. The ease of setting up the models and the quality of the output sparked much interest in this field. This led to a lot of research in improving the GAN paradigm.

Published in 2016, this work by Radford et al. introduced several key contributions to improve GAN outputs apart from focusing on convolutional layers, which are discussed in the original GAN paperRadford, Alec, Luke Metz, and Soumith Chintala. 2015. “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks.” ArXiv.org. 2015. https://arxiv.org/abs/1511.06434.. The 2016 paper emphasized using deeper architectures instead. The following figure shows the generator architecture for a deep convolutional GAN (DCGAN) (as proposed by the authors). The generator takes the noise vector as input and then passes it through a repeating setup of up-sampling layers, convolutional layers (shown as CONV 1, CONV 2, CONV 3, and CONV 4), and batch normalization layers to stabilize the training.

Press + to interact
DCGAN generator architecture
DCGAN generator architecture

Until the introduction of DCGANs, the output image resolution was quite limited. A Laplacian pyramid or LAPGAN was proposed to generate high-quality images, but it also suffered from certain fuzziness in the output. The DCGAN paper also made use of another important invention, the batch normalization layer. Batch normalization was presented after the original GAN paper and proved useful in stabilizing the overall training by normalizing the input for each unit to have zero mean and unit variance. To get higher-resolution images, it made use of strides greater than 1 while moving the convolutional filters.

Implementation

Let’s start by preparing the discriminator model. CNN-based binary classifiers are simple models. One modification we make here is to use strides longer than ...