Frage

Ich bin sicher, viele Menschen haben bereits gesehen, Demos von genetischen Algorithmen ein Bild zu erzeugen, das ein Beispielbild übereinstimmt. Sie beginnen mit Lärm, und allmählich kommt es das Zielbild immer enger ähneln, bis ein mehr oder weniger genaues Duplikat haben.

Alle Beispiele die ich gesehen habe, verwendet jedoch einen ziemlich einfachen Pixel-für-Pixel-Vergleich, was zu einem ziemlich vorhersehbar ‚Fade in‘ des endgültigen Bildes. Was ich suche ist etwas mehr Roman. Eine Fitness-Maßnahme, die näher kommt, was wir sehen, wie ‚ähnlich‘ als der naive Ansatz

Ich habe nicht ein bestimmtes Ergebnis im Sinne - ich bin nur die Suche nach etwas mehr ‚interessant‘ als die Standardeinstellung. Vorschläge?

War es hilfreich?

Lösung

Ich nehme an, Sie sprechen über etwas wie Roger Alsing Programm .

implementiert ich eine Version davon, so dass ich interessiere mich auch für alternative Fitness-Funktionen, obwohl ich es aus der Sicht kommen bin Leistung zu verbessern, anstatt Ästhetik. Ich erwarte, wird es immer ein Element von „Fade-in“ auf Grund der Natur des evolutionären Prozesses (obwohl die evolutionäre Operatoren Tweaking beeinflussen können, wie dies aussieht).

Ein Pixel-für-Pixel-Vergleich kann für alles andere als kleine Bilder teuer sein. Zum Beispiel kann das 200x200 Pixel Bild, das ich verwende, hat 40.000 Pixel. Mit drei Werten pro Pixel (R, G und B), ist, dass 120.000 Werte, die in die Fitness-Berechnung für ein einzelnes Bild eingearbeitet werden müssen. In meiner Implementierung maßstabs ich das Bild nach unten, bevor der Vergleich zu tun, so dass es weniger Pixel sind. Der Kompromiss ist etwas Genauigkeit des freigesetzten Bildes reduziert.

Bei alternativen Fitness-Funktionen untersuchen stieß ich auf einige Vorschläge die YUV-Farbraum zu verwenden, anstatt da dies von RGB in engerem Zusammenhang mit dem menschlichen Wahrnehmung ausgerichtet ist.

Eine weitere Idee, die ich hatte, war nur eine zufällig ausgewählte Stichprobe von Pixeln zu vergleichen. Ich bin mir nicht sicher, wie gut dies, ohne es zu versuchen, funktionieren würde. Da die verglichenen Pixel für jede Auswertung wären anders wäre es, die Wirkung des in der Bevölkerung der Aufrechterhaltung Vielfalt hat.

Darüber hinaus sind Sie in den Bereichen Computer Vision. Ich gehe davon aus, dass diese Techniken, die auf Merkmalsextraktion verlassen, wären teurer pro Bild, aber sie können schneller Gesamt, wenn sie in weniger Generationen führen erforderlich sind um ein akzeptables Ergebnis zu erzielen. Sie könnten die PerceptualDiff Bibliothek untersuchen möchten. Auch diese Seite zeigt einige Java Code, der verwendet werden kann, Bilder für Ähnlichkeit auf Merkmale miteinander verglichen werden, anstatt Pixel.

Andere Tipps

  

Ein Eignungsmaß, der näher kommt zu dem, was wir sehen, wie ‚ähnlich‘ als der naive Ansatz.

Die Umsetzung einer solchen Maßnahme in der Software ist auf jeden Fall nicht trivial. Google ‚Das menschliche Auge Modell‘, ‚Wahrnehmungsfehler metric‘ für einige Ansatzpunkte. Sie können das Problem umgehen -. Nur die Kandidatenbilder für die Auswahl der besten an einen Menschen vorstellen, obwohl es ein bisschen langweilig für den Menschen sein könnte

Ich habe eine solche Demo nicht gesehen (vielleicht könnten Sie verknüpfen eins). Aber ein paar Proto-Ideen aus Ihrem desription die ausgelöst werden können interessant:

  • Drei verschiedene Algorithmen parallel laufen, vielleicht RGB oder HSV.
  • Verschieben, Drehen oder auf andere Weise das Zielbild während des Laufs leicht ändern.
  • Fitness basierend auf Kontrast / Wertdifferenzen zwischen den Pixeln, aber ohne die tatsächliche Farbe zu kennen.
  • ... dann "prime" ein einzelnes Pixel mit der richtigen Farbe?

würde ich mit anderen Mitwirkenden einig, dass dies nicht trivial. Ich würde auch hinzufügen, dass es sehr wertvoll im Handel wäre -. Zum Beispiel, die Unternehmen wollen ihre visuellen IP zu schützen wären sehr glücklich, in der Lage zu sein, das Internet zu durchforsten Suche nach ähnlichen Bildern zu ihren Logos

Mein naiver Ansatz dazu wäre ein Mustererkennungssystem auf einer Anzahl von Bildern zu trainieren, die jeweils von dem Zielbild erzeugt mit einer oder mehrer Transformationen angewandt werden: z.B. ein paar Grad in beide Richtungen gedreht werden; Übersetzung wenige Pixel oder so; verschiedene Skalen des gleichen Bildes; verschiedene Unschärfen und Effekte (Faltungsmasken sind gut hier). Ich würde auch eine gewisse Zufälligkeit Rauschen zu dem jedes der Bilder ein. Je mehr Samples, desto besser.

Das Training kann alle off-line durchgeführt werden, so sollte kein Problem mit Laufzeitleistung führen.

Wenn Sie eine Mustererkennungs trainiert haben, können Sie es jederzeit bei den GA Bevölkerungs Bilder zeigen können, und einige skalare Punktzahl aus den Erkenner bekommen.

Persönlich Ich mag Radiale Basis Networks . Schnell zu trainieren. Ich würde mit viel zu vielen Eingängen starten, und whittle sie mit Hauptkomponentenanalyse (IIRC) nach unten. Die Ausgänge können nur similiarity Maßnahme und Unähnlichkeit Maßnahme.

Eine letzte Sache; was Ansatz, den Sie gehen für - könnte man darüber bloggen, veröffentlichen die Demo, was auch immer; lassen Sie uns wissen, wie Sie bekam auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top