Was passiert, wenn Sie einen Fotoeditor und ein neuronales Netzwerk kombinieren?


Ein Beispiel für die Arbeit eines neuronalen Fotoeditors Neural Photo Editor. In der Mitte befindet sich das Originalbild. Rote und blaue Quadrate zeigen Bereiche des verborgenen Raums, die nach dem Training des neuronalen Netzwerks erzeugt wurden. Sie können sowohl direkt (wie gewöhnlich) als auch indirekt über den "Kontextpinsel" manipuliert werden.

Glauben Sie, dass "Photoshop" Wunder wirkt, wenn es darum geht, die Realität zu verzerren? Ja, er kann eine Person wie Elon Mask mithilfe eines „Kontextpinsels“ vollständig von einem Foto entfernen oder Haare auf seinem Kopf wachsen lassen, wie z. B. Elon Mask. Dies steht jedoch nicht neben dem, wozu das neuronale Netzwerk in der Lage ist, wenn es mit Kontextanalyse bearbeitet werden darf. Dies ist eine ganz andere Realität. Ein neuronales Netzwerk kann eine Person auf einem Foto zum Lächeln bringen, Ihrer Freundin die Funktionen von Angelina Jolie geben und so weiter. Die Möglichkeiten sind endlos.

Das erste Zeichen in diesem Bereich ist der neuronale Fotoeditor Neural Photo Editor , der von Mitarbeitern der School of Engineering and Physical Sciences der Heriot-Watt University (Edinburgh, UK) zusammen mit einem Kollegen aus Renishaw entwickelt wurde .

Jüngste Fortschritte bei der Erstellung generativer Modelle für Bilder haben zur Entstehung neuronaler Netze geführt, die nach dem Training Stichproben generieren und die höchste Qualität interpolieren. In diesem Bereich werden zwei Hauptmethoden verwendet, die 2013-2014 erfunden wurden: Variational Autoencoder (VAE) und Generative Adversarial Network(GAN). Sie zeigten, dass ein neuronales Netzwerk komplexe, mehrdimensionale Strukturen in natürlichen Bildern erzeugen kann.

VAE Variational Auto Encoder sind probabilistische grafische Modelle, die lernen, die unteren Variationsgrenzen (basierend auf der Wahrscheinlichkeit der Daten) zu maximieren, indem sie das Lernergebnis in einen latenten Raum projizieren und dann das Bild aus diesem Raum rekonstruieren.

Generative Adversarial Networks (GANs) beherrschen das generative Modell, indem sie ein Netzwerk (den „Diskriminator“) trainieren, um zwischen realen und generierten Daten zu unterscheiden. Gleichzeitig lernt ein anderes Netzwerk ("Generator"), Abtastwerte zu erzeugen, die der Diskriminator nicht von echten unterscheidet.

Beide Methoden eignen sich zum Erzeugen von Bildern in einem verborgenen Raum - zum Beispiel, um einem Stirnrunzeln ein Lächeln zu verleihen. Jeder von ihnen hat seine eigenen Vor- und Nachteile.

Neural Photo Editor Der Neural Photo Editor ist eine innovative Oberfläche für die Arbeit mit dem verborgenen Raum generativer Modelle. Mit dieser Methode können Sie mithilfe des "Kontextpinsels", der indirekt seinen eigenen Vektor ändert, bestimmte semantische Korrekturen im Bild vornehmen.

Die Schlüsselidee in einem neuronalen Fotoeditor besteht darin, den verborgenen Raum auf intuitive Weise zu ändern, dh indem ein normales Bild bearbeitet wird. Der Benutzer wählt die Farbe und Größe des Pinsels aus - wendet sie auf das resultierende Bild an. Das neuronale Netzwerk führt eine umgekehrte Faltung durch, berechnet den Unterschied zwischen der Farbe der Quellpixel und der Farbe des Pinsels und ändert den verborgenen Raum, um diesen Unterschied zu minimieren. Infolgedessen erhalten wir semantisch bedeutsame Änderungen im resultierenden Bild - Haarveränderungen, ein Lächeln, Grübchen auf den Wangen usw.


Ergebnis des Änderns eines Fotos mit einem neuronalen Fotoeditor

Ein einfaches Beispiel. Wenn wir ein Foto von einem weißen Gesicht mit schwarzen Haaren machen - und einen schwarzen Pinsel auf unsere Stirn auftragen, fügt ein neuronaler Fotoeditor dort automatisch Haare hinzu. Der Editor arbeitet in Echtzeit an einer anständigen GPU.

Um das Bearbeitungsergebnis zu verbessern, kann der Editor die Bildrekonstruktion nach der Transformation durch ein neuronales Netzwerk (Interpolationsmaske) bearbeiten. In diesem Fall wird das Ergebnis besser dargestellt (siehe Abbildung unten).


Visualisierung der Interpolationsmaske. Oben von links nach rechts: Rekonstruktion, Delta (Fehler) der Rekonstruktion, Originalbild. Unten: modifizierte Rekonstruktion, Delta, resultierendes Bild

Die folgenden Bilder zeigen Beispiele für den Betrieb eines neuronalen Netzwerks bei der Rekonstruktion und Interpolation von Fotografien aus CelebA-, ImageNet- und SVHN-Datenbanken. Links sind die Quellbilder dargestellt, wobei bei jedem Schritt nach rechts die Ergebnisse einer schrittweisen Rekonstruktion im neuronalen Netzwerk angezeigt werden.



Die Autoren haben ihre Arbeit am 22. September 2016 auf arXiv.org veröffentlicht.

Der Code für den Neural Photo Editor wird auf Github veröffentlicht . Der Code für das introspektive kontradiktorische neuronale Netzwerk, das eine Mischung aus variierenden Autoencodern (VAE) und generativen kontradiktorischen Netzwerken (GAN) ist, wird im selben Repository veröffentlicht.

Um Neural Photo Editor zu starten, benötigen Sie:

  • Theano , eine Python-Bibliothek zum effizienten Definieren, Optimieren und Auswerten mathematischer Ausdrücke mithilfe mehrdimensionaler Arrays.
  • Lasagne , eine Bibliothek zum Aufbau und Training neuronaler Netze in Theano.
  • Um die Leistung zu verbessern, wird empfohlen (aber nicht erforderlich), cuDNN zu installieren , eine Bibliothek von Nvidia zur Hardwarebeschleunigung von Standardprozeduren wie Vorwärts- und Rückwärtsfaltung, Pooling, Normalisierung und Schichtaktivierung. Dies ist Teil des Nvidia Deep Learning SDK .
  • numpy, scipy, PIL, Tkinter und tkColorChooser aus dem Python-Installationskit.

Source: https://habr.com/ru/post/de397847/


All Articles