Generazione di immagini anime implementando DC GAN Paper tramite Pytorch

Blog

Generazione di immagini anime implementando DC GAN Paper tramite Pytorch

AnimeGAN - Deep Convolutional Generative Adverserial Network

Implementazione PyTorch di DCGAN introdotta nel documento: Apprendimento della rappresentazione non supervisionato con reti convoluzionali generative avversarie profonde , Alec Radford, Luke Metz, Soumith Chintala.



Animazione dei dati generati






installa mysql 5.7 ubuntu

introduzione

I GAN (Generative Adversarial Network) sono uno degli algoritmi di Machine Learning più popolari (e più interessanti) sviluppati negli ultimi tempi. Appartengono a un insieme di algoritmi chiamati modelli generativi, che sono ampiamente utilizzati per compiti di apprendimento non supervisionati che mirano ad apprendere la struttura sottostante dei dati dati. Come suggerisce il nome, i GAN ti consentono di generare nuovi dati invisibili che imitano i dati reali forniti. Tuttavia, i GAN pongono problemi nell'addestramento e richiedono iperparametri accuratamente sintonizzati. Questo documento mira a risolvere questo problema.



DCGAN è uno dei progetti di rete più popolari e di successo per GAN. Si compone principalmente di livelli di convoluzione senza pool massimo o livelli completamente collegati. Utilizza convoluzioni strided e convoluzioni trasposte rispettivamente per il downsampling e l'upsampling.



Architettura del generatore di DCGAN






Generatore DCGAN

Progettazione di rete di DCGAN:

cancelletto in excel
  • Sostituisci tutti i livelli di pooling con circonvoluzioni strided.
  • Rimuovi tutti i livelli completamente collegati.
  • Usa le circonvoluzioni trasposte per il sovracampionamento.
  • Utilizzare la normalizzazione batch dopo ogni livello tranne dopo il livello di output del generatore e il livello di input del discriminatore.
  • Utilizzare la non linearità ReLU per ogni livello nel generatore, ad eccezione del livello di output, utilizzare tanh.
  • Usa la non linearità Leaky-ReLU per ogni livello del disciminator eccetto per l'uso del livello di output sigmoid.

Iperparametri per questa implementazione

Gli iperparametri sono scelti come indicato nel documento.

  • dimensione mini-lotto: 128
  • tasso di apprendimento: 0,0002
  • termine di momento beta1: 0.5
  • pendenza della perdita di LeakyReLU: 0.2
  • Per l'ottimizzatore è stato utilizzato Adam (con beta2 = 0,999) al posto di SGD come descritto nel documento.

Curve di perdita

Curve di perdita di allenamento

D: discriminatore, G: generatore

Esegui allenamento

python train.py --wandbkey={{WANDB KEY}} --projectname=AnimeGAN --wandbentity={{WANDB USERNAME}} --tensorboard=True --dataset=anime --kaggle_user={{KAGGLE USERNAME}} --kaggle_key={{KAGGLE API KEY}} --batch_size=32 --epoch=5 --load_checkpoints=True

Riferimenti

  1. Alec Radford, Luke Metz, Soumith Chintala. Apprendimento non supervisionato della rappresentazione con reti convolutive generative avversarie profonde. [ archivio ]
  2. Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio. Reti generative avversarie. NIP 2014 [ archivio ]
  3. Ian Goodfellow. Esercitazione: Reti generative avversarie. NIP 2016 [ archivio ]
  4. Tutorial DCGAN. [ https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html ]
  5. Documenti PyTorch. [ https://pytorch.org/docs/stable/index.html ]

Scarica i dettagli:

Autore: rohitkuki
Link per scaricare: Scarica il codice sorgente
Sito ufficiale: https://github.com/rohitkuk/AnimeGAN
Licenza: CC0-1.0

Reagire al modello di pagina del profilo utente

#images #pytorch #machine-learning