Ist Reinforcement Learning die richtige Wahl für das Malen wie Bob Ross?


7

Mein Arbeitsplatz hat eine zweiwöchige Code-Herausforderung, bei der ein Algorithmus erstellt wird, mit dem unter bestimmten Einschränkungen 100 Bob Ross-Musterbilder so genau wie möglich reproduziert werden können:

  • "Gemälde" werden als JSON-Datei eingereicht, die eine Hintergrundfarbe und eine Reihe von "Pinselstrichen" enthält.
  • Pinselstriche haben einen Startpunkt, einen Endpunkt, einen Radius und eine Farbe.
  • Es gibt eine Grenze von 500 Strichen pro Gemälde.
  • Alle 100 Referenzbilder haben genau die gleiche Größe und das gleiche Seitenverhältnis: 450x337.

Beispiel Bob Ross Original.

Der Server "malt" jede Einreichung und führt dann einen Diff pro Pixel mit dem Referenzbild durch. Jedes Pixel in dem eingereichten Gemälde wird in einem skalaren Bereich von 0 bis 1 bewertet, basierend darauf, wie ähnlich es dem Wert des Quellpixels ist, und die Bewertung für das Gemälde ist ein Durchschnitt aller Pixelbewertungen. Die Teilnehmer des Wettbewerbs haben Bibliotheken zum Malen und Bewerten von Bildern veröffentlicht, die unter MacOS / Linux über die Befehlszeile ausgeführt werden können.

Ich bin der Meinung, dass dieses Problem für ML zugänglich sein sollte, da wir einen Mechanismus für die feinkörnige Bewertung jedes Versuchs haben, den der Algorithmus versucht. Das Erstellen und Bewerten eines Gemäldes dauert nur etwa 200 ms. Leider bin ich meistens nur ein ML-Fan (ich höre viele Podcasts) und weiß nicht, wie ich das Problem modellieren soll.

Es würde ewig dauern, bis der Algorithmus 500 völlig zufällige Striche macht und dann die Ausgabe bewertet, um zu etwas Nützlichem zu konvergieren. Ich dachte darüber nach, den Farbraum der Striche auf einen Satz der 64 häufigsten Farben in jedem Bild zu beschränken (indem ich ein Histogramm ausführe, bevor ich mit dem Malen beginne) und auch die Auswahl der Pinselgröße des Algorithmus zu begrenzen.

Für die Aufzeichnung erhielt ich eine 65% ige Punktzahl, wenn ich einfach ein Bild einreichte, das ein festes Feld mit der häufigsten Farbe ist. Die derzeit erfolgreichen Algorithmen wandeln die Bilder meist nur in Gitter um und setzen einen Punkt der durchschnittlichen Farbe in jedem Sektor über jeden.

Antworten:


5

Ich würde genetische Algorithmen (GA) oder andere globale Optimierer für diese Suche vorschlagen, da Ihre sequentielle Bewertung, wenn Sie das Bild in komplexere Zustände "einbauen", wahrscheinlich nicht der beste Leitfaden ist.

Es gibt einige Beispiele für ähnliche Rätsel, z. B. das Erstellen von Mona Lisa aus Kreisen , und hier ist ein neueres Beispiel für dasselbe Problem mit Codebeispielen .

Ein GA-Ansatz würde im Wesentlichen aus einer Population von 100 zufällig generierten Strichsätzen bestehen, die Sie bewerten und die besten Optionen bewerten. Dann wählen Sie aus der Grundgesamtheit aus und bevorzugen Lösungen mit der besten Punktzahl (dafür gibt es viele Optionen, z. B. nur die Auswahl aus der obersten Fraktion oder die Verwendung einer verzerrten Verteilung, die die oberste bevorzugt). Erstellen Sie Lösungspaare und "züchten" Sie sie, indem Sie einige Teile vom ersten und einige vom zweiten Elternteil übernehmen. Fügen Sie nur ein wenig zufälliges Rauschen als "Mutation" hinzu. Wenn Sie dies genug getan haben, um eine zweite Generation zu erstellen, wiederholen Sie den gesamten Vorgang. Es gibt viele Variationen.

RL sollte auch funktionieren, aber Sie haben möglicherweise eine schwierige Aufgabe, eine Richtlinie oder Wertefunktion zu erstellen, mit der Sie die Zuordnung von Strichaktionen und dem aktuellen Status zu der eventuellen Richtlinie oder dem Wert lernen können. Aus theoretischer Sicht ist dies jedoch durchaus machbar. Der Status ist das aktuelle Bild. Die Aktion ist eine Wahl des nächsten Strichs. Die Belohnung ist die Verbesserung der Punktzahl und sollte wahrscheinlich bei jeder Aktion bewertet werden (könnte aber alle 10, alle 50 oder sogar erst am Ende erfolgen - längere Verzögerungen fordern den RL mehr heraus, ermöglichen jedoch möglicherweise eine schnellere Iteration). Die meisten RL-Algorithmen, wie z. B. Q-Learning, sollten in der Lage sein, "Sackgassen" -Ergebnisse zu vermeiden, bei denen frühe gute Ergebnisse falsche Leads sind und überarbeitet werden müssen.

Ich weiß es nicht, wäre aber sehr interessiert zu sehen, ob ein GA oder RL dieses Problem effizienter löst. . . Mein Bauchgefühl ist, GA wäre der richtige Weg.


1
Dies war mein erster Gedanke beim Lesen der Problembeschreibung ... vielleicht, weil ich kürzlich diesen Vortrag gesehen habe: infoq.com/presentations/genetic-algorithms (50 Minuten), wo dies eines seiner drei GA-Beispiele ist. github.com/ckoster22/geneticAlgoKcdc2017 hat den Typescript-Code dafür.
Darren Cook

1

Ich denke, Ihre Skepsis gegenüber RL für diese Aufgabe ist begründet. Es wurden jedoch einige Untersuchungen zum Aufbau neuronaler Netze durchgeführt, um den Stil von Malern zu reproduzieren. Diese Arbeit nutzt die Kraft von Faltungs-Neuronalen Netzen.

" Ein neuronaler Algorithmus des künstlerischen Stils " Leon A. Gatys, Alexander S. Ecker, Matthias Bethge

In der bildenden Kunst, insbesondere in der Malerei, beherrschen Menschen die Fähigkeit, einzigartige visuelle Erlebnisse zu schaffen, indem sie ein komplexes Zusammenspiel zwischen Inhalt und Stil eines Bildes komponieren. Bisher ist die algorithmische Grundlage dieses Prozesses unbekannt und es gibt kein künstliches System mit ähnlichen Fähigkeiten. In anderen Schlüsselbereichen der visuellen Wahrnehmung wie der Objekt- und Gesichtserkennung in der Nähe des Menschen wurde kürzlich eine Klasse von biologisch inspirierten Visionsmodellen namens Deep Neural Networks demonstriert.1, 2 Hier stellen wir ein künstliches System vor, das auf einem Deep Neural Network basiert das schafft künstlerische Bilder von hoher Wahrnehmungsqualität. Das System verwendet neuronale Darstellungen, um Inhalt und Stil beliebiger Bilder zu trennen und neu zu kombinieren, und stellt einen neuronalen Algorithmus für die Erstellung künstlerischer Bilder bereit. Außerdem,


1
Ich bin nicht wirklich auf der Suche nach Stilübertragung ... eher im Sinne von "Geben Sie bei einigen strengen Verhaltensbeschränkungen Ihr Bestes, um eine willkürliche Eingabe wiederherzustellen".
Joshua Sullivan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.