Erstellen Sie Ihre eigenen "Neural Paintings" mit DeepStyle & Ubuntu

Wussten Sie, dass neuronale Netze auch malen können? Forscher haben ein riesiges neurales Netzwerk trainiert, um Fotos in neurale Bilder zu verwandeln, die aussehen, als wären sie von berühmten Künstlern gemalt worden.

Wussten Sie, dass neuronale Netze auch malen können?  Forscher haben ein riesiges neurales Netzwerk trainiert, um Fotos in neurale Bilder zu verwandeln, die aussehen, als wären sie von berühmten Künstlern gemalt worden.
Werbung

Neuronale Netze können viele Dinge tun. Sie können Bilder interpretieren, unsere Stimmen verstehen 6 Google Now Funktionen, die Ihre Suche verändern werden 6 Google Now Funktionen, die Ihre Suche verändern Sie verwenden Google Now bereits auf Ihrem Android-Gerät, aber Sie erhalten alles, was Ihnen zur Verfügung steht es? Das Wissen um diese kleinen Features kann einen großen Unterschied machen. Mehr lesen und Konversationen übersetzen Funktionsweise des Star Trek-Übersetzers von Skype Funktionsweise des Star Trek-Übersetzers von Skype Die neue Übersetzungsfunktion von Skype bietet seit Star Trek etwas, von dem man träumt - eine mühelose Kommunikation über mehrere Sprachen hinweg. Weiterlesen . Aber wussten Sie, dass sie auch malen können?

Eine kürzlich erschienene Forschungsarbeit (mit dem Titel "Ein neuraler Algorithmus des künstlerischen Stils") hat eine Flut von Online-Diskussionen mit einigen beeindruckenden visuellen Beispielen ausgelöst. Im Wesentlichen behandelt das Papier eine Technik, um ein tiefes neuronales Netzwerk zu trainieren. Microsoft vs Google - Wer führt das Rennen über künstliche Intelligenz? Microsoft vs Google - Wer führt das künstliche Intelligenz Rennen? Künstliche Intelligenz Forscher machen greifbare Fortschritte, und die Menschen beginnen wieder ernsthaft über KI zu sprechen. Die beiden Titanen, die das Rennen über künstliche Intelligenz führen, sind Google und Microsoft. Lesen Sie mehr, um den künstlerischen Stil von der Bildstruktur zu trennen und den Stil eines Bildes mit der Struktur eines anderen zu kombinieren. Das Ergebnis all dessen ist, dass man ein riesiges neurales Netzwerk trainieren kann, um Fotos in "neurale Gemälde" zu verwandeln, die aussehen, als ob sie von berühmten Künstlern gemalt würden - sozusagen "digitale Fälschungen".

Hier sind einige Beispiele aus dem Artikel. Das erste Bild ist das Original. Die späteren Bilder sind die erzeugten Ergebnisse, wobei das Gemälde, aus dem der Stil entnommen wurde, in Miniatur gezeigt wird.

Papierbilder

Die ursprünglichen Forscher haben ihren Code leider nicht veröffentlicht. Einige unerschrockene Programmierer haben jedoch ihre Ergebnisse in den letzten Tagen repliziert, und ihr Code ist verfügbar, Open Source im Internet. Alles, was Sie dazu brauchen, ist eine Linux-Maschine und ein bisschen Geduld.

Heute werde ich Ihnen zeigen, wie das geht, und Ihnen einige meiner eigenen Ergebnisse zeigen. Sie können dies als eine lose Fortsetzung unseres DeepDream-Tutorials betrachten. Erstellen Sie Ihre eigenen künstlichen Fieberträume mit Googles "DeepDream" Erstellen Sie Ihre eigenen künstlichen Fieberträume mit Googles "DeepDream" Haben Sie die trippigen Bilder aus DeepDream gesehen? Willst du dein eigenes machen? Suchen Sie nicht weiter! Weiterlesen . Es ist ein bisschen kompliziert, aber jeder mit einem Linux-Rechner kann mitmachen - keine Programmiererfahrung ist nötig.

Ich habe ein Picasso-Gemälde mit #DeepStyle in ein Picasso-Gemälde verwandelt! pic.twitter.com/cjkEoIhVcF

