Ist es möglich, ein neuronales Netzwerk zu trainieren, um Bilder in einem bestimmten Stil zu zeichnen?


10

Ist es möglich, ein neuronales Netzwerk zu trainieren, um Bilder in einem bestimmten Stil zu zeichnen? (Es nimmt also ein Bild auf und zeichnet es in einem Stil neu, für den es trainiert wurde.)

Gibt es eine zugelassene Technologie für so etwas? Ich kenne den DeepArt-Algorithmus. Es ist gut, das Hauptbild mit einem bestimmten Muster zu füllen (z. B. ein Vangoghify-Bild), aber ich suche nach etwas anderem - zum Beispiel nach einem Cartoon in einem bestimmten Stil als dem Eingabeporträt.


3
Ein Hindernis für das Training eines neuronalen Netzes von Foto zu Cartoon kann das Finden eines Trainingsdatensatzes sein. Es scheint, als müsste der Datensatz Fotos und Cartoons enthalten, die Menschen basierend auf diesen Fotos gezeichnet haben. Mir sind solche Datensätze nicht bekannt.
Tanner Swett

@TannerSwett Wie denkst du, wie viele Bilder für eine solche Ausbildung notwendig sind?
Zavg

Ich bin kein Experte, also kann ich nur eine wilde Vermutung anstellen. Ich denke, Sie würden mindestens tausend Bilder benötigen. Sie brauchen vielleicht viel mehr als das. Ich schlage übrigens vor, sich dieses Tool anzusehen : github.com/hardmaru/sketch-rnn Dieses Tool wurde verwendet, um Imitationen chinesischer Schriftzeichen zu generieren. Vielleicht könnte ein ähnliches Tool Nachahmungen von Cartoons erzeugen.
Tanner Swett

Ich bin vielleicht etwas veraltet, da mein NN-Training vor einiger Zeit stattgefunden hat, aber wenn Sie daran denken, nur ein Netzwerk mit ein paar tausend Bildern zu trainieren und zu erwarten, dass es Bilder in einem Stil rendern kann, den Sie möglicherweise zu weit erreichen - Wenn Sie denken, dass dies ein gutes Starterprojekt ist, dann tun Sie es nicht. Um das zu erreichen, was Sie beschreiben, wäre viel manuelles Fummeln erforderlich. Denken Sie an das Wissen, das zur Interpretation eines Bildes erforderlich ist, und nicht nur an die Musterübereinstimmung.
Peter Scott

Antworten:


12

Es gibt ein relevantes Papier: LA Gatus, AS Ecker, M. Bethge, 2015, Ein neuronaler Algorithmus des künstlerischen Stils . Zitat aus dem Abstract,

Hier stellen wir ein künstliches System vor, das auf einem Deep Neural Network basiert und künstlerische Bilder von hoher Wahrnehmungsqualität erzeugt. 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.

Hier ist Abbildung 2 aus diesem Artikel:

Geben Sie hier die Bildbeschreibung ein

Es gibt hier auch eine sehr beliebte Open-Source-Implementierung basierend auf Fackel , die recht einfach zu bedienen ist. Weitere Beispiele finden Sie unter dem Link.

Beachten Sie, dass die Berechnungen sehr umfangreich sind und daher die Verarbeitung einzelner Bilder Gegenstand dieser Arbeit ist.

Bearbeiten: Nachdem Sie Ihr erwähntes DeepArt-Projekt überprüft haben, scheint es, dass es dieselben Techniken verwendet. Ich bin mir nicht sicher, warum Sie das nicht wollen, weil das Konzept der Stilübertragung so allgemein wie möglich ist.


4
Cartoons übertreiben und vereinfachen die Merkmale von allem, was sie darstellen, und erzeugen Formen, die den Formen auf einem Foto sehr unähnlich sind. Ich glaube nicht, dass bestehende neuronale Netze mit Stilübertragung dies jemals getan haben.
Tanner Swett

@TannerSwett Sehen Sie sich die Beispiele hier an: imgur.com/a/ue6ap . Einige von ihnen sind ziemlich karikaturistisch.
Amöbe sagt Reinstate Monica

@amoeba Sie sehen zwar karikaturistisch aus, aber keiner von ihnen hat die verzerrten Proportionen, die die meisten echten Cartoons haben.
Tanner Swett

