Cosa sono le reti generative avversarie (GAN)?

Autore

Jobit Varughese

Technical Content Writer

IBM

Che cos'è una GAN?

Una rete generativa avversaria, o GAN, è un modello di apprendimento automatico progettato per generare dati realistici apprendendo modelli dai set di dati di addestramento esistenti. Funziona all'interno di un framework di apprendimento senza supervisione utilizzando tecniche di deep learning, in cui due reti neurali lavorano in opposizione: una genera dati, mentre l'altra valuta se i dati sono reali o generati.

Sebbene il deep learning abbia eccelso in attività come la classificazione delle immagini e il riconoscimento vocale, la generazione di nuovi dati, inclusi immagini o testo realistici, è stata più impegnativa a causa della complessità dei calcoli nei modelli generativi.

Le GAN, introdotte da Ian Goodfellow nel suo articolo del 2014 Generative Adversarial Nets, offrono una soluzione rivoluzionaria a questa sfida.1 Questo framework innovativo ha trasformato la modellazione generativa, rendendo più facile lo sviluppo di modelli e algoritmi in grado di creare dati realistici e di alta qualità.

Come funzionano le GAN?

Un'architettura GAN è costituita da due reti neurali profonde: la rete del generatore e la rete del discriminatore. Il processo di addestramento GAN prevede che il generatore inizi con un input casuale (rumore) e crei dati sintetici come immagini, testo o suoni che imitano i dati reali di un determinato set di addestramento. Il discriminatore valuta sia i campioni generati che i dati del set di addestramento e decide se si tratta di dati reali o falsi. Assegna un punteggio compreso tra 0 e 1: un punteggio di 1 significa che i dati sembrano reali e un punteggio di 0 significa che sono falsi. La retropropagazione viene quindi utilizzata per ottimizzare entrambe le reti. Ciò significa che il gradiente della funzione di perdita viene calcolato in base ai parametri della rete e questi parametri vengono regolati per ridurre al minimo la perdita. Il generatore utilizza quindi il feedback del discriminatore per migliorare, cercando di creare dati più realistici.

La struttura di una GAN

L'addestramento di un'architettura GAN implica un processo contraddittorio. Il modello generatore cerca di ingannare il modello discriminante per classificare i dati falsi come reali, mentre il discriminatore migliora continuamente la sua capacità di distinguere tra dati reali e falsi. Questo processo è guidato da funzioni di perdita che misurano le prestazioni di ciascuna rete. Una perdita del generatore misura la capacità del generatore di ingannare il discriminatore facendogli credere che i suoi dati siano reali. Una bassa perdita del generatore significa che il generatore sta creando con successo dati realistici. Una perdita del discriminatore misura la capacità del discriminatore di distinguere tra dati falsi e dati reali. Una bassa perdita del discriminatore indica che il discriminatore è riuscito a identificare dati falsi.  

Ad esempio, in una GAN addestrata a generare immagini di cani, il generatore trasforma il rumore casuale in immagini che assomigliano ai cani, mentre il discriminatore valuta queste immagini rispetto alle foto reali dei cani del set di addestramento.

Nel tempo, questo processo antagonistico spinge entrambe le reti a migliorare. Consente al generatore di creare dati convincenti e realistici che assomigliano molto al set di dati di addestramento originale, mentre il discriminatore affina la sua capacità di identificare sottili differenze tra dati reali e falsi. 

Tipi di GAN

GAN Vanilla

Le GAN Vanilla sono la forma base di reti generative antagoniste che includono un generatore e un discriminatore impegnati in un tipico gioco tra avversari. Il generatore crea campioni falsi e il discriminatore mira a distinguere tra campioni di dati reali e falsi. Le GAN Vanilla utilizzano semplici perceptroni multistrato (MLP) o livelli di neuroni sia per il generatore che per il discriminatore, il che li rende facili da implementare. Questi MLP elaborano i dati e classificano gli input per distinguere gli oggetti noti in un set di dati. Tuttavia, sono noti per essere instabili durante l'addestramento e spesso richiedono un'attenta regolazione degli iperparametri per ottenere buoni risultati.

GAN condizionali (cGAN)

