GAN-Bibliotheken für Deep Learning

Inhalt

Überblick

  • GANs sind generative Modelle, glaub was du ihnen fütterst.
  • Wir haben aufgelistet 4 Empfohlene GAN-Bibliotheken

Einführung

Heutzutage, GAN gilt als eines der interessantesten Forschungsgebiete im Bereich Computer Vision. Seine Bildverarbeitungsleistung ist unübertroffen und, Datenwissenschaftler sein, es nicht zu erforschen wäre ein Fehler. Sogar bedeutende Leute wie Yann LeCun beschrieben GANs als “die interessanteste Idee des maschinellen Lernens in letzter Zeit 10 Jahre”.

bitte-machen-ein-vorgestelltes-bild-mit-diesem-8311319

Als ich zum ersten Mal mit GAN . gearbeitet habe, Ich habe es mit PyTorch von Grund auf neu entwickelt und es war eine mühsame Aufgabe. Noch schwieriger wird es, wenn das Ergebnis nicht zufriedenstellend ist und Sie eine andere Architektur ausprobieren möchten, seit jetzt musst du den code umschreiben. Aber glücklicherweise, Forscher, die bei verschiedenen technischen Giganten arbeiten, haben verschiedene GAN-Bibliotheken entwickelt, um Sie bei der Erforschung und Entwicklung von GAN-basierten Anwendungen zu unterstützen.

In diesem Artikel, wir werden sehen 4 Interessante GAN-Bibliotheken, die Sie unbedingt kennen sollten. Was ist mehr, Ich gebe Ihnen einen Überblick über die GAN, um anzufangen.

Ich empfehle, dass Sie unser komplettes konsultieren Programm für künstliches Sehen um in diesem Bereich zu beginnen.

Inhaltsverzeichnis

  • Ein kurzer Überblick über GANs
  • GAN-Bibliotheken
  • TF-GAN
  • Fackel-GAN
  • Mimikry
  • IBM Toolkit- GAN

Ein kurzer Überblick über GANs

Ian Good Fellow hat GANs eingeführt in 2014 und es ist eine hochmoderne Deep-Learning-Methode. Es ist ein Mitglied der generativen Modellfamilie, das ein Gegnertraining durchläuft.

Generative Modellierung ist eine leistungsstarke Methode, bei der das Netzwerk die Verteilung der Eingabedaten lernt und versucht, den neuen Datenpunkt basierend auf einer ähnlichen Verteilung zu generieren.. Wenn wir uns die Beispiele generativer Modelle ansehen, haben wir Auto-Encoder, Boltzmann-Maschinen, gegnerische generative Netzwerke, redes bayesianas, etc.

GAN-Architektur

GANs bestehen aus zwei neuronalen Netzen, ein Generator GRAMM und ein Diskriminator D. Was ist mehr, diese beiden Modelle sind während des Trainings in ein Nullsummenspiel verwickelt.

Das Generatornetzwerk lernt die Verteilung der Trainingsdaten. Und wenn wir zufälliges Rauschen als Eingabe bereitstellen, generiert einige synthetische Daten, die versuchen, die Trainingsbeispiele nachzuahmen.

Jetzt kommt das Diskriminatormodell (D). Bezeichnet ein Label: Echt oder falsch für die von . generierten Daten GRAMM basierend auf Datenverteilung. Das heißt, das neue Bild stammt aus den Trainingsbildern oder ist ein künstlich erzeugtes Bild..

Der Fall, wenn D Das erfolgreiche Erkennen des Bildes als echt oder gefälscht führt zu einem erhöhten Generatorverlust. Auf die gleiche Weise, Wenn GRAMM schafft es, Bilder in guter Qualität zu erstellen, die den echten ähneln, und Tricks D, Verlust des Diskriminators nimmt zu. Was ist mehr, der Generator lernt aus dem Prozess und generiert in der nächsten Iteration bessere und realistischere Bilder.

