Arte neuronal | KI-generierte Kunst

Inhalt

Einführung

Kunst hat schon immer Äonen der menschlichen Existenz überschritten. Wir können ihre Spuren von der prähistorischen Zeit wie der Harappan-Kunst in der Industal-Zivilisation bis zur zeitgenössischen Kunst in der Neuzeit sehen.. Über alles, Kunst war ein Mittel, um seine Kreativität auszudrücken, Ansichten darüber, wie wir die Welt wahrnehmen. Wie der legendäre Leonardo Da Vinci sagte,

„Malerei ist Poesie, die mehr gesehen als gefühlt wird“.

Was wir manchmal vergessen, ist, dass die meiste Kunst einem Muster folgt. Ein Muster, das uns gefällt und in unserem Gehirn Sinn macht. Das nächste Mal sehe ich ein Gemälde, versuche die Pinselstriche darauf zu bemerken. Sie werden ein Muster sehen, das aus der Farbe auftaucht. UNS, wie Menschen, wir sind Experten darin, diese Muster zu erkennen. Unsere neuronalen Mechanismen haben sich im Laufe der Jahre so entwickelt, dass sie Muster in der Natur außergewöhnlich gut erkennen..

Jetzt fragen Sie sich vielleicht, warum ich über Kunst und Muster schimpfe. Denn ich zeige Ihnen, wie Sie mit Hilfe von künstlichen Gehirnen Kunst schaffen!! In diesem Artikel, Wir werden ein künstliches neuronales Netzwerk aufbauen, das Stil aus einem Bild extrahiert und in das andere repliziert. Also, bist du fertig?

Inhaltsverzeichnis

  • Was ist neuronale Kunst??
  • Machen Sie sich mit der Crux vertraut
  • Codieren
  • Wohin von hier aus?
  • Zusätzliche Ressourcen

Was ist neuronale Kunst??

Versuchen wir dieses Thema anhand eines Beispiels zu verstehen.

die-sternennacht-18891-jpglarge-6178391

Quelle [1]

Das Bild oben ist das berühmte “Die Sternreiche Nacht” der Vincent Van Gogh. Schau dir das Gemälde einfach ein paar Minuten an. Siehst du? Merkst du die Pinselstriche? Siehst du die Kurven und Kanten, die jedes einzelne Objekt definieren?, was macht es dir so leicht sie zu erkennen?

Jetzt machen wir eine schnelle Aufgabe. Versuchen Sie, sich an die Muster zu erinnern, die Sie sehen. Packen Sie Ihr Gehirn einfach mit jedem kleinen Detail aus. Fertig? Okay, Schaut euch jetzt das folgende Bild an.

röhren-2640255

Quelle [2]

Dies ist ein Foto aus einer Stadt namens "Tübingen" in Deutschland. Für den nächsten Schritt der Aufgabe, Schließen Sie einfach die Augen und versuchen Sie mit diesem Bild den Stil einer sternenklaren Nacht nachzubilden. Frag dich selbst, wenn du van gogh bist (Hypothetisch, Natürlich!) Und sie bitten dich, dieses Foto unter Berücksichtigung der Stile zu zeichnen, die du vorher auswendig gelernt hast, wie würdest du es machen?

Denken

.

.

.

.

Du hast es geschafft? Exzellent! Du hast gerade neuronale Kunst gemacht!

.

.

.

Möchten Sie sehen, was ein künstliches neuronales Netz leisten kann?
tubingen_starry_night-3736448

Quelle [2]

Sie fragen sich vielleicht, wie eine Maschine eine solche Aufgabe bewältigt hat. Es ist einfach, wenn Sie die Essenz verstanden haben!

Das neuronale Netz versucht, die “Wichtige Punkte” von beiden Bildern, nämlich, versuche zu erkennen, welche Attribute das Bild definieren und lerne daraus. Diese gelernten Attribute sind eine interne Darstellung des neuronalen Netzes, was unten zu sehen ist.

neural-art-1-1302146Quelle [2]

Sie haben also die theoretischen Konzepte der neuronalen Kunst kennengelernt, Lassen Sie uns nun die praktischen Aspekte der Implementierung kennen.

Betreten Sie das Gehirn eines künstlichen Künstlers:

Neuronale Kunst funktioniert wie folgt:

  • Wir definieren zuerst die Verlustfunktionen, die notwendig sind, um unser Ergebnis zu generieren, nämlich, Stilverlust, Inhaltsverlust und totaler Variationsverlust.
  • Wir definieren unsere Optimierungsfunktion, nämlich, Backpropagation-Algorithmus. Hier verwenden wir L-BFGS, weil es für kleinere Daten schneller und effizienter ist.
  • Dann legen wir unsere Stil- und Inhaltsattribute unseres Modells fest.
  • Dann übergeben wir ein Bild an unser Model (vorzugsweise unser Basisbild) und wir optimieren es, um alle oben definierten Verluste zu minimieren.

