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 -> photoPerdita 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 IMAGEVerifica 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
- Autoencoder per l'apprendimento delle rappresentazioni
- Autoencoder variazionali (VAE)
- GAN: generatore e discriminatore
- GAN condizionali e style transfer