0Pricing
Learn AI with Python · Lección

GAN condicionales y transferencia de estilo

cGAN con condicionamiento por clase, concepto de CycleGAN y transferencia de estilo neuronal con VGG.

GAN condicionales y transferencia de estilo es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

Control de lo que generan las GAN

Una GAN convencional produce muestras aleatorias, pero no se le puede pedir una clase específica. En esta lección se abordan la generación condicional (cGAN), la traducción no emparejada (CycleGAN) y la transferencia neuronal de estilo.

GAN condicionales (cGAN)

Una cGAN añade una condición, como una etiqueta de clase, tanto al generador como al discriminador. Ahora puede solicitar «genere un 7» proporcionando la etiqueta junto con el ruido.

Condicionamiento del generador

El generador concatena la etiqueta (one-hot o embebida) con el vector de ruido. La entrada combinada le permite generar muestras de la clase solicitada.

label_emb = embedding(label)        # e.g. dim 10
z = torch.randn(batch, 100)
gen_input = torch.cat([z, label_emb], dim=1)
fake = generator(gen_input)

Condicionamiento del discriminador

El discriminador también recibe la etiqueta, por lo que no solo evalúa «¿es real?», sino «¿es un ejemplo real de esta clase?». Esto obliga al generador a respetar la condición.

d_input = torch.cat([image, label_emb], dim=1)
score = discriminator(d_input)

Traducción de imágenes no emparejadas

A menudo no se dispone de pares coincidentes, por ejemplo, el mismo caballo como caballo y como cebra. CycleGAN traduce entre dos dominios usando imágenes no emparejadas, aprendiendo a transformar de caballo a cebra y de vuelta sin ejemplos alineados.

Dos generadores, dos dominios

CycleGAN utiliza dos generadores: G: A to B y F: B to A, cada uno con su propio discriminador. Juntos traducen en ambas direcciones entre los dominios.

# G: photo -> painting
# F: painting -> photo

Pérdida de consistencia cíclica

La idea clave es que traducir de A a B y volver a A debería devolver el original. La pérdida de consistencia cíclica impone F(G(a)) == a, lo que restringe la correspondencia sin necesidad de datos emparejados.

cycle_loss = (
    l1(F(G(a)), a) +
    l1(G(F(b)), b)
)

Transferencia neuronal de estilo

La transferencia neuronal de estilo combina el contenido de una imagen con el estilo de otra, por ejemplo, una fotografía pintada al estilo de Van Gogh. Optimiza directamente la imagen de salida utilizando características de una CNN preentrenada.

Pérdida de contenido

La pérdida de contenido mantiene la estructura de alto nivel de la salida cercana a la de la imagen de contenido, haciendo coincidir los mapas de características profundos de la CNN. Conserva qué aparece en la imagen.

content_loss = mse(features_out, features_content)

Pérdida de estilo y matriz de Gram

El estilo se captura mediante la matriz de Gram, que representa las correlaciones entre los canales de características. Hacer coincidir las matrices de Gram transfiere texturas y colores. La pérdida de estilo compara las matrices de Gram de la salida y de la imagen de estilo.

def gram(f):
    b, c, h, w = f.size()
    f = f.view(c, h * w)
    return f @ f.t()

style_loss = mse(gram(features_out), gram(features_style))

Combinación de las pérdidas

La pérdida total es una suma ponderada: alpha * content_loss + beta * style_loss. Ajustar los pesos permite decidir cuánto conserva el resultado del contenido y con qué intensidad adopta el estilo.

total = alpha * content_loss + beta * style_loss
total.backward()  # gradients update the output IMAGE

Comprobación rápida

Compruebe sus conocimientos sobre generación condicional.

Repaso: GAN condicionales y transferencia de estilo

Aprendió que las cGAN concatenan una etiqueta de clase con la entrada del generador (y del discriminador) para controlar la generación; que CycleGAN utiliza la pérdida de consistencia cíclica para la traducción no emparejada; y que la transferencia neuronal de estilo combina la pérdida de contenido con una pérdida de estilo basada en la matriz de Gram para volver a pintar imágenes.

Preguntas frecuentes

¿La lección «GAN condicionales y transferencia de estilo» es gratis?

Sí — el texto completo de «GAN condicionales y transferencia de estilo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «GAN condicionales y transferencia de estilo»?

cGAN con condicionamiento por clase, concepto de CycleGAN y transferencia de estilo neuronal con VGG. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «GAN condicionales y transferencia de estilo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Autoencoders para aprendizaje de representaciones
  2. Autoencoders variacionales (VAE)
  3. GAN: generador y discriminador
  4. GAN condicionales y transferencia de estilo
← Volver a Learn AI with Python