Wir sprechen hier von Style-Transfer. Alle Beispiele verwenden einen von vornherein gewählten Stil, bei dem keiner von ihnen karikaturistisch war (warum sollte die Ausgabe karikaturistisch aussehen, wenn sie auf Van Gogh gelernt wurde). Vielleicht könnten Sie einfach das Open-Source-Projekt zum Laufen bringen (ich hatte in der Vergangenheit keine Probleme) und es mit Cartoon-Input versuchen.
Sascha

7

Dies ist ein ziemlich schwer zu lösendes Problem. Sie können hier einige Beispiele sehen, wie ein Cartoon-Stil, z. B. von Simpson, auf ein Bild angewendet wurde.

Ein Cartoon-Bild hat im Allgemeinen nicht die Struktur, die diesen künstlerischen Effekt verleiht . Der einfachste Weg, dies auf irgendeine Weise anzuwenden, besteht darin, einen Face-Tracker zu haben und dann zwei Gesichter auszurichten, z. B. ein Cartoon-Gesicht und ein menschliches Gesicht, und dies dann anzuwenden. Das könnte dich irgendwohin bringen, aber es könnte auch komisch aussehen. Anschließend können Sie Orientierungspunkte in den Bildern mit Anmerkungen versehen, um weitere Informationen zu erhalten und zuvor eine nicht starre Registrierung durchzuführen. Dies ist immer noch eine Shitmix-Lösung, aber die nächste, die ich mir vorstellen kann, könnte für Gesichter funktionieren.

Bearbeiten:

Der Kommentar von @TannerSwett fügt etwas hinzu. Es ist möglich, auf die Webseiten einiger Künstler zu gehen und zu versuchen, ihre Illustrationen zu finden und "ihren" Stil zu lernen. Ich denke immer noch nicht, dass dies zufriedenstellend ist oder genügend Daten liefert, aber das wäre eine interessante Sache zum Testen. Derzeit gibt es keine allgemein verfügbare Lösung, aber ich denke, das sind definitiv einige Leute, die daran arbeiten, und wir werden bald bessere Ergebnisse sehen.

Ich denke, dass der Weg vielleicht nicht der künstlerische Ansatz des neuronalen Netzwerks ist. Vielleicht ist es besser, ein Netzwerk zu haben, das Objekte in einem Bild klassifizieren und dann die Entsprechungen zwischen den Objekten und ihren Comic-Gegenstücken lernen und dann die Ergebnisse auf sinnvolle Weise mischen kann.


1
Das Simpson-Beispiel sieht für mich ziemlich fantastisch aus @Gumeo
FabricioG

1

Es sollte nicht zu kompliziert sein. Ich habe den erwähnten Artikel nicht gelesen, hier ist mein Rezept:

Variations-Auto-Encoder

Online-Demo mit verwandelnden Gesichtern: http://vdumoulin.github.io/morphing_faces/online_demo.html

und https://jmetzen.github.io/2015-11-27/vae.html für den Codez.

Grundsätzlich gibt Ihnen dies eine Möglichkeit, den "Stil" in Ihrem Fall zu parametrisieren. Nehmen wir beispielsweise an, wie breit oder unscharf der Pinselstrich sein soll. Dinge, die von dem bestimmten Stil abhängen, den Sie emulieren möchten.

Im obigen Beispiel sind verschiedene "verwandelte" oder "imaginierte" Gesichter eine Funktion der Parameter im latenten Raum. Im Bild unten erhalten Sie dies, wenn Sie Dinge auf der Code-Ebene ändern.

Hier ist die Grundidee: Originalbild links, stilisierte Version desselben Bildes rechts:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie theoretisch ein solches Modell auf ein normales Bild und ein stilisiertes Bild als Ziel trainieren und Windungen hinzufügen würden, sollten Sie in der Lage sein, die Kernelfilter zu lernen, die der Art der vom Künstler verwendeten "Pinselstriche" entsprechen .

Das bedeutet natürlich, dass Sie einige Beispiele für Bilder sowohl in Originalversion als auch in stilisierter Version benötigen. Ein solcher Datensatz wäre schön, der Community etwas zu spenden - wenn Sie dies tun, wäre ich sehr gespannt auf diese Art von Arbeit.

Viel Glück!

Der Wiki-Artikel über Auto-Encoder wäre ein guter Ausgangspunkt: https://en.wikipedia.org/wiki/Autoencoder

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.