Una cGAN è un tipo di rete generativa avversaria che include informazioni aggiuntive, chiamate "etichette" o "condizioni", sia per il generatore che per il discriminatore.2 Queste etichette forniscono un contesto, consentendo al generatore di produrre dati con caratteristiche specifiche in base all'input dato, anziché basarsi esclusivamente sul rumore casuale come nelle GAN Vanilla. Questa generazione controllata rende le cGAN utili per le attività che richiedono un controllo preciso dell'output. Le cGAN sono ampiamente utilizzate per generare immagini, testo e dati sintetici su misura per oggetti, argomenti o stili specifici. Ad esempio, una cGAN può convertire un'immagine in bianco e nero in un'immagine a colori condizionando il generatore a trasformare la scala di grigi nel modello di colore rosso, verde e blu (RGB). Allo stesso modo, può generare un'immagine da input di testo, ad esempio "crea l'immagine di un gatto bianco col pelo lungo", producendo output in linea con la descrizione fornita.

GAN convoluzionale profonda (DCGAN)

La GAN convoluzionale profonda (DCGAN) utilizza reti neurali convoluzionali (CNN) sia per il generatore che per il discriminatore. Il generatore prende il rumore casuale come input e lo trasforma in dati strutturati, come le immagini. Utilizza convoluzioni trasposte (o deconvoluzioni) per ingrandire il rumore di input e trasformarlo in un output più ampio e dettagliato, "ingrandendo" il rumore per creare un'immagine significativa. Il discriminatore utilizza livelli convoluzionali standard per analizzare i dati di input. Questi livelli aiutano il discriminatore "a ingrandire" e a guardare la struttura generale e i dettagli dei dati per prendere una decisione. Questo approccio rende le DCGAN efficaci per la generazione di immagini di alta qualità e altri dati strutturati. 

StyleGAN

StyleGAN è un tipo di rete antagonista generativa che produce immagini ad alta risoluzione anche con una risoluzione di 1024 x 1024. Le StyleGAN vengono addestrate utilizzando un set di dati di immagini dello stesso oggetto. La rete di generatori è composta da più livelli, ciascuno responsabile dell'aggiunta di diversi livelli di dettaglio all'immagine, dalle caratteristiche di base alle trame complesse. La rete dei discriminatori ha anche più livelli, che valutano il livello di dettaglio e la qualità complessiva.

CycleGAN

In una CycleGAN, il generatore e il discriminatore vengono addestrati in modo ciclico. È progettata per la conversione da immagine a immagine utilizzando set di dati non abbinati. Funziona convertendo un'immagine in un altro stile, ad esempio un dipinto utilizzando un generatore e poi riconvertendola nello stile originale utilizzando un generatore inverso. Questo metodo aiuta a garantire che l'immagine ricostruita assomigli molto all'originale attraverso un processo chiamato coerenza del ciclo. Questi risultati sono particolarmente utili per attività come il trasferimento dello stile dell'immagine e il miglioramento delle immagini. 

GAN della piramide laplaciana (LAPGAN)

La GAN della piramide laplaciana (LAPGAN) è progettata per generare immagini di alta qualità perfezionandole su più scale. Inizia generando un'immagine a bassa risoluzione e poi aggiunge progressivamente più dettagli a una risoluzione più alta utilizzando una serie di GAN. Questo approccio multiscala, noto come piramide laplaciana, consente a LAPGAN di gestire in modo più efficace la complessità della generazione di immagini ad alta risoluzione.

DiscoGAN

DiscoGAN viene utilizzata per apprendere le relazioni tra domini senza richiedere dati di addestramento accoppiati. Utilizza due generatori e due discriminatori per convertire le immagini da un dominio all'altro e viceversa, contribuendo a garantire che l'immagine ricostruita assomigli il più possibile all'originale attraverso la coerenza del ciclo. Questo rende DiscoGAN efficace per attività come la conversione da immagine a immagine, il trasferimento di stili e il miglioramento delle immagini, anche con set di dati non associati. 

Le ultime tendenze in materia di AI, proposte da esperti

Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Applicazioni delle GAN

Le GAN possono essere utilizzate per varie applicazioni di computer vision, generazione di immagini, rilevamento di oggetti, traduzione da immagine a immagine, generazione di testo in immagine, previsione del fotogramma successivo del video e altro ancora.

Generazione di immagini