Grundsätzlich, kann als MIN-MAX-Spiel für zwei Spieler betrachtet werden. Hier verbessert sich die Leistung beider Netze mit der Zeit. Beide Netzwerke durchlaufen mehrere Trainingsiterationen. Im Laufe der Zeit und verschiedene Aktualisierungen der Modellparameter wie Gewichtungen und Verzerrungen, den stationären Zustand erreichen, auch bekannt als Nash-Gleichgewicht.

Was ist das Nash-Gleichgewicht??

Das Nash-Gleichgewicht ist ein stabiler Zustand eines Systems, der die Interaktion verschiedener Teilnehmer beinhaltet, bei dem kein Teilnehmer durch einen einseitigen Strategiewechsel gewinnen kann, wenn die Strategien der anderen unverändert bleiben.

Als letztes, in diesem Nullsummenspiel, Wir können erfolgreich künstliche oder gefälschte Bilder generieren, die größtenteils wie der echte Trainingsdatensatz aussehen.

Beispiel-

Mal sehen, wie nützlich GANs sein können.

Zum Beispiel, während der Sperrung, hatte die Gelegenheit, sein altes Fotoalbum zu rezensieren. In so einer stressigen Zeit, ist eine gute Rezension, um Ihre Erinnerungen noch einmal zu erleben. Aber wie dieses Album jahrelang in deinem Schrank lag, intakt, einige Fotos waren beschädigt und das hat dich traurig gemacht. Und genau dann haben Sie sich für GAN . entschieden.

Das Bild unten wurde mit Hilfe von GAN . erfolgreich wiederhergestellt, mit einer Methode namens Image Inpainting.

image_inpainting-4463766

Originalbild vs. wiederhergestelltes Bild

Bildquelle: Bertalmio et al., 2000.

Image Inpainting ist die Kunst, beschädigte Bilder wiederherzustellen, indem die fehlenden Teile mit verfügbaren Hintergrundinformationen rekonstruiert werden.. Diese Technik wird auch verwendet, um unerwünschte Objekte aus den gegebenen Bildern zu entfernen.

Dies war nur eine kurze Überprüfung des GAN. Wenn du mehr darüber wissen willst, Ich empfehle Ihnen, die folgenden Artikel zu lesen.

Jetzt werden wir einige interessante GAN-Bibliotheken sehen.

TF-GAN

Tensorflow-GAN, auch bekannt als TF-GAN, ist eine leichtgewichtige Open-Source-Python-Bibliothek. Es wurde von Google-KI-Forschern für eine einfache und effektive Implementierung von GAN . entwickelt.

TF-GAN bietet eine gut entwickelte Infrastruktur zum Trainieren und Bewerten des Generative Adversarial Network zusammen mit effektiv nachgewiesenen Verlustfunktionen und Bewertungsmetriken. Die Bibliothek besteht aus mehreren Modulen zur Implementierung des Modells. Bietet einfache Funktionsaufrufe, die ein Benutzer auf seine eigenen Daten anwenden kann, ohne den Code von Grund auf neu schreiben zu müssen.

Es ist einfach zu installieren und zu verwenden, genau wie andere Pakete wie NumPy und Pandas, da es das PyPi-Paket bereitstellt. Verwenden Sie den folgenden Code

#Installieren der Bibliothek
pip install tensorflow-gan
#die Bibliothek importieren
tenorflow_gan als tfgan importieren

Das Folgende ist ein Code zum Generieren von Bildern aus dem MNIST-Datensatz mit TF-Gan-

# Eingang einrichten.
Bilder = mnist_data_provider.provide_data(FLAGGEN.batch_size)
Lärm = tf.random_normal([FLAGGEN.batch_size, FLAGGEN.Geräusch_dims])

# Bauen Sie den Generator und den Diskriminator.
gan_model = tfgan.gan_model(
    generator_fn=mnist.unconditional_generator,  # du definierst
    diskriminator_fn=mnist.unconditional_diskriminator,  # du definierst
    reale_daten=Bilder,
    Generator_Eingänge=Lärm)

# Bauen Sie den GAN-Verlust auf.
gan_loss = tfgan.gan_loss(
    gan_model,
    generator_loss_fn=tfgan_losses.wasserstein_generator_loss,
    diskriminator_loss_fn=tfgan_losses.wasserstein_diskriminator_loss)

