0Pricing
Learn AI with Python · Lezione

GAN condizionali e style transfer

cGAN con condizionamento sulla classe, concetto di CycleGAN, neural style transfer con VGG

GAN condizionali e style transfer è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.

Controllare ciò che generano le GAN

Una GAN semplice produce campioni casuali: non è possibile chiederle una classe specifica. Questa lezione tratta la generazione condizionale (cGAN), la traduzione non appaiata (CycleGAN) e il trasferimento neurale dello stile.

GAN condizionali (cGAN)

Una cGAN aggiunge una condizione (ad esempio un'etichetta di classe) sia al generatore sia al discriminatore. Ora può chiedere di "generare un 7" fornendo l'etichetta insieme al rumore.

Condizionamento del generatore

Il generatore concatena l'etichetta (codificata one-hot o tramite embedding) al vettore di rumore. L'input combinato gli consente di generare campioni della classe richiesta.

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)

Condizionamento del discriminatore

Il discriminatore riceve anch'esso l'etichetta, quindi non giudica soltanto "è reale?", ma "è un esempio reale di questa classe?". In questo modo costringe il generatore a rispettare la condizione.

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

Traduzione di immagini non appaiate

Spesso non disponiamo di coppie corrispondenti (ad esempio, lo stesso cavallo trasformato in zebra). CycleGAN traduce tra due domini usando immagini non appaiate, imparando la trasformazione da cavallo a zebra e viceversa senza esempi allineati.

Due generatori, due domini

CycleGAN usa due generatori: G: A to B e F: B to A, ciascuno con il proprio discriminatore. Insieme traducono in entrambe le direzioni tra i due domini.

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

Perdita di consistenza ciclica

L'idea chiave è che tradurre A in B e poi di nuovo in A dovrebbe restituire l'originale. La perdita di consistenza ciclica impone F(G(a)) == a, vincolando la mappatura anche senza dati appaiati.

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

Trasferimento neurale dello stile

Il trasferimento neurale dello stile combina il contenuto di un'immagine con lo stile di un'altra (ad esempio, una foto dipinta come un'opera di Van Gogh). Ottimizza direttamente l'immagine di output utilizzando le caratteristiche di una CNN preaddestrata.

Perdita del contenuto

La perdita del contenuto mantiene la struttura di alto livello dell'output vicina a quella dell'immagine di contenuto confrontando le mappe delle caratteristiche profonde della CNN. Preserva ciò che è presente nell'immagine.

content_loss = mse(features_out, features_content)

Perdita dello stile e matrice di Gram

Lo stile è catturato dalla matrice di Gram, cioè dalle correlazioni tra i canali delle caratteristiche. Il confronto tra le matrici di Gram trasferisce texture e colori. La perdita dello stile confronta le matrici di Gram dell'output e dell'immagine dello stile.

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))

Combinazione delle perdite

La perdita totale è una somma pesata: alpha * content_loss + beta * style_loss. Regolando i pesi si bilancia quanto il risultato preserva il contenuto e quanto adotta lo stile.

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

Verifica rapida

Verifichi la propria conoscenza della generazione condizionale.

Riepilogo: GAN condizionali e trasferimento dello stile

Ha imparato che le cGAN concatenano un'etichetta di classe all'input del generatore (e del discriminatore) per controllare la generazione, che CycleGAN usa la perdita di consistenza ciclica per la traduzione non appaiata e che il trasferimento neurale dello stile combina la perdita del contenuto con una perdita dello stile basata sulla matrice di Gram per ridipingere le immagini.

Domande Frequenti

La lezione «GAN condizionali e style transfer» è gratuita?

Sì — il testo completo di «GAN condizionali e style transfer» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.

Cosa imparerò in «GAN condizionali e style transfer»?

cGAN con condizionamento sulla classe, concetto di CycleGAN, neural style transfer con VGG Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Learn AI with Python?

Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «GAN condizionali e style transfer»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?

Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Autoencoder per l'apprendimento delle rappresentazioni
  2. Autoencoder variazionali (VAE)
  3. GAN: generatore e discriminatore
  4. GAN condizionali e style transfer
← Torna a Learn AI with Python