Le GAN vengono utilizzate per generare immagini fotorealistiche di campioni mai esistiti e per creare immagini da descrizioni testuali, consentendo la creazione di immagini basate su attributi o scene specificati. BigGAN, addestrato su set di dati di grandi dimensioni, genera dati in base a classi o condizioni specifiche e ottiene risultati all'avanguardia nella generazione di immagini.3 Viene utilizzato per varie applicazioni, tra cui la sintesi di immagini, la colorazione e la ricostruzione. Ad esempio, GAN-BVRM, un nuovo metodo di ricostruzione visiva bayesiana basato su GAN, utilizza un classificatore per decodificare i dati di risonanza magnetica funzionale (fMRI). Un generatore BigGAN pre-addestrato produce immagini specifiche per categoria e modelli di codifica seleziona immagini in linea con l'attività cerebrale, ottenendo una maggiore naturalezza e fedeltà nella ricostruzione degli stimoli delle immagini. Le GAN stanno facendo passi da gigante nel settore sanitario generando dati medici realistici, come risonanze magnetiche, scansioni TC e raggi X, per l'addestramento e l'analisi, e creando nuove strutture molecolari per la scoperta di farmaci. 

Super risoluzione dell'immagine

Le GAN possono migliorare le immagini a bassa risoluzione generando variazioni ad alta risoluzione, migliorando la qualità e il dettaglio delle immagini. Ad esempio, StyleGAN2 di NVIDIA genera immagini ad alta risoluzione e altamente realistiche con un controllo preciso su attributi tra cui contenuto, identità, espressione e posa, consentendo agli utenti di creare e manipolare immagini per applicazioni artistiche e pratiche.4

Conversione da immagine a immagine

Le GAN eseguono il trasferimento dello stile e la modifica delle immagini trasformando le immagini da un dominio all'altro, ad esempio trasformando uno schizzo in una versione dipinta. Ad esempio, le CycleGAN vengono utilizzate per convertire le foto in dipinti. Questo processo coinvolge un generatore che converte le immagini dal dominio di origine (fotografie) al dominio di destinazione (dipinti) e viceversa attraverso un vincolo ciclico, contribuendo a garantire che la mappatura mantenga la coerenza semantica. 

Retargeting video 

Le GAN vengono utilizzate per il retargeting video senza supervisione, adattando i contenuti video a diversi formati e proporzioni, preservando importanti informazioni visive. Le Recycle-GAN utilizzano una strategia ciclica simile a quella che si trova comunemente nei CycleGans, applicandola specificamente ai dati video. Ad esempio, le Recycle-GAN possono convertire un video in 16:9 in un formato quadrato per le piattaforme di social media, contribuendo a garantire che gli elementi chiave e i movimenti del video rimangano intatti.5

Manipolazione degli attributi facciali 

Le GAN consentono l'alterazione delle caratteristiche del viso nelle immagini, come il cambiamento delle espressioni o gli effetti dell'invecchiamento, mostrando il loro potenziale nelle applicazioni di intrattenimento e sui social media. StyleGAN funziona applicando una modifica a livello ai campioni generati in base a "stili" estratti dallo spazio latente. Questo processo consente un controllo intuitivo su vari attributi, tra cui il colore dei capelli e l'espressione facciale, consentendo agli utenti di manipolare i volti in base a caratteristiche specifiche senza bisogno di regolazioni manuali. Ad esempio, StyleGAN può essere utilizzato per cambiare il colore dei capelli di una persona da castani a biondi o per aggiungere un sorriso a un'espressione facciale neutra. 

Rilevamento degli oggetti 

Le GAN vengono utilizzate nel rilevamento degli oggetti per migliorare la qualità e la diversità dei dati di addestramento, il che può migliorare significativamente le prestazioni dei modelli di rilevamento degli oggetti. Generando immagini sintetiche che assomigliano molto ai dati reali, le GAN aumentano il set di dati di addestramento, aiutando il modello a generalizzarsi meglio e a funzionare in modo più accurato. Ad esempio, la ricerca ha dimostrato che le prestazioni dei modelli di deep learning per il rilevamento di oggetti si deteriorano significativamente se applicati a immagini di qualità ridotta, come quelle affette da rumore, sfocatura o altre distorsioni.6 Il documento presenta il framework GAN-DO, che utilizza le GAN per migliorare l'efficacia dei modelli di rilevamento degli oggetti rispetto alle variazioni della qualità dell'immagine senza aggiungere complessità all'architettura del modello o alla velocità di inferenza. I risultati sperimentali dimostrano che il GAN-DO supera i tradizionali metodi di messa a punto, portando a una maggiore precisione nel rilevamento degli oggetti.