# Erstellen Sie die Zugoperationen, die Steigungen berechnen und Gewichte aktualisieren.
train_ops = tfgan.gan_train_ops(
    gan_model,
    gan_loss,
    generator_optimizer=tf.train.AdamOptimizer(gen_lr, 0.5),
    diskriminator_optimizer=tf.train.AdamOptimizer(dis_lr, 0.5))

# Führen Sie die Zugoperationen im abwechselnden Trainingsschema durch.
tfgan.gan_train(
    train_ops,
    Haken=[tf.train.StopAtStepHook(Anzahl_Schritte=FLAGGEN.max_number_of_steps)],
    logdir=FLAGGEN.train_log_dir)

Was ich an der Bibliothek mag

  1. Eine wichtige Sache an der Bibliothek ist, dass TF-GAN derzeit Tensorflow-2.0 unterstützt, nämlich, die neueste Version von TensorFlow. Was ist mehr, Sie können es effizient mit anderen Frameworks verwenden.
  2. Das Trainieren eines generativen Gegnermodells ist eine schwere Verarbeitungsaufgabe, das hat früher wochen gedauert. TF-GAN unterstützt Cloud TPU. Somit ist der Trainingsprozess in wenigen Stunden abgeschlossen. Um mehr über die Verwendung von TF-GAN in TPU zu erfahren, kann sehen ist Tutorial für Bibliotheksautoren.
  3. Falls Sie die Ergebnisse mehrerer Artikel vergleichen müssen, TF-GAN bietet Ihnen Standardmetriken, die es dem Benutzer leicht machen, verschiedene Forschungsartikel ohne statistische Verzerrungen effizient und einfach zu vergleichen..

Im Folgenden sind einige Projekte aufgeführt, die mit TF-GAN . umgesetzt wurden-

Was ist mehr, um mehr über diese interessante GAN-Bibliothek zu erfahren, die von Google-Forschern verwendet wird, Lies das offizielles Dokument.

Fackel-GAN

Torch-GAN ist ein PyTorch-basiertes Framework zum Schreiben kurzer, leicht verständlicher Codes zur Entwicklung von GAN. Dieses Paket besteht aus mehreren generativen gegnerischen Netzwerken zusammen mit den für ihre Implementierung erforderlichen Dienstprogrammen..

Allgemein, GANs teilen sich ein Standarddesign mit mehreren Komponenten wie dem Generatormodell, das Diskriminatormodell, die Verlustfunktion und Bewertungsmetriken. Während Torch GAN das Design von GANs über eine einfache API nachahmt und die Anpassung von Komponenten bei Bedarf ermöglicht.

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

Quelle

Diese GAN-Bibliothek erleichtert die Interaktion zwischen GAN-Komponenten durch einen äußerst vielseitigen Trainer, der sich automatisch an benutzerdefinierte Muster und Verluste anpasst..

Die Installation der Bibliothek ist einfach mit pip. Sie müssen nur den folgenden Befehl unten verwenden und voila.

pip3 Fackelgan installieren

Implementierung von Torch-GAN-Modellen

Im Mittelpunkt des Designs, Wir haben ein Trainermodul, das für Flexibilität und Benutzerfreundlichkeit verantwortlich ist. Der Benutzer muss die erforderlichen Spezifikationen angeben, nämlich, die Architektur der Generator- und Diskriminatormodelle, zusammen mit dem zugehörigen Optimierer. Der Benutzer muss auch die Verlustfunktionen und Bewertungsmetriken bereitstellen.

Die Bibliothek bietet die Freiheit, Ihre Spezifikationen aus dem breiten verfügbaren Angebot oder Ihre eigenen benutzerdefinierten Varianten zu wählen. Im folgenden Bild, wir können die Implementierung von DC-GAN nur in sehen 10 Zeilen von Code, es ist nicht überraschend?

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

Quelle

