Panoramica
- I GAN sono modelli generativi, credi a cosa gli dai da mangiare.
- Abbiamo elencato 4 librerie GAN in primo piano
introduzione
Attualmente, Il GAN è considerato una delle aree di ricerca più interessanti nel campo della visione artificiale. La sua abilità di elaborazione delle immagini non ha eguali e, essere uno scienziato dei dati, non esplorarlo sarebbe un errore. Anche persone eminenti come Yann LeCun hanno descritto i GAN come “l'idea più interessante nell'apprendimento automatico negli ultimi anni 10 anni”.
Quando ho lavorato per la prima volta con GAN, L'ho sviluppato da zero usando PyTorch ed è stato un compito noioso. Diventa ancora più difficile quando il risultato non è soddisfacente e si vuole provare un'altra architettura, da ora devi riscrivere il codice. Ma per fortuna, I ricercatori che lavorano presso vari colossi tecnici hanno sviluppato varie librerie GAN per aiutarti a esplorare e sviluppare applicazioni basate su GAN.
In questo articolo, vedremo 4 Librerie GAN interessanti che dovresti assolutamente conoscere. Cosa c'è di più, Ti darò una panoramica del GAN, per iniziare.
Vi consiglio di consultare il nostro completo Programma di visione artificiale per iniziare in questo campo.
Sommario
- Una rapida panoramica dei GAN
- Librerie GAN
- TF-GAN
- Torcia-GAN
- Mimica
- IBM Toolkit- GAN
Una rapida panoramica dei GAN
Ian Good Fellow ha introdotto il GAN in 2014 y es un método de apprendimento profondoApprendimento profondo, Una sottodisciplina dell'intelligenza artificiale, si affida a reti neurali artificiali per analizzare ed elaborare grandi volumi di dati. Questa tecnica consente alle macchine di apprendere modelli ed eseguire compiti complessi, come il riconoscimento vocale e la visione artificiale. La sua capacità di migliorare continuamente man mano che vengono forniti più dati lo rende uno strumento chiave in vari settori, dalla salute... de última generación. Es un miembro de la familia del Modelo Generativo que pasa por el addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina.... adversario.
La modellazione generativa è un metodo potente in cui la rete apprende la distribuzione dei dati di input e cerca di generare il nuovo punto dati sulla base di una distribuzione simile.. Se guardiamo agli esempi di modelli generativi abbiamo Auto Encoder, macchine Boltzmann, reti generative contraddittorie, redes bayesianas, eccetera.
architettura GAN
I GAN sono costituiti da due reti neurali, un generatore GRAMMO e un discriminatore D. Cosa c'è di più, questi due modelli sono coinvolti in un gioco a somma zero durante l'allenamento.
La rete del generatore apprende la distribuzione dei dati di allenamento. E quando forniamo rumore casuale come input, genera alcuni dati sintetici che cercano di imitare i campioni di addestramento.
Ora arriva il modello discriminatore (D). Indica un'etichetta: Vero o falso ai dati generati da GRAMMO in base alla distribuzione dei dati. Ciò significa che la nuova immagine proviene dalle immagini di addestramento o è un'immagine generata artificialmente.
Il caso in cui D riconoscere con successo l'immagine come reale o falsa porta ad un aumento della perdita del generatore. Nello stesso modo, quando GRAMMO riesce a costruire immagini di buona qualità simili a quelle reali e inganna il D, la perdita del discriminatore aumenta. Cosa c'è di più, il generatore apprende dal processo e genera immagini migliori e più realistiche nella prossima iterazione.
Fondamentalmente, può essere considerato come un gioco MIN-MAX a due giocatori. Qui le prestazioni di entrambe le reti migliorano nel tempo. Entrambe le reti passano attraverso più iterazioni di addestramento. Con el paso del tiempo y varias actualizaciones en los parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto.... del modelo como pesos y sesgos, raggiungere lo stato stazionario noto anche come equilibrio di Nash.
Qual è l'equilibrio di Nash??
L'equilibrio di Nash è uno stato stabile di un sistema che coinvolge l'interazione di diversi partecipanti, in cui nessun partecipante può vincere attraverso un cambio unilaterale di strategia se le strategie degli altri rimangono invariate.
Come ultima opzione, in questo gioco a somma zero, possiamo generare con successo immagini artificiali o false che per lo più assomigliano al vero set di dati di allenamento.
Esempio-
Vediamo quanto possono essere utili i GAN.
Ad esempio, durante il blocco, avuto la possibilità di rivedere il suo vecchio album di foto. In un periodo così stressante, è una buona recensione per rivivere i tuoi ricordi. Ma come questo album è stato nel tuo armadio per anni?, intatto, alcune fotografie sono state danneggiate e questo ti ha reso triste. Ed è proprio qui che hai deciso di usare GAN.
L'immagine qui sotto è stata ripristinata con successo con l'aiuto di GAN, usando un metodo chiamato Image Inpainting.
Fonte immagine: Bertalmio et al., 2000.
Il ripristino delle immagini è l'arte di ripristinare le immagini danneggiate ricostruendo le parti mancanti utilizzando le informazioni di base disponibili.. Questa tecnica viene utilizzata anche per rimuovere oggetti indesiderati dalle immagini fornite.
Questa era solo una rapida recensione del GAN. Se vuoi saperne di più, Ti consiglio di leggere i seguenti articoli.
Ora vedremo alcune interessanti librerie GAN.
TF-GAN
Tensorflow GAN, noto anche come TF-GAN, è una libreria Python leggera open source. È stato sviluppato dai ricercatori di Google AI per un'implementazione GAN facile ed efficace.
TF-GAN fornisce un'infrastruttura ben sviluppata per addestrare e valutare il Generative Adversarial Network insieme a funzioni di perdita e metriche di valutazione efficacemente comprovate. La libreria è composta da diversi moduli per implementare il modello. Fornisce semplici chiamate di funzione che un utente può applicare ai propri dati senza scrivere il codice da zero.
È facile da installare e utilizzare proprio come altri pacchetti come NumPy e pandas, in quanto fornisce il pacchetto PyPi. Usa il seguente codice
#Installazione della libreria pip install tensorflow-gan #importando la libreria importa tenorflow_gan come tfgan
Quello che segue è un codice per generare immagini dal set di dati MNIST utilizzando TF-Gan-
# Imposta l'ingresso. immagini = mnist_data_provider.provide_data(BANDIERE.dimensione del lotto) rumore = tf.random_normal([BANDIERE.dimensione del lotto, BANDIERE.noise_dims]) # Costruisci il generatore e discriminatore. gan_model = tfgan.gan_model( generatore_fn=mnist.unconditional_generator, # tu definisci discriminator_fn=mnist.unconditional_discriminator, # tu definisci real_data=immagini, generator_inputs=rumore) # Costruisci la perdita GAN. gan_loss = tfgan.gan_loss( gan_model, generator_loss_fn=tfgan_losses.wasserstein_generator_loss, discriminator_loss_fn=tfgan_losses.wasserstein_discriminator_loss) # Crea le operazioni del treno, che calcolano le pendenze e applicano gli aggiornamenti ai pesi. train_ops = tfgan.gan_train_ops( gan_model, gan_loss, generator_optimizer=tf.train.AdamOptimizer(gen_lr, 0.5), discriminator_optimizer=tf.train.AdamOptimizer(dis_lr, 0.5)) # Esegui le operazioni del treno nello schema di allenamento alternato. tfgan.gan_train( train_ops, ganci=[tf.train.StopAtStepHook(num_passi=BANDIERE.numero_max_di_passi)], logdir=BANDIERE.train_log_dir)
Cosa mi piace della biblioteca
- Una cosa importante della libreria è che TF-GAN attualmente supporta Tensorflow-2.0, vale a dire, l'ultima versione di TensorFlow. Cosa c'è di più, puoi usarlo in modo efficiente con altri framework.
- L'addestramento di un modello avversario generativo è un compito di elaborazione pesante, che prima richiedevano settimane. TF-GAN supporta Cloud TPU. Quindi, il processo di formazione è completato in poche ore. Per saperne di più su come utilizzare TF-GAN in TPU, posso vedere è tutorial sugli autori della biblioteca.
- Nel caso in cui sia necessario confrontare i risultati di più articoli, TF-GAN fornisce metriche standard che rendono facile per l'utente confrontare in modo efficiente e semplice diversi articoli di ricerca senza distorsioni statistiche..
Di seguito alcuni progetti realizzati con TF-GAN-
Cosa c'è di più, per saperne di più su questa interessante libreria GAN utilizzata dai ricercatori di Google, leggi il documento ufficiale.
Torcia-GAN
Torch-GAN è un framework basato su PyTorch per scrivere codici brevi e di facile comprensione per sviluppare GAN. Questo pacchetto è costituito da diverse reti avversarie generative insieme alle utilità necessarie per la loro implementazione..
In genere, I GAN condividono un design standard che ha più componenti come il modello del generatore, il modello discriminatore, il Funzione di perditaLa funzione di perdita è uno strumento fondamentale nell'apprendimento automatico che quantifica la discrepanza tra le previsioni del modello e i valori effettivi. Il suo obiettivo è quello di guidare il processo di formazione minimizzando questa differenza, consentendo così al modello di apprendere in modo più efficace. Esistono diversi tipi di funzioni di perdita, come l'errore quadratico medio e l'entropia incrociata, ognuno adatto a compiti diversi e... y las métricas de evaluación. Mentre Torch GAN imita il design dei GAN tramite una semplice API e consente la personalizzazione dei componenti quando richiesto.
Questa libreria GAN facilita l'interazione tra i componenti GAN attraverso un trainer altamente versatile che si adatta automaticamente a schemi e perdite definiti dall'utente..
Installare la libreria è semplice usando pip. Hai solo bisogno di usare il comando qui sotto e voilà.
pip3 installa torcia
Implementazione modelli Torch-GAN
Al centro del design, abbiamo un modulo trainer responsabile della flessibilità e della facilità d'uso. L'utente deve fornire le specifiche richieste, vale a dire, l'architettura dei modelli generatore e discriminatore, insieme all'ottimizzatore associato. L'utente deve inoltre fornire le funzioni di perdita e le metriche di valutazione.
La libreria offre la libertà di scegliere le tue specifiche dall'ampia gamma disponibile o le tue varianti personalizzate. Nell'immagine seguente, possiamo vedere l'implementazione di DC-GAN solo in 10 righe di codice, non è sorprendente?
Cosa mi piace di questa libreria GAN?
- L'ampia gamma di architetture GAN che supporta. Dai un nome all'architettura e ne troverai l'implementazione TorchGAN. Ad esempio, Vaniglia GAN, DCGAN, CycleGan, GAN . condizionale, Rete multi-contraddittoria generativa e molto altro.
- Un'altra caratteristica importante del telaio è la sua estensibilità e flessibilità.. Torch-GAN è un pacchetto comprensibile. Possiamo usarlo in modo efficiente con funzionalità integrate o definite dall'utente.
- Cosa c'è di più, fornisce una visualizzazione efficiente delle prestazioni tramite un oggetto Logger. Admite el registro de la consola y la visualización del rendimiento mediante Scheda TensorBoardTensorBoard è uno strumento di visualizzazione che accompagna TensorFlow, Progettato per facilitare l'analisi dei modelli di machine learning. Consente agli utenti di monitorare metriche come la perdita e l'accuratezza, oltre a visualizzare grafici e strutture del modello. Grazie alla sua interfaccia intuitiva, TensorBoard aiuta gli sviluppatori a comprendere meglio le prestazioni dei loro modelli e ad apportare le modifiche necessarie durante il processo di addestramento.... y Vizdom.
Se vuoi approfondire, non dimenticare di leggere il documentazione ufficiale de TorchGAN.
Mimica
Con la crescente ricerca nel campo, possiamo vedere varie implementazioni GAN. Difficile confrontare più implementazioni sviluppate utilizzando framework differenti, addestrato in condizioni diverse e valutato utilizzando metriche diverse. Questo confronto è un compito inevitabile per i ricercatori. Perciò, questa è stata la motivazione principale alla base dello sviluppo di Mimicry.
Mimicry è una libreria PyTorch leggera per la riproducibilità GAN. Fornisce funzionalità comuni necessarie per addestrare e valutare un modello Gan. Ciò consente ai ricercatori di concentrarsi sull'implementazione del modello piuttosto che scrivere lo stesso codice standard più e più volte..
Questa libreria GAN fornisce l'implementazione standard di varie architetture GAN come DCGAN, Wasserstein GAN con penalización de gradienteGradiente è un termine usato in vari campi, come la matematica e l'informatica, per descrivere una variazione continua di valori. In matematica, si riferisce al tasso di variazione di una funzione, mentre in progettazione grafica, Si applica alla transizione del colore. Questo concetto è essenziale per comprendere fenomeni come l'ottimizzazione negli algoritmi e la rappresentazione visiva dei dati, consentendo una migliore interpretazione e analisi in... (WGAN-GP), GAN . automonitorato (SSGAN), eccetera. stesse dimensioni del modello, addestrato in condizioni simili.
Come le altre due librerie, possiamo installare facilmente Mimicry usando pip ed è pronto per l'uso.
pip install torch-mimetismo
Ecco la rapida implementazione di SNGAN usando il mimetismo
importare torcia importare torcia.ottim come ottimale importare torcia_mimetica come mmc a partire dal torch_mimicry.nets importare sngan # Oggetti di trattamento dei dati dispositivo = torcia.dispositivo("miracoli":0' Se torcia.miracoli.è disponibile() altro "processore") set di dati = mmc.set di dati.load_dataset(radice='./set di dati', nome='cifar10') caricatore di dati = torcia.utilità.dati.Caricatore dati( set di dati, dimensione del lotto=64, mescola=Vero, num_lavoratori=4) # Definire modelli e ottimizzatori netG = sngan.SNGANGenerator32().a(dispositivo) netD = sngan.SNGANDicriminatore32().a(dispositivo) optD = ottimale.Adamo(netD.parametri(), 2e-4, beta=(0.0, 0.9)) optG = ottimale.Adamo(netG.parametri(), 2e-4, beta=(0.0, 0.9)) # Inizia l'allenamento allenatore = mmc.addestramento.Allenatore( netD=netD, netG=netG, optD=optD, optG=optG, n_dis=5, num_passi=100000, lr_decay='lineare', caricatore di dati=caricatore di dati, log_dir='./log/esempio', dispositivo=dispositivo) allenatore.treno()
Un'altra caratteristica importante del mimetismo è che fornisce il supporto Tensorboard per la visualizzazione delle prestazioni. Perciò, puoi creare una curva di perdita e probabilità per monitorare l'allenamento. Può visualizzare immagini generate casualmente per verificare la varietà.
Il mimetismo è uno sviluppo interessante destinato ad aiutare i ricercatori. Ti suggerisco personalmente di leggere il carta finta.
IBM GAN Toolkit
Fino ad ora, abbiamo visto alcune librerie GAN molto efficienti e all'avanguardia. Ci sono molte altre librerie GAN come Keras-GAN, PyTorch-GAN, PyGAN, eccetera. Quando osserviamo da vicino, vediamo alcune cose in comune tra queste librerie GAN. Sono ad alta intensità di codice. Se vuoi usarne qualcuno, deve essere esperto in
- La conoscenza e l'implementazione di GAN.
- Fluente in Python
- Come usare il particolare telaio
È un po' difficile sapere tutto per un programmatore di software. Per risolvere il problema, qui abbiamo uno strumento GAN facile da usare: IBM GAN-Toolkit.
Il GAN Toolkit fornisce una variante altamente flessibile, senza codice, per implementare modelli GAN. Cosa c'è di più, fornisce un alto livello di astrazione per implementare il modello GAN. Qui, l'utente deve solo fornire i dettagli del modello utilizzando il file di configurazione o l'argomento della riga di comando. Poi il framework penserà a tutto il resto. Personalmente l'ho trovato molto interessante.
I seguenti passaggi ti aiuteranno con l'installazione:
- Primo, cloniamo il codice
$ git clone https://github.com/IBM/gan-toolkit $ cd gan-toolkit
- Quindi installa tutti i requisiti
$ pip install -r requisiti.txt
Ora sei pronto per l'uso. Finalmente, para entrenar la red tenemos que darle un archivo de configuración en formato JSONJSON, o Notazione degli oggetti JavaScript, Si tratta di un formato di scambio dati leggero e facile da leggere e scrivere per gli esseri umani, e facile da analizzare e generare per le macchine. Viene comunemente utilizzato nelle applicazioni Web per inviare e ricevere informazioni tra un server e un client. La sua struttura si basa su coppie chiave-valore, rendendolo versatile e ampiamente adottato nello sviluppo di software.. come segue
{ "Generatore":{ "scelta":"gan" }, "discriminatore":{ "scelta":"gan" }, "percorso dati":"dataset/dataset1.p", "metric_evaluate":"mmd" }
$ python main.py --config my_gan.json
Il toolkit implementa più architetture GAN come Vanilla GAN, DC-GAN, Condizionale-GAN e altro.
Vantaggi del Toolkit GAN
- Fornisce un modo senza codice per implementare la tecnologia di visione artificiale di prossima generazione. È necessario solo un semplice file JSON per definire un'architettura GAN. Non è necessario scrivere il codice di addestramento poiché se ne occuperà il framework.
- Fornisce supporto per più librerie, vale a dire, PyTorch, Anche Keras e TensorFlow.
- Cosa c'è di più, nel toolkit GAN, abbiamo la libertà di mescolare e abbinare facilmente i componenti di diversi modelli. Ad esempio, può utilizzare il modello del generatore DC-GAN, il discriminatore C-GAN e il processo di formazione del gan alla vaniglia.
Ora basta leggere il documento e gioca ai GAN a modo tuo.
Note finali
I GAN sono un campo di ricerca attivo. Vediamo aggiornamenti regolari quasi settimanalmente sulla prossima versione di GAN. Puoi controllare il lavoro che i ricercatori hanno fatto qui.
Completare, In questo articolo discutiamo del 4 Librerie GAN più importanti che possono essere facilmente implementate in Python. Quotidiano, vediamo enormi sviluppi e vediamo nuove applicazioni di GAN. Il seguente articolo spiega alcune di queste fantastiche app:
Quali sono le librerie GAN che usi? Pensi che avrei dovuto includere qualche altra libreria? Fateci sapere nei commenti qui sotto!.