Say hello to DragGAN — The cutting-edge AI tool now available!
Tags: ai, python, generativeai, beginners
Published: 2023-07-01 17:05:20

Exciting news for all image editing enthusiasts! The highly anticipated DragGAN code has finally been released and is now available under the CC-BY-NC license. With DragGAN, gone are the days of complex editing processes and painstaking adjustments. This remarkable solution introduces a whole new level of simplicity by allowing you to effortlessly drag elements within an image to transform their appearance. Drawing inspiration from the powerful StyleGAN3 and StyleGAN-Human models, DragGAN empowers users to manipulate various aspects of an image, whether it’s altering the dimensions of a car, modifying facial expressions, or even rotating the image as if it were a 3D model.

In this article, we will go through the basics of DragGAN and try it out using Google Colab.

## Getting Started
### Table of contents

- Introduction to GAN
- Types of GAN
- StyleGAN3 and StyleGAN-Human
- Applications of GAN
- DragGAN
- How to use it

### Introduction to GAN
A generative adversarial network (GAN) is a special kind of machine learning model that uses two neural networks to compete with each other. These neural networks, called the generator and the discriminator, work together in a game-like manner to improve their skills. The generator tries to create realistic data that looks like the real thing, while the discriminator tries to figure out which data is real and which is fake. They learn from each other’s successes and failures, making the generator better at creating convincing fake data and the discriminator better at spotting fakes. GANs are used to make computer-generated images, videos, and other types of data that look very similar to what humans create.

![Overview of GAN Structure](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/imp6y05fhfxfa4yfkt1a.png)
Image source: Overview of GAN Structure | Machine Learning | Google for Developers

GANs can generate high-quality, realistic data that exhibits similar characteristics to the training dataset. GANs have found applications in various fields, including image synthesis, video generation, text-to-image translation, and more.

### Types of GAN
GANs come in different types. Let’s explore some common GAN variants:

- **Vanilla GAN**: This is the simplest type of GAN, consisting of a generator and a discriminator. The generator creates images while the discriminator determines if an image is real or fake.
- **Deep Convolutional GAN (DCGAN)**: DCGAN employs deep convolutional neural networks to generate high-resolution and distinguishable images. Convolutional layers extract important details from the data, making it effective for image generation tasks.
- **Progressive GAN**: The generator starts by producing low-resolution images, and as the training progresses, it adds more details in subsequent layers. This approach enables faster training compared to non-progressive GANs and results in higher resolution images being generated.
- **Conditional GAN**: This type of GAN allows the network to be conditioned on specific information, such as class labels. It helps the GAN learn to differentiate between different classes by training with labeled images.
- **CycleGAN**: This type of GAN is often used for image style transfer, enabling the transformation between different image styles. For example, it can convert images from winter to summer or from a horse to a zebra. Applications like FaceApp utilize CycleGAN to alter facial appearances.
- **Super Resolution GAN**: This GAN type enhances low-resolution images by generating higher-resolution versions. It fills in missing details, improving the overall image quality.
- **StyleGAN**: Developed by Nvidia, StyleGAN generates high-quality, photorealistic images, especially focusing on realistic human faces. Users can manipulate the model to modify various aspects of the generated images.

### StyleGAN3 and StyleGAN-Human

- **StyleGAN3** — It is an evolution of the original StyleGAN that introduces several improvements and innovations to enhance the image generation process. It incorporates adaptive discriminator augmentation (ADA), a technique that dynamically adjusts the discriminator during training to improve the overall image quality. StyleGAN3 also introduces novel regularization methods, architectural modifications, and better optimization strategies, resulting in even more visually appealing and coherent face synthesis.
- **StyleGAN-Human** — It is a variant of StyleGAN3 that specifically focuses on generating realistic human faces. It leverages a large-scale dataset of human faces to learn intricate details, such as facial expressions, hair styles, and diverse characteristics.

### Applications of GAN
GANs have gained popularity in online retail sales due to their ability to understand and recreate visual content accurately. They can fill in images from outlines, generate realistic images from text descriptions, and create photorealistic product prototypes. They learn from human movement patterns, predict future frames, and create deepfake videos in video production. Furthermore, GANs can generate realistic speech sounds and even generate text for various purposes like blogs, articles, and product descriptions.

Let’s have a look at some of the use cases of GAN.