Was gefällt mir an dieser GAN-Bibliothek?

    1. Die breite Palette der GAN-Architektur, die unterstützt. Sie benennen die Architektur und Sie finden die TorchGAN-Implementierung davon. Zum Beispiel, Vanille GAN, DCGAN, ZyklusGan, Bedingtes GAN, Generatives Multi-Adversarial-Netzwerk und vieles mehr.
    2. Ein weiteres wichtiges Merkmal des Rahmens ist seine Erweiterbarkeit und Flexibilität.. Torch-GAN ist ein verständliches Paket. Wir können es effizient mit integrierten oder benutzerdefinierten Funktionalitäten nutzen.
    3. Was ist mehr, bietet eine effiziente Leistungsanzeige über ein Logger-Objekt. Unterstützt Konsolenprotokollierung und Leistungsanzeige mit TensorBoard und Vizdom.

Wenn du tiefer gehen willst, vergiss nicht das zu lesen offizielle Dokumentation de TorchGAN.

Mimikry

Mit zunehmender Forschung auf diesem Gebiet, wir können verschiedene GAN-Implementierungen sehen. Es ist schwierig, mehrere Implementierungen zu vergleichen, die mit unterschiedlichen Frameworks entwickelt wurden, unter verschiedenen Bedingungen trainiert und mit verschiedenen Metriken bewertet. Dieser Vergleich ist für Forscher eine unumgängliche Aufgabe. Deswegen, dies war die Hauptmotivation für die Entwicklung von Mimikry.

mimcry-4050562

Quelle

Mimicry ist eine leichtgewichtige PyTorch-Bibliothek für GAN-Reproduzierbarkeit. Bietet allgemeine Funktionalitäten, die zum Trainieren und Bewerten eines Gan-Modells erforderlich sind. Dadurch können sich die Forscher auf die Implementierung des Modells konzentrieren, anstatt immer wieder denselben Boilerplate-Code zu schreiben..

Diese GAN-Bibliothek bietet die Standardimplementierung verschiedener GAN-Architekturen wie DCGAN, Wasserstein GAN mit Steigungsstrafe (WGAN-GP), Selbstüberwachtes GAN (SSGAN), etc. gleiche Modellgröße, unter ähnlichen Bedingungen trainiert.

Wie die anderen beiden Bibliotheken, Wir können Mimicry einfach mit pip installieren und es ist einsatzbereit.

pip install Fackel-Mimikry

Hier ist die schnelle Implementierung von SNGAN mit Mimikry

importieren Fackel
importieren fackel.optim wie Optimum
importieren fackel_mimikry wie mmc
von fackel_mimicry.nets importieren sngan