Wir werden einige der wichtigen Punkte kennen, die Sie wissen sollten, bevor Sie beginnen. Während die meisten Grundlagen neuronaler Netze in diesem Artikel behandelt werden, Ich werde einige von ihnen wiederholen und einige zusätzliche Dinge erklären.

  • Was ist eine Verlustfunktion? Die Verlustfunktion ist eine Funktion, die die Differenz zwischen den vorhergesagten Werten und den ursprünglichen Werten berechnet.. Grundsätzlich, gibt an, wie viele Fehler in einer Berechnung aufgetreten sind. In jedem maschinellen Lernalgorithmus, die Verlustfunktion wird verwendet, um die Leistung des Modells auf den Daten abzuschätzen. Dies ist besonders nützlich bei neuronalen Netzen, wo Sie iterativ versuchen, Ihr Modell besser funktionieren zu lassen. Bei der Implementierung neuronaler Kunst, muss drei Verlustfunktionen kontrollieren, nämlich:
    • Verlust von Inhalten, nämlich, der Unterschied zwischen den “Inhalt” des resultierenden Bildes und des Basisbildes. Dies geschieht, um sicherzustellen, dass Ihr Modell nicht zu stark vom Basisbild abweicht..
    • Stilverlust, nämlich, der Unterschied zwischen den “Stil” des resultierenden Bildes und des Basisbildes. Um dies zu tun, Sie müssen zuerst die Grammmatrix beider Bilder berechnen und dann ihren Unterschied finden. Die Gram-Matrix ist nichts anderes, als die Kovarianz eines Bildes mit sich selbst zu finden. Dies geschieht, um den Stil im resultierenden Bild beizubehalten.
    • Vollständiger Verlust der Validierung, nämlich, der Unterschied zwischen einem Pixel im resultierenden Bild und seinem Nachbarpixel. Dies geschieht, damit das Bild visuell kohärent bleibt..
  • Was ist eine Optimierungsfunktion? Wenn wir die Verlustfunktion berechnet haben, Wir versuchen, unsere Verluste durch Änderung der Parameter zu minimieren. Die Optimierungsfunktion hilft uns herauszufinden, wie viel Änderung erforderlich ist, um unser Modell besser zu machen “optimiert”. Hier implementieren wir eine Optimierungsmethode namens Broyden-Fletcher-Goldfarb-Shanno-Algorithmus (BFGS). BFGS ist eine Variante des Gradientenabstiegsalgorithmus, bei dem eine Differentiation zweiter Ordnung durchgeführt wird, um das lokale Minimum zu finden. Lesen Dieser Beitrag um eine mathematische Perspektive des Algorithmus zu bekommen.

Jetzt, da wir verstanden haben, was unser Flow sein wird, um eine neuronale Kunst zu bauen, Lass uns runtergehen und anfangen, Sachen zu hacken!

Codieren!

Dieses Diwali war interessant für mich. Ich beschloss, etwas über neuronale Kunst zu recherchieren und wie Indien am Diwali-Tag leuchtet. Ich bin auf dieses Bild gestoßen “Indien in der Diwali-Nacht”. Und ich dachte daran, etwas Ähnliches in die gleiche Richtung zu schaffen. Das zu tun, Wir werden die beiden Bilder unten mit Hilfe der neuronalen Kunst kombinieren.

reference_image-300x250-1827801 base_image-300x289-6507695

Quelle [3]

Also legen wir zuerst den Grundstein.

Paso 0: Auf PC installieren Schwer und seine Abhängigkeiten. Dafür, Wir werden ein Theano-Backend verwenden. Ändere dein Backend, indem du die genannten Schritte befolgst hier. Was ist mehr, Sie sollten auch die richtige Reihenfolge für das Bild festlegen. In der Datei keras.json, wo hat sich das backend geändert, image_dim_ordering durch 'tr' ersetzen. So sollte es also aussehen,

"image_dim_ordering": "th"

Paso 1: Gehen Sie dann in Ihr Arbeitsverzeichnis und konfigurieren Sie Ihre Verzeichnisstruktur wie unten gezeigt

|-- keras_NeuralStyle                 # das ist dein Arbeitsverzeichnis
|   |-- base_image.jpg                # Das ist dein Basisbild
|   |-- referenz_image.jpg           # das ist dein referenzbild

Paso 2: Starten Sie ein Jupyter-Notizbuch in Ihrem Arbeitsverzeichnis, indem Sie eingeben jupyter notebook und implementieren Sie den folgenden Code. Ich werde Ihnen nur eine Schritt-für-Schritt-Übersicht geben, was jeder Block tut.

  • Zuerst, Sie müssen alle Module importieren, die für die Implementierung des Codes erforderlich sind

1-2511823

  • Dann, Legen Sie die Pfade der Bilder fest, auf denen Sie das Projekt erstellen möchten.