- **Realistic 3D Object Generation**: GANs have proven capable of generating three-dimensional objects, such as furniture models created by researchers at MIT that resemble designs crafted by humans. These models can be valuable for architectural visualization and video game production.
- **Human Face Generation**: GANs, such as Nvidia’s StyleGAN2, can generate highly realistic and believable human faces that appear to be genuine individuals.
- **Video Game Character Creation**: GANs have found applications in video game development, such as the use of GANs by Nvidia to generate new characters for the popular game Final Fantasy XV.
- **Fashion Design Innovation**: GANs have been utilized by clothing retailer H&M to create fresh fashion designs inspired by existing styles, allowing for the development of unique apparel.

## DragGAN
DragGAN is an exciting new AI application that revolutionizes photo and art adjustments with a simple drag-and-drop interface. It allows you to modify images across various categories like animals, cars, people, landscapes, and more. With DragGAN, you can reshape the image layout, adjust poses and shapes, and even change facial expressions of individuals in photos.

According to the research team behind DragGAN, their aim is to provide users with the ability to “drag” any point in an image to their desired position.

DragGAN comprises two key components. The first is feature-based motion supervision, which facilitates precise movement of points within the image. The second is a novel point tracking approach, ensuring accurate tracking of these points.

### How to use it
In this section, we will try dragGAN using the official git repository.

[GitHub - XingangPan/DragGAN: Official Code for DragGAN (SIGGRAPH 2023)](https://github.com/XingangPan/DragGAN)

- Open you google colab account using the below link.
[Google Colaboratory | colab.research.google.com](https://colab.research.google.com/)

- Click on the New notebook link to create new notebook in Colab.
![New notebook](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jkbzpudx6g6ed230jvn4.png)

- Clone the official DragGAN’s git repository using the following command.

```
!git clone https://github.com/XingangPan/DragGAN.git
```
![git clone](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nnwelhw85rfdl4c38u2b.png)
- Click on the play button to execute the cell.
- Switch the runtime type to GPU from the Runtime → Change runtime type option else it may take longer to process the results.

![Switch the runtime](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/upcj620hi7oy68pb13yz.png)
![Switch the runtime](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a3v9rakggl3edrd718lu.png)

- Click on + Code button to add new cells.
- Switch to the DragGAN directory using the cd command.
```
cd /content/DragGAN
```
- Install the requirements from the requirements.txt file.

```
!pip install -r requirements.txt
```

- Download pre-trained StyleGAN2 weights by executing the `download_model.sh` shell script using the below command. If you want to try StyleGAN-Human and the Landscapes HQ (LHQ) dataset, download weights from the following links: [StyleGAN-Human](https://drive.google.com/file/d/1dlFEHbu-WzQWJl7nBBZYcTyo000H9hVm/view?usp=sharing), [LHQ](https://drive.google.com/file/d/16twEf0T9QINAEoMsWefoWiyhcTd-aiWc/view?usp=sharing).

```
!sh scripts/download_model.sh
```
![download_model](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctmkqfccis71oxe9f1ny.png)

- Run the dragGAN visualizer created using gradio using the following command. The system will provide a network URL once the visualizer is up and running. Click on the URL obtained to try dragGAN.

```
!python /content/DragGAN/visualizer_drag_gradio.py
```
![visualizer_drag_gradio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3xhjd925hl9iqv02ysfk.png)

You will get the output as below,

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yerkwu1btppa2ssesk9b.png)

Thanks for reading this article.

Thanks Gowri M Bhatt for reviewing the content.

If you enjoyed this article, please click on the heart button ♥ and share to help others find it!

The full source code for this tutorial can be found here,

GitHub - codemaker2015/DragGAN-demo
Contribute to codemaker2015/DragGAN-demo development by creating an account on GitHub.
github.com

The article is also available on [Medium](https://codemaker2016.medium.com/say-hello-to-draggan-the-cutting-edge-ai-tool-now-available-e7be7ad2d635).

Here are some useful links,

- [What is a Generative Adversarial Network (GAN)? - Unite.AI](https://www.unite.ai/what-is-a-generative-adversarial-network-gan/)
- [https://arxiv.org/pdf/2305.10973.pdf](https://arxiv.org/pdf/2305.10973.pdf)
- [Papers with Code - StyleGAN Explained](https://paperswithcode.com/method/stylegan)
- [GitHub - NVlabs/stylegan3: Official PyTorch implementation of StyleGAN3](https://github.com/NVlabs/stylegan3)
- [Official PyTorch implementation of StyleGAN3 | github.com](https://github.com/NVlabs/stylegan3)