Mixture of Experts | 28 agosto, episodio 70

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Altri modelli generativi per la generazione di dati sintetici

Oltre alle GAN, gli autoencoder variazionali (VAE) sono un altro modello di deep learning in grado di creare nuovi campioni di dati che imitano i dati del mondo reale. I VAE sono modelli probabilistici, il che significa che rappresentano i dati in termini di distribuzioni di probabilità, che descrivono la probabilità che si verifichino risultati o valori diversi nei dati. Questi modelli sono progettati per apprendere modelli da un set di dati di addestramento e creare nuovi dati che sono variazioni del set originale, piuttosto che repliche esatte. Un autoencoder variazionale (VAE) contiene due componenti. L'encoder (modello di riconoscimento) comprime dati di input complessi come le immagini in dati più semplici a bassa dimensione e il decoder (modello generativo) ricrea l'input originale dalla rappresentazione compressa. I VAE possono anche generare campioni di dati completamente nuovi, imparando dai modelli del set di dati di addestramento. I VAE in genere producono output più sfocati e meno nitidi ma sono più stabili da addestrare, mentre i GAN generano output più nitidi e realistici ma sono più difficili da addestrare a causa dell'instabilità.

In definitiva, la scelta tra VAE e GAN dipende dai requisiti specifici dell'attività, come la qualità di output desiderata, la stabilità dell'addestramento e la necessità di rappresentazioni latenti interpretabili, il che rende ogni modello particolarmente prezioso in diverse applicazioni.

Vantaggi e sfide delle GAN

Le reti generative avversarie (GAN) possono generare dati altamente realistici e diversificati, come immagini, testo e audio. Sono utilizzati in applicazioni tra cui l'elaborazione del linguaggio naturale (NLP) per generare dati di testo e migliorare i modelli linguistici e nella generazione di musica per creare nuove composizioni e suoni di strumenti realistici. La simulazione e i videogiochi utilizzano le GAN per generare ambienti e personaggi realistici e il rilevamento delle anomalie identificando modelli che si discostano dalla norma. Le GAN aiutano anche la ricerca scientifica simulando dati complessi per esperimenti costosi o poco pratici da eseguire. Migliorano i processi di machine learning (ML) attraverso l'ampliamento dei dati, aumentando la quantità e la diversità dei set di addestramento per affrontare la sfida dei big data limitati. Le GAN dovrebbero integrarsi ulteriormente con tecnologie come l'apprendimento per rinforzo, la robotica e l'NLP per far progredire i sistemi di intelligenza artificiale (AI). 

Nonostante l'avvento dei trasformatori, le GAN rimangono rilevanti grazie alla loro architettura leggera e all'efficienza computazionale, il che le rende ideali per la distribuzione edge. Con meno parametri rispetto ai trasformatori, le GAN offrono una generazione controllata per la manipolazione dettagliata delle caratteristiche (ad esempio, gli attributi facciali), che semplifica la messa a punto per attività specifiche. Le GAN forniscono velocità di inferenza più elevate in quanto richiedono un singolo passaggio in avanti (o un flusso di input una tantum attraverso una rete neurale per generare output). Questo le rende ideali per applicazioni in tempo reale su dispositivi edge con risorse limitate come telefoni mobile e sistemi IoT. Questi vantaggi rendono le GAN una scelta pratica per attività come la conversione di immagini, la super risoluzione e la sintesi video in tempo reale in ambienti edge. 

Tuttavia, le GAN devono affrontare sfide significative. Uno dei problemi principali è l'instabilità dell'addestramento, in cui il generatore e il discriminatore potrebbero non convergere correttamente, portando a output di scarsa qualità. Il collasso della modalità è un'altra sfida in cui il generatore produce una varietà limitata, non riuscendo a catturare l'intera diversità dei dati di addestramento. Le GAN richiedono anche grandi quantità di dati e notevoli risorse computazionali, che possono rappresentare un ostacolo alla loro diffusione. Valutare la qualità degli output generati dal GAN è una sfida, poiché le metriche tradizionali potrebbero non cogliere appieno le sfumature dei dati generati. Contribuire a garantire l'uso etico del campione generato è una preoccupazione crescente, poiché le GAN possono essere utilizzate per creare deep fake e altri contenuti potenzialmente dannosi.

Come implementare un modello GAN 

