En este tutorial, haremos una exploración interactiva en profundidad del modelo de pytorch stylegan2-azada de Nvidia, que muestra sus poderosas capacidades para generar imágenes fotorrealistas. Aprovechando un modelo FFHQ previo al estado previo, los usuarios pueden generar imágenes sintéticas de alta calidad a partir de una sola semilla latente o visualizar transiciones suaves a través de la interpolación del espacio latente entre diferentes semillas. Con una interfaz intuitiva alimentada por widgets interactivos, este tutorial es un recurso valioso para investigadores, artistas y entusiastas que buscan comprender y experimentar con redes adversas generativas avanzadas.
!git clone https://github.com/NVlabs/stylegan2-ada-pytorch.git
Primero, clonamos el repositorio de Nvidia Stylegan2 – Aada Pytorch de GitHub a su espacio de trabajo actual de Colab.
!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
En esta parte del código, el primer comando crea el directorio necesario (si aún no existe) para almacenar modelos previos a la detención. El segundo comando descarga el modelo FFHQ Pretraled y lo guarda en ese directorio para su uso con el modelo StyleGan2 -Aad.
import sys
sys.path.append('stylegan2-ada-pytorch')
En este código, agregamos el directorio «styleGan2-ADA-Pytorch» a la ruta de búsqueda del módulo de Python, asegurando que los módulos del repositorio se puedan importar y utilizar fácilmente.
import torch
import numpy as np
import PIL.Image
import matplotlib.pyplot as plt
import ipywidgets as widgets
from IPython.display import display
Aquí, importamos declaraciones y cargamos bibliotecas esenciales para aprendizaje profundooperaciones numéricas, procesamiento de imágenes, visualización y controles interactivos en su código. Estas bibliotecas aseguran que tenga las herramientas para construir, manipular y mostrar imágenes generadas de manera interactiva.
import legacy
import dnnlib
def generate_image(seed=42, truncation=1.0, network_pkl="stylegan2-ada-pytorch/pretrained/ffhq.pkl"):
print(f'Generating image with seed {seed} and truncation {truncation}')
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
with dnnlib.util.open_url(network_pkl) as f: # Load the pretrained generator network
G = legacy.load_network_pkl(f)['G_ema'].to(device)
z = torch.from_numpy(np.random.RandomState(seed).randn(1, G.z_dim)).to(device) # Create a latent vector using the provided seed
label = None # FFHQ is unconditional
with torch.no_grad(): # Generate image
img = G(z, label, truncation_psi=truncation, noise_mode="const")
# Convert image tensor to uint8 and format for display
img = (img + 1) * (255/2)
img = img.clamp(0,255).to(torch.uint8)
img = img[0].permute(1,2,0).cpu().numpy()
plt.figure(figsize=(4,4))
plt.imshow(img)
plt.axis('off')
plt.show()
En esta parte, definimos una función llamada Generate_Image que carga la red del generador StyleGan2 -ADA previa al detenido de una URL dada. Crea un vector latente basado en una semilla, genera una imagen con un parámetro de truncamiento especificado y luego procesa y muestra la imagen resultante usando 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}')
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
with dnnlib.util.open_url(network_pkl) as f: # Load the pretrained generator network
G = legacy.load_network_pkl(f)['G_ema'].to(device)
# Generate latent vectors for the two seeds
z1 = torch.from_numpy(np.random.RandomState(seed1).randn(1, G.z_dim)).to(device)
z2 = torch.from_numpy(np.random.RandomState(seed2).randn(1, G.z_dim)).to(device)
# 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 images for each 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.figure(figsize=(steps * 2, 2)) # Plot images in a row to visualize the interpolation
for i in range(steps):
plt.subplot(1, steps, i+1)
img = np.transpose(imgs[i], (1,2,0))
plt.imshow(img)
plt.axis('off')
plt.show()
Aquí, definimos interpolate_images, que genera imágenes interpolando entre vectores latentes derivados de dos semillas. Carga el generador StyleGan2 -Aads pretranado, calcula una transición suave entre los códigos latentes de las dos semillas en un número especificado de pasos, y luego muestra las imágenes resultantes en fila para visualizar la interpolación.
En conclusión, demostramos un enfoque versátil y práctico utilizando el modelo StyleGan2-ADA de NVIDIA para la generación de imágenes estáticas e interpolación dinámica de espacio latente. Al permitir a los usuarios ajustar parámetros como los valores de semillas y los niveles de truncamiento de manera interactiva, este cuaderno proporciona información sobre las complejidades de la síntesis de imágenes basada en GaN y fomenta la creatividad y la innovación.
Aquí está el Cuaderno de colab para el proyecto anterior. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 75k+ ml de subreddit.
🚨 Lectura de lectura recomendada Liberaciones de investigación de IA: un sistema avanzado que integra el sistema de IA del agente y los estándares de cumplimiento de datos para abordar las preocupaciones legales en los conjuntos de datos de IA
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.