Hi,

This week you'll learn about CycleGAN: Unpaired Image-to-Image Translation (Part 1).


Image

By this point, we know how ingenious Neural Networks are. We generate art and music, execute domain mapping, make cars drive on their own, and many more cool things. But, sometimes, we don't give enough credit to the tireless researchers of the deep learning community for their daily push toward evolution. 

However, the deep learning evolution to where it is today has given us some major constraints. The state-of-the-art research that bedazzles us every day almost always requires humongous computation power and flawless data. 

We previously covered Image Translation with Pix2Pix. The results were beautiful but let's not forget; that we were given a paired dataset for the task. For each desired output image, we had a corresponding input image. This means that a few good samaritans did hard work and gathered the data in such a format for us. Paired image translation is relatively easy to implement if your dataset is in the right format. However, expecting a properly paired image dataset to be available at your disposal at all times is extremely idealistic. 

But what do we keep saying always? Let Dr. Ian Malcolm from Jurassic Park reiterate:

Today, we will learn about CycleGAN, which uses unpaired Image-to-Image Translation. 

The big picture: To tackle the scarcity of paired data for Image Translation, the concept of CycleGAN was introduced. The ingenious architecture aimed to use unpaired data and the core concept of understanding data distributions to model fake data. 

How it works: CycleGAN utilizes a cyclic structure consisting of two sets of generators and discriminators. In the forward pass, the GAN architecture works normally, taking in input data to give us data that looks like it belongs to the output distribution. However, the architecture also learns to map the output data to the input distribution on the backward pass. This ensures a complete understanding of what kind of dataset we are provided while keeping a steady track of the data that our generators are producing. 

Our thoughts: The idea is really ingenious and makes us view the dataset as not a collection of single-pair entities but distributions as a whole. 

Yes, but: Since we are not directly mapping a single input to a corresponding output, we have to take additional steps to ensure that the results are better, especially for complex tasks like art generation. 

Stay smart: We are just getting started! Stay tuned for what's upcoming in this series.

Click here to read the full tutorial

Do You Have an OpenCV Project in Mind?

You can instantly access all of the code for CycleGAN: Unpaired Image-to-Image Translation (Part 1) along with courses on TensorFlow, PyTorch, Keras, and OpenCV by joining PyImageSearch University. 

Guaranteed Results: If you haven't accomplished your Computer Vision/Deep Learning goals, let us know within 30 days of purchase and get a full refund.

Discover how to finish your project faster!



Your PyImageSearch Team

LIKE, SHARE, NOTIFY, and SUBSCRIBE