Approfondimenti

GAN: cos’è una Generative Adversarial Network e come si usa

Una GAN è composta da due reti neurali che si allenano insieme e si ottimizzano a vicenda, per creare immagini fake indistinguibili da quelle reali. Come funziona, quali sono i diversi tipi e perché può aiutare a migliorare l’apprendimento profondo

Pubblicato il 01 Set 2022

Josephine Condemi

giornalista

Immagini generate da Nvidia GAN

Una vince, l’altra perde: le due reti neurali che compongono una GAN si sfidano in un gioco a somma zero. Una genera immagini verosimili, l’altra deve individuarle in mezzo alle immagini reali, prese dal set di addestramento. Le due reti si allenano insieme e si ottimizzano a vicenda: i risultati sono immagini di volti, animali, oggetti “più veri del vero”.

Per cosa viene usata una GAN

La GAN è stata descritta per la prima volta nel 2014, nel paper “Generative Adversarial Nets” che Ian J. Goodfellow, ora a Deepmind, scrisse insieme ad altri colleghi durante il dottorato all’università di Montréal. In questo primo paper, la GAN è stata applicata per produrre nuove immagini di esempio per il database di cifre scritte a mano MNIST, per il dataset di fotografie di piccoli oggetti CIFAR-10 e per il Toronto Face Database.

Da allora, lo sviluppo della ricerca nel settore ha portato a utilizzarla per:

  • Produrre immagini di esempio per i dataset
  • Tradurre da immagine a immagine, da testo a immagine, da immagine a foto, da foto a emoji
  • Modificare fotografie
  • Generare personaggi di cartoni animati
  • Produrre fotografie realistiche, dipingerle, mixarle
  • Produrre nuove immagini artistiche
  • Ripristinare immagini danneggiate e a bassa risoluzione
  • Invecchiare i volti nelle fotografie
  • Prevedere i fotogrammi video
  • Produrre oggetti 3D
  • Generare fotografie di volti umani

Qual è l’obiettivo della GAN?

L’obiettivo di una GAN è generare immagini indistinguibili da quelle reali: immagini utili per la data augmentation, l’ampliamento dei dati a disposizione per l’apprendimento automatico senza raccogliere nuovi elementi ma modificando sinteticamente quelli già presenti.

A propria volta, la data augmentation serve a ridurre l’overfitting, il sovradattamento del modello di apprendimento automatico al campione statistico di dati utilizzato durante il training. La GAN serve quindi a ottimizzare il deep learning ed evitare errori superficiali di generalizzazione dovuti alla scarsità dei dati.

Come funziona una GAN

La GAN è composta da due reti neurali artificiali: il network generatore e quello discriminatore. Entrambe sono reti neurali convoluzionali, ispirate alla corteccia visiva animale. Come in tutte le reti neurali artificiali, anche in ciascuno dei due network che compongono la GAN l’elaborazione procede a livelli di astrazione progressiva, dai più semplici ai più complessi: l’output del livello precedente diventa l’input di quello successivo. Le reti neurali convoluzionali sono inoltre feed-forward: il flusso di elaborazione è a senso unico, in avanti, dall’ingresso all’uscita.

Il network discriminatore è una rete convoluzionale standard: un classificatore binomiale che, data un’immagine in ingresso, analizza i pixel, estrae i pattern, li confronta con i modelli appresi e assegna una etichetta all’intera rappresentazione. In particolare, il discriminatore restituisce una probabilità tra 0 e 1 che l’immagine analizzata sia falsa o vera.

Il network generatore agisce in modo inverso: a partire da un insieme di pattern appresi, genera immagini artificiali che abbiano quelle determinate caratteristiche, quindi immagini false ma verosimili.

Queste immagini arrivano al discriminatore insieme alle immagini reali, provenienti dal dataset di apprendimento: riusciranno a passare per vere?

I due network vengono messi in competizione tra loro, in un gioco a somma zero: l’obiettivo del generatore è ingannare il discriminatore, che a propria volta è programmato per controllare e scoprire le immagini false. Le loro funzioni-obiettivo sono opposte: una vince, l’altra perde. Ma i feedback sono ovviamente collegati tra loro: il generatore migliora la produzione di immagini sulla base dei riscontri del discriminatore, che a propria volta raffinerà i propri mezzi di detection.