- James Blaha (@jamesblaha) 5. September 2015

Einrichten der Software

Zunächst einmal, wenn du keine große Eile hast oder keine Linux-Maschine hast, kannst du immer noch mit DeepStyle spielen, indem du den DeepForger Twitter-Bot verwendest (sende ihm ein Bild und einen Stil und er wird schließlich mit den Ergebnissen antworten wollen). Wenn Sie schnell mehr Bilder verarbeiten möchten (und mehr Kontrolle über die Ergebnisse haben), lesen Sie weiter für das Tutorial.

Zunächst einmal, stellen Sie sicher, dass Sie eine aktuelle Kopie von Ubuntu (14.04 ist, was ich verwendet habe). Sie sollten mindestens ein paar zusätzliche GB Festplattenspeicher haben. Weitere Informationen finden Sie in unserem Tutorial zum Thema Dual-Boot Ubuntu neben Windows Tired Of Windows 8? Wie zu Dual Boot Windows & Ubuntu müde von Windows 8? Wie man Dual Boot Windows & Ubuntu erkennt Wenn Sie entdecken, dass Windows 8 ist nicht ganz Ihre Tasse Tee, und Sie haben keinen gangbaren Weg zu downgrade, könnte es eine gute Idee sein, Dual-Boot mit Linux, um eine Alternative zu haben ... Lesen Mehr . Sie werden auch root-Rechte benötigen, also stellen Sie sicher, dass Sie das tun, bevor Sie fortfahren.

Basiswerkzeug

Zu Recht, das ist ein Open-Source-Projekt, also wollen wir Git installiert haben. Git ist der Goldstandard für Software zur Versionskontrolle Was ist Git & Warum sollten Sie Versionskontrolle verwenden Wenn Sie ein Entwickler sind Was ist Git & Warum sollten Sie Versionskontrolle verwenden Wenn Sie ein Entwickler sind Als Webentwickler, viel Zeit Wir arbeiten normalerweise auf lokalen Entwicklungsseiten und laden dann einfach alles hoch, wenn wir fertig sind. Das ist in Ordnung, wenn es nur Sie und die Änderungen sind klein, ... Lesen Sie mehr. So ziemlich jedes quelloffene Open-Source-Projekt wird auf Github gehostet.

Um Git herunterzuladen und zu installieren, öffne einfach ein Terminal und sudo apt-get install git " sudo apt-get install git " ein und stimme den Anforderungen des Installers zu.

Als nächstes: Wir werden einige grundlegende Tools einrichten, die benötigt werden, damit die Software funktioniert.

Installiere zuerst Lua. Dies ist die Sprache, in der das Werkzeug geschrieben ist. Es ist ziemlich einfach. sudo apt-get install lua5.2 einfach " sudo apt-get install lua5.2 " ein und folge dem Installationsvorgang.

Zweitens werden wir Luarocks bekommen. Dies ist das Werkzeug, das die Installation anderer Tools erleichtert (Liebst du Linux nicht?). sudo apt-get install luarocks " sudo apt-get install luarocks " ein und folgen Sie den Installationsschritten.

Drittens installieren wir Luajit. Dies ist ein Just-in-Time-Compiler für Lua, der unser Leben ein wenig vereinfachen wird. sudo apt-get install luajit einfach " sudo apt-get install luajit " ein.

So weit, ist es gut.

Ich bin ein Bot, der Fälschungen von Ihren Fotos im Stil berühmter Maler schafft. Klicken Sie für Anweisungen unten! pic.twitter.com/3MpThDNwRE

- The Deep Forger (@DeepForger) 5. September 2015

Rahmen

Als nächstes installieren wir Torch, ein Framework für wissenschaftliche Datenverarbeitung und maschinelles Lernen, das das Rückgrat der Anwendung bildet. Leider kann dieser nicht mit apt-get (dem Standard-Paketmanager von Ubuntu) installiert werden.

Glücklicherweise haben sie ein Ein-Zeilen-Installationsprogramm, das einige Befehlszauber verwendet. Kehren Sie zu Ihrem Terminal zurück und geben Sie " curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash ".