Una GAN può essere implementata utilizzando Tensorflow e Keras. Per creare un modello GAN in Python è necessario un set di dati di addestramento, uno script generatore e uno discriminatore. Di seguito è riportata una guida dettagliata per aiutarti a iniziare:

Fase 1: importa le librerie richieste, tra cui TensorFlow e altre librerie essenziali come numpy e matplotlib per la creazione e l'addestramento del modello GAN. 

Fase 2: carica e pre-elabora il set di dati, per assicurarti che rappresenti la distribuzione dei dati di destinazione (ad esempio, immagini, testo e altro).  

Fase 3: crea il modello del generatore utilizzando livelli TensorFlow o Keras che raccolgono rumore casuale e producono campioni di dati corrispondenti alla distribuzione target.

Fase 4: crea il modello discriminatore per classificare i campioni di dati reali dai campioni di dati falsi generati dal generatore. 

Fase 5: utilizza ottimizzatori adeguati sia per il generatore che per il discriminatore e definisci le funzioni di perdita.

Fase 6: combina il generatore e il discriminatore in un singolo modello GAN per addestrare il generatore a ingannare il discriminatore. 

Fase 7: implementa un ciclo per alternare l'addestramento del discriminatore e il generatore con dati reali e falsi.

Fase 8: analizza l'output del generatore e l'accuratezza del discriminatore nel corso delle epoche per garantire la convergenza.

Fase 9: usa il generatore addestrato per produrre nuovi campioni che imitano la distribuzione dei dati target.

Fase 10: traccia o analizza i dati generati per convalidare quanto è stato efficace l'apprendimento della distribuzione target da parte della GAN. 

Seguendo questi passaggi, è possibile implementare un modello GAN di base utilizzando TensorFlow.  

Il futuro delle GAN è promettente, con progressi attesi in termini di realismo, stabilità, efficienza e considerazioni etiche. Man mano che le GAN si integreranno maggiormente con altre tecnologie e troveranno nuove applicazioni, continueranno a rivoluzionare vari settori e campi.

Soluzioni correlate
IBM watsonx.ai

Addestra, convalida, adatta e implementa le funzionalità di AI generativa, foundation model e machine learning con IBM watsonx.ai, uno studio aziendale di nuova generazione per builder AI. Crea applicazioni AI in tempi ridotti e con una minima quantità di dati.

Scopri watsonx.ai
Soluzioni di intelligenza artificiale

Metti l'AI al servizio della tua azienda grazie all'esperienza leader di settore e alla gamma di soluzioni di IBM nel campo dell'AI.

Esplora le soluzioni AI
Consulenza e servizi sull'AI

Reinventa i flussi di lavoro e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.

Esplora i servizi AI
Fai il passo successivo

Ottieni l'accesso completo a funzionalità che coprono l'intero ciclo di vita dello sviluppo dell'AI. Crea soluzioni AI all'avanguardia con interfacce intuitive, workflow e accesso alle API e agli SDK standard di settore.

Esplora watsonx.ai Prenota una demo live
Note a piè di pagina

1 Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... & Bengio, Y. (2014). Generative adversarial nets. Advances in Neural Information Processing Systems.

2 Alqahtani, Hamed & Kavakli, Manolya & Kumar, Gulshan. (2019). Applications of Generative Adversarial Networks (GANs): An Updated Review. Archives of Computational Methods in Engineering. 28. 10.1007/s11831-019-09388-y.

3 Qiao, K., Chen, J., Wang, L., Zhang, C., Tong, L., & Yan, B. (2020). BigGAN-based Bayesian reconstruction of natural images from human brain activity. Neuroscienze, 444, 92–105. https://doi.org/10.1016/j.neuroscience.2020.07.040.

4 Alarcon, N. (2020). Synthesizing High-Resolution Images with StyleGAN2. Blog tecnico NVIDIA. https://developer.nvidia.com/blog/synthesizing-high-resolution-images-with-stylegan2.

5 Bansal, A., Ma, S., Ramanan, D., & Sheikh, Y. (2018). Recycle-GAN: retargeting video non supervisionato. arXiv. https://doi.org/10.48550/arXiv.1808.05174.

6 Prakash, C.D., Shrivastava, A., & Torresani, L. (2019). It GAN DO Better: GAN-based Detection of Objects on Images with Varying Quality. arXiv. https://arxiv.org/abs/1912.01707.