AiinsightsPortal

A Stepwise Python Code Implementation to Create Interactive Photorealistic Faces with NVIDIA StyleGAN2‑ADA


On this tutorial, we’ll do an in-depth, interactive exploration of NVIDIA’s StyleGAN2‑ADA PyTorch mannequin, showcasing its highly effective capabilities for producing photorealistic pictures. Leveraging a pretrained FFHQ mannequin, customers can generate high-quality artificial face pictures from a single latent seed or visualize clean transitions by latent area interpolation between completely different seeds. With an intuitive interface powered by interactive widgets, this tutorial is a beneficial useful resource for researchers, artists, and fans seeking to perceive and experiment with superior generative adversarial networks.

!git clone https://github.com/NVlabs/stylegan2-ada-pytorch.git

First, we clone the NVIDIA StyleGAN2‑ADA PyTorch repository from GitHub into your present Colab workspace.

!mkdir -p stylegan2-ada-pytorch/pretrained
!wget https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada-pytorch/pretrained/ffhq.pkl -O stylegan2-ada-pytorch/pretrained/ffhq.pkl

On this code half, the primary command creates the required listing (if it doesn’t exist already) for storing pretrained fashions. The second command downloads the FFHQ pretrained mannequin and saves it in that listing to be used with the StyleGAN2‑ADA mannequin.

import sys
sys.path.append('stylegan2-ada-pytorch')

On this code, we add the “stylegan2-ada-pytorch” listing to Python’s module search path, guaranteeing that modules from the repository could be simply imported and used.

import torch
import numpy as np
import PIL.Picture
import matplotlib.pyplot as plt
import ipywidgets as widgets
from IPython.show import show

Right here, we import statements and cargo important libraries for deep studying, numerical operations, picture processing, visualization, and interactive controls into your code. These libraries guarantee you will have the instruments to construct, manipulate, and show generated pictures interactively.

import legacy
import dnnlib


def generate_image(seed=42, truncation=1.0, network_pkl="stylegan2-ada-pytorch/pretrained/ffhq.pkl"):
    print(f'Producing picture with seed {seed} and truncation {truncation}')
    machine = torch.machine('cuda' if torch.cuda.is_available() else 'cpu')
   
    with dnnlib.util.open_url(network_pkl) as f:                                # Load the pretrained generator community
        G = legacy.load_network_pkl(f)['G_ema'].to(machine)
   
    z = torch.from_numpy(np.random.RandomState(seed).randn(1, G.z_dim)).to(machine)   # Create a latent vector utilizing the offered seed
    label = None  # FFHQ is unconditional


    with torch.no_grad():                                                             # Generate picture
        img = G(z, label, truncation_psi=truncation, noise_mode="const")
   
    # Convert picture tensor to uint8 and format for show
    img = (img + 1) * (255/2)
    img = img.clamp(0,255).to(torch.uint8)
    img = img[0].permute(1,2,0).cpu().numpy()
   
    plt.determine(figsize=(4,4))
    plt.imshow(img)
    plt.axis('off')
    plt.present()

On this half, we outline a perform referred to as generate_image that Masses the pretrained StyleGAN2‑ADA generator community from a given URL. Creates a latent vector based mostly on a seed, generates a picture with a specified truncation parameter, after which processes and shows the ensuing picture utilizing matplotlib.

def interpolate_images(seed1=42, seed2=123, steps=10, truncation=1.0, network_pkl="stylegan2-ada-pytorch/pretrained/ffhq.pkl"):
    print(f'Interpolating between seeds {seed1} and {seed2} with {steps} steps and truncation {truncation}')
    machine = torch.machine('cuda' if torch.cuda.is_available() else 'cpu')
   
    with dnnlib.util.open_url(network_pkl) as f:                              # Load the pretrained generator community
        G = legacy.load_network_pkl(f)['G_ema'].to(machine)
   
    # Generate latent vectors for the 2 seeds
    z1 = torch.from_numpy(np.random.RandomState(seed1).randn(1, G.z_dim)).to(machine)
    z2 = torch.from_numpy(np.random.RandomState(seed2).randn(1, G.z_dim)).to(machine)
   
    # Create interpolation latent vectors
    alphas = np.linspace(0, 1, steps)
    z_interp = []
    for a in alphas:
        z_interp.append((1 - a) * z1 + a * z2)
    z_interp = torch.cat(z_interp, dim=0)
    label = None


    # Generate pictures for every interpolated latent vector
    with torch.no_grad():
        imgs = G(z_interp, label, truncation_psi=truncation, noise_mode="const")
   
    imgs = (imgs + 1) * (255/2)
    imgs = imgs.clamp(0,255).to(torch.uint8).cpu().numpy()
   
    plt.determine(figsize=(steps * 2, 2))                                          # Plot pictures in a row to visualise the interpolation
    for i in vary(steps):
        plt.subplot(1, steps, i+1)
        img = np.transpose(imgs[i], (1,2,0))
        plt.imshow(img)
        plt.axis('off')
    plt.present()

Right here, we outline interpolate_images, which generates pictures by interpolating between latent vectors derived from two seeds. It hundreds the pretrained StyleGAN2‑ADA generator, computes a clean transition between the latent codes of the 2 seeds over a specified variety of steps, after which shows the ensuing pictures in a row to visualise the interpolation.

A Stepwise Python Code Implementation to Create Interactive Photorealistic Faces with NVIDIA StyleGAN2‑ADA
Pattern Generated Picture

In conclusion, we demonstrated a flexible and hands-on method utilizing NVIDIA’s StyleGAN2‑ADA mannequin for static picture era and dynamic latent area interpolation. By permitting customers to regulate parameters equivalent to seed values and truncation ranges interactively, this pocket book supplies perception into the intricacies of GAN-based picture synthesis and fosters creativity and innovation.


Right here is the Colab Pocket book for the above venture. Additionally, don’t neglect to observe us on Twitter and be a part of our Telegram Channel and LinkedIn Group. Don’t Neglect to hitch our 75k+ ML SubReddit.

🚨 Really useful Learn- LG AI Analysis Releases NEXUS: An Superior System Integrating Agent AI System and Knowledge Compliance Requirements to Tackle Authorized Considerations in AI Datasets


A Step-by-Step Information to Setting Up a Customized BPE Tokenizer with Tiktoken for Superior NLP Purposes in Python

Asif Razzaq is the CEO of Marktechpost Media Inc.. As a visionary entrepreneur and engineer, Asif is dedicated to harnessing the potential of Synthetic Intelligence for social good. His most up-to-date endeavor is the launch of an Synthetic Intelligence Media Platform, Marktechpost, which stands out for its in-depth protection of machine studying and deep studying information that’s each technically sound and simply comprehensible by a large viewers. The platform boasts of over 2 million month-to-month views, illustrating its recognition amongst audiences.

We will be happy to hear your thoughts

Leave a reply

Shopping cart