# Datenhandhabungsobjekte
Gerät = Fackel.Gerät("Wunder":0' Wenn Fackel.Wunder.ist verfügbar() anders "Zentralprozessor")
Datensatz = mmc.Datensätze.load_dataset(Wurzel='./Datensätze', Name='cifar10')
Datenlader = Fackel.utils.Daten.DataLoader(
        Datensatz, batch_size=64, Mischen=Wahr, Anzahl_Arbeiter=4)

# Modelle und Optimierer definieren
netG = sngan.SNGANGenerator32().zu(Gerät)
netD = sngan.SNGANDiscriminator32().zu(Gerät)
optD = Optimum.Adam(netD.Parameter(), 2e-4, Betas=(0.0, 0.9))
optG = Optimum.Adam(netG.Parameter(), 2e-4, Betas=(0.0, 0.9))

# Fange an zu trainieren
Trainer = mmc.Ausbildung.Trainer(
    netD=netD,
    netG=netG,
    optD=optD,
    optG=optG,
    n_dis=5,
    Anzahl_Schritte=100000,
    lr_decay='linear',
    Datenlader=Datenlader,
    log_dir='./log/beispiel',
    Gerät=Gerät)
Trainer.Bahn()

Ein weiteres wichtiges Merkmal von Mimikry ist, dass es Tensorboard-Unterstützung für die Leistungsvisualisierung bietet. Deswegen, Sie können eine Verlust- und Wahrscheinlichkeitskurve erstellen, um das Training zu überwachen. Kann zufällig generierte Bilder anzeigen, um die Vielfalt zu überprüfen.

Mimikry ist eine interessante Entwicklung, die Forschern helfen soll. Ich werde Ihnen persönlich vorschlagen, die zu lesen Papierimitat.

IBM GAN-Toolkit

Bis jetzt, wir haben einige sehr effiziente und hochmoderne GAN-Bibliotheken gesehen. Es gibt viele weitere GAN-Bibliotheken wie Keras-GAN, PyTorch-GAN, PyGAN, etc. Wenn wir genau hinsehen, Wir sehen einige Gemeinsamkeiten zwischen diesen GAN-Bibliotheken. Sie sind codeintensiv. Wenn Sie eines davon verwenden möchten, muss sich gut auskennen

  • Das Wissen und die Implementierung von GAN.
  • Fließend in Python
  • So verwenden Sie den jeweiligen Rahmen

Für einen Softwareprogrammierer ist es ein bisschen schwer, alles zu wissen. Um das Problem zu lösen, hier haben wir ein einfach zu bedienendes GAN-Tool: IBM GAN-Toolkit.

Das GAN Toolkit bietet eine hochflexible Variante, ohne Code, um GAN-Modelle zu implementieren. Was ist mehr, bietet einen hohen Abstraktionsgrad zur Implementierung des GAN-Modells. Hier, Der Benutzer muss nur Modelldetails mit der Konfigurationsdatei oder dem Befehlszeilenargument angeben. Dann kümmert sich der Rahmen um alles andere. fand ich persönlich sehr interessant.

Die folgenden Schritte helfen Ihnen bei der Installation:

  1. Zuerst, Wir klonen den Code
    $ Git-Klon https://github.com/IBM/gan-toolkit
    $ CD Gan-Toolkit

  2. Dann alle Voraussetzungen installieren
    $ pip install -r anforderungen.txt

    Sie sind jetzt einsatzbereit. Schließlich, Um das Netzwerk zu trainieren, müssen wir ihm wie folgt eine Konfigurationsdatei im JSON-Format geben

    { 
            "Generator":{
                "Auswahl":"gan"
            },
            "Diskriminator":{
                "Auswahl":"gan"
            },
            "Datenweg":"datasets/dataset1.p",
            "metric_evaluate":"MMD"
        }
    $ python main.py --config my_gan.json

Das Toolkit implementiert mehrere GAN-Architekturen wie Vanilla GAN, DC-GAN, Conditional-GAN und mehr.

Vorteile des GAN-Toolkits

  1. Bietet eine codefreie Möglichkeit zur Implementierung der Computer-Vision-Technologie der nächsten Generation. Zur Definition einer GAN-Architektur ist nur eine einfache JSON-Datei erforderlich. Es ist nicht notwendig, den Trainingscode zu schreiben, da das Framework sich darum kümmert.
  2. Bietet Unterstützung für mehrere Bibliotheken, nämlich, PyTorch, Keras und TensorFlow auch.
  3. Was ist mehr, im GAN-Toolkit, Wir haben die Freiheit, die Komponenten verschiedener Modelle einfach zu kombinieren. Zum Beispiel, kann das DC-GAN-Generatormodell verwenden, der C-GAN-Diskriminator und der Vanilla-Gan-Trainingsprozess.

Jetzt nur noch lesen dokumentieren und spiele GANs auf deine Art.

Abschließende Anmerkungen

GANs sind ein aktives Forschungsfeld. Wir sehen fast wöchentlich regelmäßige Updates zur nächsten Version von GAN. Sie können die Arbeit der Forscher überprüfen hier.

Fertigstellen, In diesem Artikel diskutieren wir die 4 Die wichtigsten GAN-Bibliotheken, die einfach in Python implementiert werden können. Täglich, wir sehen enorme Entwicklungen und wir sehen neue Anwendungen von GAN. Der folgende Artikel erklärt einige dieser erstaunlichen Apps:

Welche GAN-Bibliotheken verwenden Sie?? Glaubst du, ich hätte eine andere Bibliothek hinzufügen sollen?? Lass es uns in den Kommentaren unten wissen!.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.