Book Image

Hands-On Image Generation with TensorFlow

By : Soon Yau Cheong
Book Image

Hands-On Image Generation with TensorFlow

By: Soon Yau Cheong

Overview of this book

The emerging field of Generative Adversarial Networks (GANs) has made it possible to generate indistinguishable images from existing datasets. With this hands-on book, you’ll not only develop image generation skills but also gain a solid understanding of the underlying principles. Starting with an introduction to the fundamentals of image generation using TensorFlow, this book covers Variational Autoencoders (VAEs) and GANs. You’ll discover how to build models for different applications as you get to grips with performing face swaps using deepfakes, neural style transfer, image-to-image translation, turning simple images into photorealistic images, and much more. You’ll also understand how and why to construct state-of-the-art deep neural networks using advanced techniques such as spectral normalization and self-attention layer before working with advanced models for face generation and editing. You'll also be introduced to photo restoration, text-to-image synthesis, video retargeting, and neural rendering. Throughout the book, you’ll learn to implement models from scratch in TensorFlow 2.x, including PixelCNN, VAE, DCGAN, WGAN, pix2pix, CycleGAN, StyleGAN, GauGAN, and BigGAN. By the end of this book, you'll be well versed in TensorFlow and be able to implement image generative technologies confidently.
Table of Contents (15 chapters)
1
Section 1: Fundamentals of Image Generation with TensorFlow
5
Section 2: Applications of Deep Generative Models
9
Section 3: Advanced Deep Generative Techniques

ProGAN overview

In a typical GAN setting, the generator output shape is fixed. In other words, the training image size does not change. If we want to try to double the image resolution, we add an additional upsampling layer to the generator architecture and start the training from scratch. People have tried and failed to increase image resolution by this brute-force method. The enlarged image resolution and network size increases the dimension space, making it more difficult to learn.

CNNs faced the same problem and solved it by using a batch normalization layer, but this doesn't work well with GANs. The idea of ProGAN is to not train all the layers simultaneously but start by training the lowest layer in both the generator and the discriminator, so that the layer's weights are stabilized before adding new layers. We can see it as pre-training the network with lower resolutions. This idea is the core innovation brought by ProGAN, as detailed in the academic paper Progressive...