Wenn du fertig bist, luajit -ltorch " luajit -ltorch ". Dadurch wird die Brennerschnittstelle angezeigt und überprüft, ob alles korrekt installiert wurde.

Verlasse das.

Jetzt werden wir loadcaffe installieren - ein neuronales Netzwerk-spezifisches Paket. Installieren Sie die einzige Abhängigkeit, indem Sie " sudo apt-get install libprotobuf-dev protobuf-compiler " sudo apt-get install libprotobuf-dev protobuf-compiler . Dann können Sie das Paket selbst mit " sudo luarocks install loadcaffe" .

@John Nicholas Ihre Fälschung Zusammenbruch, avec Stil von der Schule von Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7. September 2015

Abhängigkeiten doppelt prüfen

Schließlich werden wir präventiv einige Dinge aktualisieren, nur um sicherzustellen, dass alles reibungslos abläuft.

sudo luarocks install image " sudo luarocks install image " ein, um sicherzustellen, dass Ihr sudo luarocks install image auf dem neuesten Stand ist. Als nächstes geben Sie " luarocks install nn " ein, was dasselbe für Ihr 'nn' Paket macht.

Deep Style installieren

In Ordung! An diesem Punkt sind wir bereit, die Software selbst zu installieren. Erstellen Sie aus Gründen der Sauberkeit einen neuen Ordner in Ihrem Home-Verzeichnis ('mkdir DeepStyle'). Dann geben Sie es mit " cd Deepstyle " ein. sudo git clone https://github.com/jcjohnson/neural-style.git". nun " sudo git clone https://github.com/jcjohnson/neural-style.git".

Als nächstes müssen wir das Modell herunterladen. Machen Sie eine Tasse Kaffee oder etwas, das wird eine Weile dauern. Zurück zum Terminal und sudo sh models/download_models.sh " sudo sh models/download_models.sh ". Das wird einen langen, aufwendigen Download-Prozess starten. Wenn es aufgrund von Berechtigungsfehlern fehlschlägt, versuchen Sie, mit chmod Lese- und Schreibberechtigungen für die relevanten Ordner zu erteilen.

@ 44thats44oars hat diese #ProceduralArt #NeuralArt in Auftrag gegeben. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger) 6. September 2015

Verwenden von Deep Style

Okay, wir sind gut zu gehen. Die Verwendung der Software ist ziemlich einfach.

Stellen Sie sicher, dass Sie sich im DeepStyle / Neural-Style-Verzeichnis im Terminal befinden. Jetzt wirst du einige Bilder brauchen, um daran zu arbeiten. Laden Sie sie aus dem Internet (oder was auch immer) herunter, und kopieren Sie sie dann mit dem Dateibrowser in den DeepStyle / neural-style-Ordner .

Jetzt können Sie die Befehlszeile verwenden, um einzelne Bilder zu verarbeiten. Das Format ist ziemlich einfach:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1

(Natürlich müssen Sie die Chunks in ALL CAPS durch die Namen Ihrer Dateien ersetzen).

Dadurch wird das neuronale Netzwerk gestartet. Es läuft ungefähr eine Stunde und spuckt alle paar Minuten neue, teilweise konvergente Bilder aus, bis es fertig ist. Das -gpu -1 dass versucht wird, auf Ihre GPU zuzugreifen.

Nach einigen Stunden des Ausprobierens (und dem mehrfachem Bricking des Betriebssystems) konnte ich Ubuntu und CUDA nicht dazu bringen, mit meiner GPU (einer NVIDIA GTX 970) gut zu spielen. Wenn Sie damit mehr Glück haben, sollten Sie CUDA und cudann.torch installieren (weitere Informationen finden Sie im github repo). Wenn nicht, ist das in Ordnung - es funktioniert immer noch mit Ihrer CPU; es wird nur ein bisschen langsamer sein.

Wenn Sie Probleme haben, all dies funktioniert, fragen Sie mich einfach in den Kommentaren, und ich werde mein Bestes tun, um Ihnen zu helfen.

Ergebnisse

Hier sind einige Bilder, die ich in den letzten Tagen erstellt habe. Die Ergebnisse sind gemischt, aber viele von ihnen sind ziemlich beeindruckend.

Zack-Paden-Komposit

Klicken Sie hier für die volle Auflösung.