2-6414563

  • Definieren Sie die erforderlichen Variablen und geben Sie ihnen Werte wie unten gezeigt. Beachten Sie, dass diese Werte geändert werden können, aber das kann die Ausgabe drastisch verändern. Was ist mehr, Stellen Sie sicher, dass der Wert der Variablen img_nrows mit img_ncols übereinstimmt. Dies ist notwendig, damit die Grammmatrix funktioniert.

3-2951367

  • Dann definieren wir Hilfsfunktionen. Diese sind für die Handhabung der Bildvorverarbeitung zuständig.

4-1823015

  • Eingabeplatzhalter erstellen, um Bilder an das Modell zu übergeben

5-7504910

  • Laden Sie ein vortrainiertes neuronales Netzwerkmodell (wenn du nicht weißt was Vortraining ist, sehen diese Diskussion)

6-8079076

  • Drucken Sie die Modellzusammenfassung aus, um zu sehen, welches Modell es ist

7-8892636

  • Speichern Sie die Namen aller Schichten des neuronalen Netzes als Wörterbuch zusammen mit ihren Ausgaben

8-9153125

  • Wie oben definiert, wir konfigurieren die verlustfunktionen

9-8252856

  • Dann legen wir die Inhalts- und Stilattribute fest …

10-8537718 11-6494202

  • Und stellen Sie die Farbverläufe und die endgültige Ausgabefunktion für die neuronale Kunst ein

12-9883910 13-7323961

  • Wir definieren die Funktionen zur Berechnung von Verlusten und Gradienten

14-3047388 15-2092703

  • Jetzt nehmen wir das Basisbild als Eingabe und iterieren es, um unser endgültiges Bild zu erhalten. Auf meinem lokalen Computer, Es dauert eine Minute, um das Ergebnis in einer Iteration zu erhalten. Nach Ihren Ressourcen (und Geduld), würde höchstens dauern 5 Minuten erhalten das Ergebnis. Sie können auch die Anzahl der Iterationen erhöhen, um das Ergebnis weiter zu optimieren.

16-606928317-4977750

  • Und nach langem warten, wir werden dieses schöne Bild bekommen!

at_iteration_0-4036308

HINWEIS: Die Codedatei kann auf github eingesehen werden hier.

Wohin von hier aus?

Wir haben eine kleine Demonstration einer bedeutenden Entdeckung in der Kunstwelt gesehen. Viele Modifikationen wurden an dieser Methode vorgenommen, um sie ästhetisch ansprechend zu gestalten. Zum Beispiel, gefällt mir sehr diese Umsetzung in denen sie verschiedene Stile genommen und auf verschiedene Regionen angewendet haben.

02270_mask_face-150x150-7370341 02270_mask_face_inv-150x150-8755619 okeffe_red_canna-150x150-1180782okeffe_iris-150x150-767286002270-150x150-9543488

Die ersten beiden Bilder sind die Masken, die helfen zu bestimmen, welcher Teil gestylt werden soll. Die nächsten beiden Bilder stellen die zu verwendenden Stile dar. Das letzte Bild ist das zu gestaltende Basisbild.

Unten ist die Ausgabe, die von neuronaler Kunst erzeugt wird.

02270_Ausgabe-225x300-9317939

Es sieht unglaublich aus, Nein? Ich bin mir sicher, dass, wie ich, Du liebst es auch, neuronale Kunst auszuprobieren. Um Ihnen den Einstieg zu erleichtern, Ich habe die Grundlagen der neuronalen Kunst behandelt und wie Sie Ihr erstes Bild erstellen können. Ich bin sicher, Sie sind begierig darauf, mehr zu entdecken und, Daher, Ich füge einige zusätzliche Ressourcen nur für Sie hinzu.

Zusätzliche Ressourcen

Dies sind einige der besten Ressourcen, die ich zu neuronaler Kunst gefunden habe. Betreten Sie die faszinierende Welt der neuronalen Kunst.

Verweise

Bildquellen

[1] https://www.wikiart.org/en/vincent-van-gogh/the-starry-night-1889
[2] https://arxiv.org/abs/1508.06576
[3] Google

Abschließende Anmerkungen

Ich hoffe, dieser Artikel war inspirierend.. Jetzt ist die Zeit für Sie, es auszuprobieren und selbst Kunst zu machen!! Eine Kunst entsteht, mit der Community teilen. Wenn du irgendeine Frage hast, Ich würde mich freuen, mit Ihnen in den Kommentaren zu interagieren.. Und um Erfahrungen mit neuronalen Netzen zu sammeln, Vergiss nicht, unser Deep-Learning-Praxisproblem auszuprobieren: Identifiziere die Ziffern.

Du kannst deine Fähigkeiten und dein Wissen auf die Probe stellen. Überprüfen Live-Wettbewerbe und konkurrieren Sie mit den besten Datenwissenschaftlern aus der ganzen Welt.

Abonniere unseren Newsletter

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