Librerie GAN per Deep Learning

Contenuti

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”.

per favore-crea-un-immagine-in evidenza-usando-questo-8311319

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 ed è un metodo di deep learning all'avanguardia. È un membro della famiglia del modello generativo che passa attraverso la formazione dell'avversario.

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. Nel tempo e vari aggiornamenti nei parametri del modello come pesi e bias, 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.

image_inpainting-4463766

Immagine originale vs. immagine restaurata

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

  1. 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.
  2. 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.
  3. 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, la funzione di perdita e le metriche di valutazione. Mentre Torch GAN imita il design dei GAN tramite una semplice API e consente la personalizzazione dei componenti quando richiesto.

screenshot-dal-2020-08-24-07-32-34-1229273

Fonte

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?

screenshot-dal-2020-08-24-07-38-55-6766079

Fonte

Cosa mi piace di questa libreria GAN?

    1. 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.
    2. 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.
    3. Cosa c'è di più, fornisce una visualizzazione efficiente delle prestazioni tramite un oggetto Logger. Supporta la registrazione della console e la visualizzazione delle prestazioni utilizzando TensorBoard e 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.

mimetismo-4050562

fonte

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 penalità di pendenza (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:

  1. Primo, cloniamo il codice
    $ git clone https://github.com/IBM/gan-toolkit
    $ cd gan-toolkit

  2. Quindi installa tutti i requisiti
    $ pip install -r requisiti.txt

    Ora sei pronto per l'uso. Finalmente, per addestrare la rete dobbiamo dargli un file di configurazione in formato JSON 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

  1. 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.
  2. Fornisce supporto per più librerie, vale a dire, PyTorch, Anche Keras e TensorFlow.
  3. 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!.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.