Dieser ist von meinem Freund Zack auf einer Wanderung nach Yellowstone. Der Stil stammt von einem abstrakten Gemälde von Theresa Paden. Ich war neugierig zu sehen, wie das System mit einem Bild ohne Struktur funktionieren würde. Die Ergebnisse sind ziemlich ordentlich, und Sie können definitiv die Ähnlichkeiten mit dem Stilbild sehen.

Jerseycity-Demuth-Verbund

Klicken Sie hier für die volle Auflösung.

Dieser stammt von einem meiner Lieblingskünstler, Charles Demuth (siehe: Weihrauch einer neuen Kirche und Abbildung 5 in Gold). Interessanterweise ist Demuth eine der primären visuellen Inspirationen für die Kunst von Team Fortress 2 Team Fortress 2: Das Free-to-Play Steam-Spiel Sie müssen spielen Team Fortress 2: Das Free-to-Play Steam-Spiel, das Sie spielen müssen, ist Team Fortress 2 nur ein kurzes Spiel, um Grafiken und Leistung zu testen, oder ist es ein Spiel, das es wert ist, wiederholt gespielt zu werden? Lesen Sie mehr, wie Sie aus dem Stilbild sehen können.

Ich habe ihm ein Bild von Jersey City gegeben, das ich auf Wikimedia gefunden habe. Die Ergebnisse sind ... ziemlich gut. Es nahm nicht an der Eckigkeit von Demuths Stil teil, aber es nahm sicherlich das weiche, strukturierte Aussehen und die Farbpalette auf.

Blumen-Okeefe-Composite

Klicken Sie hier für die volle Auflösung.

Dieses ist ein Versuch, einen synthetischen O'Keeffe zu erzeugen, indem ich ein ziemlich profanes Bild einiger Blumen benutze, die ich fand. Die Ergebnisse sind, ehrlich gesagt, spektakulär. Ästhetisch ist dies eines meiner Lieblingsergebnisse. Der Reichtum von O'Keeffes Farben und Formen kommt klar zum Ausdruck. Die geschichteten Ränder der Blütenblätter werden zu den Kanten der Blätter im Hintergrund. Die Blumen selbst lösen sich in Farben auf und werden fast abstrakt.

Es wäre ein gutes Gemälde, wenn ein Mensch es tun würde. Ich bin sehr versucht, ein paar Tage damit zu verbringen, eine höher aufgelöste Version dieses Bildes zu rendern und es gerahmt zu halten.

Shannon-Picasso-Komposit

Klicken Sie hier für die volle Auflösung.

Hier ist meine Freundin Shannon in ihrem Halloween-Kostüm, mit einem Picasso-Druck. Interessanterweise wählte das Gerät den unteren Teil ihres Gesichts weiß (ähnlich dem Farblayout des Picasso-Stücks). Ich bin mir nicht sicher, ob das ein Zufall war oder nicht, aber die Ergebnisse sind beeindruckend. Es scheint auch Shannons Haare auf der linken Seite richtig erkannt zu haben und zeichnete sie mit den Farben und Linien der Haare im Stilbild neu. Dito für ihren Hut.

Dies ist einer der Bereiche, in denen die Grenzen der Technik deutlich werden. Wenn Picasso tatsächlich Shannon malte, hätte er die Struktur ihres Gesichts weggeworfen und die Gesichtszüge verzerrt, um den gewünschten Effekt zu erzielen. Dieses System versteht solche hochstufigen Konzepte nicht und kann nur oberflächliche Aspekte des Stils imitieren, wie die dunklen, eckigen Linien und die Farbpalette.

Eiffel-Vangogh-Komposit

Klicken Sie hier für die volle Auflösung.

Ziemlich geradlinig: ein Bild des Eiffelturms und Van Goghs andere Sternennacht. Es macht einen guten Job, die Wolke in einem Van-Gogh-ey-Stil zu rendern, trotz der Abwesenheit von Wolken im Originalbild. Es macht auch einen guten Job, die Szene von Tag zu Nacht zu übersetzen.

