Was passiert, wenn Sie den Fotoeditor und das neuronale Netzwerk kombinieren?

Published on September 29, 2016

Was passiert, wenn Sie den Fotoeditor und das neuronale Netzwerk kombinieren?


    Ein Beispiel für die Arbeit des Neural Photo Editors. In der Mitte - das Originalbild. Rote und blaue Quadrate zeigen verborgene Bereiche, die nach dem Lernen eines neuronalen Netzwerks entstehen. Sie können sowohl direkt (wie üblich) als auch indirekt mit Hilfe eines „Kontext-Pinsels“ manipuliert werden.

    Glauben Sie, dass Photoshop Wunder wirkt, um die Realität zu verzerren? Ja, er kann eine Person vollständig von einem Foto entfernen oder Haare wie Ilona Mask mit Hilfe eines "Kontext-Pinsels" vergrößern. Es lohnt sich jedoch nicht, wozu ein neuronales Netzwerk fähig ist, wenn Sie es mit Kontextanalyse bearbeiten lassen. Dies ist eine völlig andere Realität. Ein neuronales Netzwerk kann eine Person mit 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 Neural Photo Editor , der von Mitarbeitern der School of Engineering and Physical Sciences der Heriot-Watt University (Edinburgh, Vereinigtes Königreich) zusammen mit einem Kollegen aus Renishaw entwickelt wurde .

    Die jüngsten Fortschritte bei der Erstellung generativer Modelle für Bilder haben zur Entstehung neuronaler Netze geführt, die nach dem Training Samples erzeugen und höchste Qualität interpolieren. Wenden Sie in diesem Bereich die beiden wichtigsten Methoden an, die 2013-2014 entwickelt wurden: Variational Autoencoder (VAE) und Generative Adversarial Network(GAN). Sie zeigten, dass das neuronale Netzwerk komplexe, mehrdimensionale Strukturen in natürlichen Bildern erzeugen kann.

    Auto-Encoder für VAE-Variationen sind probabilistische grafische Modelle, die lernen, die unteren Grenzen der Variation (basierend auf der Wahrscheinlichkeit der Daten) zu maximieren, das Lernergebnis in einen latenten Raum zu projizieren und dann ein Bild aus diesem Raum zu rekonstruieren.

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

    Beide Methoden eignen sich zum Erzeugen von Bildern in einem verborgenen Raum - zum Beispiel, um einem düsteren Gesicht ein Lächeln hinzuzufügen. Jeder von ihnen hat seine eigenen Vor- und Nachteile.

    Neural Photo Editor Der Neural Photo Editor ist eine innovative Benutzeroberfläche für die Arbeit mit dem verborgenen Raum generativer Modelle. Mit dieser Methode können Sie mit dem „Kontextpinsel“ bestimmte semantische Änderungen im Bild vornehmen, wodurch der Eigenvektor indirekt geändert wird.

    Die Schlüsselidee im neuronalen Fotoeditor besteht darin, den verborgenen Raum auf intuitive Weise zu ändern, d. H. Durch Bearbeiten eines normalen Bildes. Der Benutzer wählt die Farbe und Größe des Pinsels aus und wendet sie auf das resultierende Bild an. Das neuronale Netzwerk führt die umgekehrte Faltung durch, berechnet den Unterschied zwischen der Farbe der ursprünglichen Pixel und der Farbe des Pinsels und ändert den verborgenen Raum, um diesen Unterschied zu minimieren. Als Ergebnis erhalten wir semantisch bedeutsame Bearbeitungen im resultierenden Bild - Änderungen in Haaren, Lächeln, Grübchen usw.


    Das Ergebnis der Änderung von Fotos mit dem neuronalen Fotoeditor

    Ein einfaches Beispiel. Wenn wir ein weißes Gesicht mit schwarzen Haaren fotografieren - und einen schwarzen Pinsel auf die Stirn auftragen, fügt der Neural-Fotoeditor jedoch automatisch Haare hinzu. Der Editor arbeitet in Echtzeit auf einer anständigen GPU.

    Um das Ergebnis der Bearbeitung im Editor zu verbessern, ist es möglich, die Rekonstruktion des Bildes nach der Transformation mit einem neuronalen Netzwerk (Interpolationsmaske) zu bearbeiten. In diesem Fall ist das Ergebnis besser (in der Abbildung unten).


    Interpolationsmasken-Visualisierung. Oben links nach rechts: Rekonstruktion, Delta-Rekonstruktion (Fehler), Originalbild. Unten: veränderte Rekonstruktion, Delta, Ergebnisbild

    Die folgenden Bilder zeigen Beispiele für die Arbeit des neuronalen Netzwerks bei der Rekonstruktion und Interpolation von Fotos von CelebA-, ImageNet- und SVHN-Basen. Links - Die Originalbilder zeigen mit jedem Schritt nach rechts die Ergebnisse der allmählichen Rekonstruktion im neuronalen Netzwerk.



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

    Der Code für den Neural Photo Editor ist auf Github veröffentlicht . In demselben Repository wird der Code des introspektiven gegnerischen neuronalen Netzwerks veröffentlicht, bei dem es sich um einen Hybrid aus Variation Autoencoder (VAE) und generativen Consensual Networks (GAN) handelt.

    Um den Neural Photo Editor auszuführen, benötigen Sie:

    • Theano , eine Python-Bibliothek zur effizienten Definition, Optimierung und Auswertung mathematischer Ausdrücke mithilfe mehrdimensionaler Arrays.
    • Lasagne , eine Bibliothek zum Erstellen und Trainieren neuronaler Netzwerke auf Theano.
    • Zur Verbesserung der Leistung wird die Installation von cuDNN (einer Bibliothek von Nvidia) für die Hardwarebeschleunigung von Standardprozeduren wie Vorwärts- und Rückwärtsfaltung, Pooling, Normalisierung und Aktivierung von Ebenen empfohlen (ist jedoch nicht erforderlich) . Dies ist Teil des Nvidia Deep Learning SDK .
    • numpy, scipy, PIL, Tkinter und tkColorChooser aus dem Python-Installationskit.