A un certo punto, il discriminatore non riuscirà più a distinguere le immagini vere da quelle false. È importante quindi accorgersi del punto di squilibrio e non continuare l’addestramento.

What Are GANs? | Generative Adversarial Networks Explained | Deep Learning With Python | Edureka

What Are GANs? | Generative Adversarial Networks Explained | Deep Learning With Python | Edureka

Guarda questo video su YouTube

Video : What are GANS? – Edureka (Inglese)

Quali sono le differenze tra CNN (Convolutional Neural Network) e GAN

Una GAN può usare le CNN, le reti neurali convoluzionali, ma una CNN non è una GAN. Infatti, come esplicitato nel paragrafo precedente, solo se due CNN vengono poste in competizione in un gioco a somma zero, con funzioni-obiettivo opposte, si ha una GAN.

Tipi differenti di Generative Adversarial Network

  • Fully-Connected GAN o FCGAN

È il modello di GAN del primo articolo del 2014. Si tratta di due CNN completamente connesse, ovvero operative a tutte e cinque i livelli di astrazione.

  • GAN Semi-supervisionata o SGAN

In questo modello, vengono fornite etichette per un piccolo sottoinsieme di esempi su cui allenare il Generatore e il Discriminatore.

  • GAN bi-direzionale o BiGAN

Il modello BiGAN prevede, oltre il Generatore, un’altra fonte di produzione di immagini: l’Encoder. Se il Generatore produce a partire da vettori casuali di rumore, l’Encoder li estrae a partire dalle immagini reali di addestramento. Il Discriminatore quindi si trova a dover controllare sia il vettore che l’immagine prodotta: si tratta di un vettore reale e di una immagine fake, o viceversa?

  • GAN Condizionale o CGAN

La GAN Condizionale sostituisce i vettori casuali con un’etichetta di classe: il Generatore produce a partire da una etichetta precisa, così come il Discriminatore la inserisce tra i criteri di valutazione. L’etichetta è la “condizione” che rende più raffinato l’apprendimento anche su immagini di secondo grado, ovvero le immagini di un’immagine.

  • InfoGAN

Nel modello InfoGAN si aggiunge in parallelo al Discriminatore un altro classificatore, Q, che condivide con D tutti gli strati convoluzionali tranne l’ultimo. Solo D distinguerà le immagini vere dalle false, ma potrà contare sul supporto di Q nell’analisi e nella classificazione.

  • GAN con il Classificatore Ausiliario o AC-GAN

AC-GAN contiene un classificatore ausiliario Q, come in InfoGAN, e un’informazione condizionante sull’etichetta di classe, come in CGAN.

  • GAN con piramide Laplaciana o LAPGAN

Il modello LAPGAN è composto da una cascata di CNN all’interno di una struttura a piramide: è questa piramide che viene utilizzata per campionare l’immagine, attraverso tanti mini-generatori per ogni livello. LAPGAN favorisce generazioni ad alta risoluzione.

  • GAN progressiva o PROGAN

Il modello PROGAN utilizza reti neurali progressive, che si espandono per connessioni (strati) laterali in relazione ai compiti richiesti durante l’apprendimento. Sono immuni all’oblio, ovvero ricordano le conoscenze pregresse. Sia il Generatore che il Discriminatore crescono quindi con l’avanzare dell’addestramento, insieme a tutte le loro variabili.

  • Self-attention GAN o SAGAN

Il modello SAGAN si basa su meccanismi di autoattenzione che consentono alla GAN di apprendere in modo globale, evitando che componenti chiave delle immagini generate possano spostarsi rispetto alla posizione corretta (es. la bocca in un volto).

Fonte immagine : https://arxiv.org/pdf/1906.01529.pdf

  • Generative Facial Prior GAN o GFP-GAN

GFP-GAN è usato per migliorare immagini a bassa risoluzione. Nato dai ricercatori di Tencent, mette insieme il modello GAN dell’azienda cinese con il modello StyleGAN-2 pre-addestrato di Nvidia, evoluzione di GauGAN.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4