Ich war nicht sicher, warum es sich entschied, die Spitze des Fiffelturms als eine Feuersäule darzustellen. Es sieht cool aus, ist aber aus den Eingabedaten nicht zu rechtfertigen. Dann erkannte ich, dass das Stilbild dreizehn lange, vertikale gelbe Streifen in Form von Reflexionen im Wasser hat. Das ist ein ziemlich großer Cluster, wenn man so wenig Trainingsdaten hat. Das arme Ding hat wahrscheinlich gelernt, dass jede kontrastreiche vertikale Kante eine dieser Reflexionen sein muss. Sie können mehr äußere vertikale Streifen schwach in den Wolken sehen.

Nebel-Vangogh-Komposit

Klicken Sie hier für die volle Auflösung.

Das gleiche Gemälde von Van Gogh, aber dieses Mal habe ich ihm einige echte Sterne zum Bemalen gegeben. In diesem Fall sind die Säulen Teil des Eagle-Nebels. Ich mag die Ergebnisse - obwohl, wieder einmal, kann man seine Obsession mit gelben Streifen sehen. Jeder vertikale Teil der Säule wird zu einer hellen, wackeligen gelben Linie. Es ist auch deutlich verärgert über das Grün, das in den Trainingsdaten nicht auftrat, und tut sein Bestes, um es zugunsten von Blau und Schwarz loszuwerden.

Technologie

Einige Ergebnisse sind äußerst überzeugend, obwohl die Technik klare Einschränkungen aufweist. Einige Bilder haben eine lausige Komposition, und das System hat Schwierigkeiten mit abstrakteren Künstlern wie Picasso - der bekannt dafür war, sein Thema zu verzerren und seine Züge zu streuen. Der Algorithmus nimmt seine Winkellinien und seine Farben auf, ist aber immer noch ein Slave der Pixelwerte des Bildes. Es hat nicht das Verständnis, dass Sie zu weit vom Quellmaterial abweichen müssen.

Was mich an all dem begeistert, ist, dass ich diese Beschränkungen nicht für fundamental halte.

Der Ansatz, der hier verwendet wird - ein Netzwerk auf einem Bild trainieren und es verwenden, um ein anderes zu konstruieren - ist grundsätzlich eine Art Hack. Es gibt dem Netzwerk sehr wenig Daten zum Arbeiten. Eine erweiterte Version dieser Anwendung würde ein Netzwerk verwenden, das Informationen zu vielen Bildern und vielleicht sogar echten Bildern enthält, um dem Kontext, den es zu "malen" versucht, viel Kontext zu geben.

Ein tiefes Verständnis für Stil kann nur in einem breiteren Kontext existieren. Sie können es nicht von einem einzelnen Bild ableiten. Durch die Entwicklung einer Architektur, die dem System Zugang zu breiteren Daten bietet, kann es möglicherweise ein "menschenähnlicheres" Verständnis des Bildes und die Art und Weise, wie Künstler verschiedene Elemente der realen Welt repräsentieren, ableiten. Ein solches Netzwerk könnte Bilder erzeugen, die abstrakter sind und eine bessere Zusammensetzung haben. Solche Algorithmen würden aufhören, ein cooles Spielzeug (wie dieses) zu sein und ein Weg, um tatsächliche, ursprüngliche Kunst zu produzieren.

Was in gewisser Weise ein sehr eigentümlicher Gedanke ist.

Eigene Bilder machen

Wenn Sie ein enttäuschendes Ergebnis erzielen, können Sie etwas mit den Optionen experimentieren, um überzeugendere Ergebnisse zu erzielen. Die vollständige Liste ist auf dem Github. Die wichtigsten sind

  • -content_weight -value Wie viel soll der Inhaltsrekonstruktionsterm gewichtet werden ? Standard ist 5e0.
  • -style_weight -value: Wie viel Gewicht muss dem Style-Bild gegeben werden ? Standard ist 1e2.
  • -style_scale-value: Wie groß sollte das System die Bild-Patches analysieren (Größer wird abstrakter). Standard ist 1.0.

Sobald Sie alles zu Ihrer Zufriedenheit bearbeiten, posten Sie bitte Ihre interessantesten Bilder in den Kommentaren. Ich bin wirklich interessiert zu sehen, was euch kommt.

Bildnachweis: menschlicher Hirnmaler über Shutterstock

In this article